brewでインストールしたyarnのバージョンを変更する
brewでインストールしているyarn(他のパッケージでも手順は基本的に同じです)のバージョンが新しすぎたため、古バージョンに戻す方法で詰まってしまった。この手の手順はすでにいくらでもあると思ったのだけれど、そもそも説明がまちがっていたり、homebrew/versionsがdeprecatedされる前の手順であったので新しく書いた。
前提
- ローカルのMac環境において
-
yarn 1.13.0
をインストール済みだけど -
yarn 1.12.3
に変更したい
やること
0. はじめに
前提:npmでyarnをインストールしている場合はアンインストールする。という手順が散見されるが、これは適当ではない。公式のドキュメントによると以下のように書かれているが、これはDebian、UbuntuおよびCentOSのような一般的なLinuxのディストリビューションでのお話。
注意: npm から Yarn をインストールすることは一般的にはお勧めしません。 Node ベースのパッケージマネージャで Yarn をインストールする場合は、パッケージは署名されておらず、整合性のチェックはベーシックな SHA1 ハッシュのみで行われており、システム全体にまたがるアプリケーションをインストールする場合にはセキュリティリスクとなります。
出典:https://yarnpkg.com/ja/docs/install#alternatives-stable
1. どこのyarnが呼ばれているか確認する
自分の環境ではanyenvを使っているのでこちらは問題なさそう。
$ which yarn
/Users/himatani/.anyenv/envs/ndenv/shims/yarn
2. brewのバージョンを確認する
which {package}
コマンドによって意図してない結果が返ってきた場合は、そもそもyarnをインストール済みであることを確認する。インストールしていなければ brew install yarn
で入れる(最新のバージョンでインストールされる)。
$ brew list yarn
yarn
自分の環境では最新(2019/02/18 現在)の 1.13.0
が入っていた。ちなみに、 brew list --versions
コマンドでパッケージ名を指定すると、インストール済みのすべてのバージョンが確認できる。
$ yarn -v
1.13.0
$ brew list --versions yarn
yarn 1.13.0
3. 旧バージョンが提供されていないか探す
Homebrewの公式から古いバージョンが提供されていないか探すために、以前であれば以下のようにして検索できたがすでにdeprecatedとなってしまっている。(2019/02/18 現在)
$ brew tap homebrew/versions
$ brew search versions/yarn
4. 旧バージョンのFormulaファイルを探す
仕方がないので、Homebrewの全コミットから自分が欲しいバージョンを探していく。まずは、Homebrewのリポジトリがあるディレクトリまで移動する。
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
git log {package}.rb
などでgitのログを絞ってコメントを頼りに、欲しいバージョンのコミットを見つける。
$ git log yarn.rb
古いバージョンのFormulaファイルからインストールするために、コミットのハッシュ値を抜き出す。ちなみに yarn 1.12.3
のコミットのハッシュ値は 66645f26c48fb949dfc8784dfc1b4c7ea3ead1b1
であった。
5. 旧バージョンのFormulaファイルでインストールする
こちらのコマンド brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/{hash}/Formula/{package}.rb
でコミットのハッシュ値とパッケージ名を指定してbrew installできる。先ほどの手順で見つけたコミットのハッシュ値を入れてインストールする。
(ちなみに、ここで該当のコミットのハッシュ値でcheckoutして、brew install {package}
で旧バージョンのFormulaファイルからインストールするやり方もある。ただ自分は、インストール後にHEADに戻すのを忘れるのもあれなので、以下の手順の方が安全にインストールすればいいと思っている。)
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/66645f26c48fb949dfc8784dfc1b4c7ea3ead1b1/Formula/yarn.rb
すでに最新のバージョンでインストールされているよ、と言われた場合は brew unlink {package}
でunlinkしてあげる。
Error: yarn 1.13.0 is already installed
To install 1.12.3, first runbrew unlink yarn
無事にインストールできた
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/66645f26c48fb949dfc8784dfc1b4c7ea3ead1b1/Formula/yarn.rb
######################################################################## 100.0%
Warning: yarn 1.13.0 is available and more recent than version 1.12.3.
==> Downloading https://yarnpkg.com/downloads/1.12.3/yarn-v1.12.3.tar.gz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/49970642/a4875000-e25c-11e8-88b4-45d26e231bb1?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F
######################################################################## 100.0%
🍺 /usr/local/Cellar/yarn/1.12.3: 14 files, 4.7MB, built in 11 seconds
Removing: /usr/local/Cellar/yarn/1.6.0_1... (14 files, 4.1MB)
Removing: /Users/himatani/Library/Caches/Homebrew/yarn--1.12.3.tar.gz... (1.1MB)
インストールできると自動でインストールしたバージョンでlinkしてくれる。
$ yarn -v
1.12.3
以前のバージョンもきちんと残っている。
$ brew list --versions yarn
yarn 1.13.0 1.12.3
ちなみに、brew switch {package} {version}
で使用するバージョンの切り替えができる。
$ brew switch yarn 1.13.0
めでたしめでたし。
Author And Source
この問題について(brewでインストールしたyarnのバージョンを変更する), 我々は、より多くの情報をここで見つけました https://qiita.com/himatani/items/ff84692f15196ef078d3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .