0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

curl --compressed -o- -L https://yarnpkg.com/install.sh | bash でyarn をupdate したら動かなくなった話

Last updated at Posted at 2020-10-12

前書き

 先日1yarn でパッケージをインストールした時に、「最新のyarnはv1.xx.xxだけど、あなたのyarnはv1.xx.xyですよ」的な感じのメッセージと共に、↓のコマンドが出てきました。

> curl --compressed -o- -L https://yarnpkg.com/install.sh | bash

どうやら、これを実行すればyarnを最新化できるとの事。最新化と言ってもパッチレベルが1上がるだけで、正直面倒くさいとも思いました。しかし親切にもコマンドまで出してくれてupdateよろしくと言われた手前、無視するのは人道に反します(言い過ぎ)。一応やっておくかと実行して。。。

 そして私のyarnは逝ってしまったのでした2:innocent:
 

なにが起きたのか

 一応環境を記載しておくと

 OS : Windows10 Home
 Nodist : 0.9.1
 Node : v11.13.0
 npm : v6.14.1
 yarn : v1.22.4

な感じの一般的な(?)Windows環境です。

 事象としては、gitbashでyarnと打った後に全く入力を受付ないんですよね。
コマンドプロンプトやpowershellだと普通に動く模様。

bash
$ yarn -v
   # 何も出ず、コマンドラインが返る
$  # ← どんなにキーを叩いても何も出ない

ctrl + c は受け付けているので、それの直後にctrl + dでセッションを切って再度起動すれば普通に入力できるようになります。

どうやって直したか

 前回修正した時のメモが残っており、それによるとyarn関連のファイル・ディレクトリを一旦全部削除して、入れ直したみたいです。今回も同じ手順を踏んでみます。

yarnを全削除

 ひとまず、今の時点で入っているyarn関連のファイル・ディレクトリを全て削除します。ここで消し忘れがあると、再度yarnを入れても動かなくなりました。

 消したのは以下
C:\Program Files (x86)\Nodist\bin\yarn* にマッチする全ファイル
C:\Program Files (x86)\Nodist\bin\node_modules\yarn ディレクトリ
C:\Users\username\AppData\Local\Yarn ディレクトリ
C:\Users\poket\.yarn\ ディレクトリ
C:\Users\poket\.yarnrc ファイル

3つ目はただのキャッシュで削除不要なのかもしれませんが、とりあえず消す事にします(時間がかかるから、消さなくて良いならそうしたい)。

追記(2020/10/18)
4, 5つ目を消さないと他3つを削除しても上手くいかないことから、ここが解決の糸口になりそうです:exclamation:

削除できたか(=yarnコマンドが使用不可になっているか)は、powershellとbashで確認します。

powershell
$ yarn -v
yarn : 用語 'yarn' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません
。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくださ
い。
発生場所 :1 文字:1
+ yarn -v
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (yarn:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
bash
$ yarn -v
bash: yarn: command not found

その後、npmでyarnをインストール。
バージョンを確認してみると、無事インストールが確認できます!やったね!!

bash
$ npm i -g yarn

> yarn@1.22.10 preinstall C:\Program Files (x86)\Nodist\bin\node_modules\yarn
> :; (node ./preinstall.js > /dev/null 2>&1 || true)

C:\Program Files (x86)\Nodist\bin\yarn -> C:\Program Files (x86)\Nodist\bin\node_modules\yarn\bin\yarn.js
C:\Program Files (x86)\Nodist\bin\yarnpkg -> C:\Program Files (x86)\Nodist\bin\node_modules\yarn\bin\yarn.js
+ yarn@1.22.10
updated 1 package in 1.19s

# インストールされたか確認
$ yarn -v
1.22.10

原因は何なのか

 分かりません、全くわかりません(誰か教えて:confounded:)

想像ですが、msysが絡んでそうかなーって思ってます。gitbashってchmodとか一部のコマンドが使えないんですよね。いや、それは関係ないか?いやあるのか??:thinking:
兎に角、bashが使えるからといってUnix/Linux環境と同じ事ができる訳ではないって所にヒントがありそう。というのも、タイトルにもあるコマンドってUnix/Linux環境だと正しく動作するらしいんですよね。

後書き

 もう二度と同じ失敗はしたくない、そして誰も二の舞になって欲しくないです。この記事が誰かのお役にたてば幸いです。
 余談ですが、Windowsだとchocolatey3なるパッケージマネージャがあるらしく、それでyarnを入れるとか入れないとか4。。。
どれくらいメジャーか分からないのですが、ちょっと使って見ようかしら:thinking:

参考

1.Nodist で yarn 使うときのパス

  1. この記事を書いている時

  2. ちなみに2回目のやらかしです、ごめんよ:sob:

  3. チョコレートがアイコンでした、何それ美味しそう:chocolate_bar:

  4. 自動翻訳っぽいサイトに載ってました(https://qastack.jp/programming/49689174/how-to-upgrade-yarn-version-using-terminal )、元記事どこ??

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?