LoginSignup
23
22

More than 5 years have passed since last update.

brewでインストールしたyarnのバージョンを変更する

Last updated at Posted at 2019-02-17

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 run brew unlink yarn

無事にインストールできた :beer:

$ 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

めでたしめでたし。

23
22
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
23
22