45
25

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 5 years have passed since last update.

心がHomebrewで旧バージョンのパッケージを入れたがってるんだ

Last updated at Posted at 2017-03-28

はじめに

iOSの開発でSwiftgenを使っているプロジェクトに入った時、周りのメンバーが最新のv4.2.0ではなく、旧バージョンのv4.1.0を使用していたため、ダウングレードしなければいけない状況でした。
旧バージョンをインストールしたことがある場合は brew switch swiftgen 4.1.0で終わりなのですが、無い場合はオワタ\(^O^)/となってしまいます。
そのときに何とかしてダウングレードできないものかとググりまくって見つけた方法をここに記します。

現状

macOS : Sierra v10.12.2
Homebrew : v1.1.11
Swiftgen : v4.2.0  ←こいつをダウングレードしたい

ダウングレードするぞい

1. Formulaまで移動

Homebrewのリポジトリのあるディレクトリまで移動します。

$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/

2. 全コミットの取得

Homebrewの全コミットをgit fetch --unshallowで取得します。

$ git fetch --unshallow
remote: Counting objects: 329054, done.
remote: Compressing objects: 100% (139309/139309), done.
remote: Total 329054 (delta 190611), reused 325373 (delta 186941), pack-reused 0
Receiving objects: 100% (329054/329054), 94.67 MiB | 720.00 KiB/s, done.
Resolving deltas: 100% (190611/190611), completed with 3555 local objects.
From https://github.com/Homebrew/homebrew-core
   cb79fc2..e5e1865  master     -> origin/master

3. コミットの確認

欲しいバージョンのコミットを確認します。

$ brew log swiftgen --oneline | grep 4.1.0
307341b swiftgen: update 4.1.0 bottle.
bed3a58 swiftgen 4.1.0

4. 使用するコミットまで戻す

リポジトリを古いバージョンの頃に戻します。v4.1.0 の場合は 307341b のコミットまで戻します。

$ git checkout 307341b swiftgen.rb

5. 現バージョンのアンインストール

旧バージョンを入れるときに新しいバージョンのパッケージが存在していると入らないので、一度アンインストールしましょう。

$ brew uninstall swiftgen

6. 旧バージョンをインストールする

ここが重要です。Homebrew v1.1.11ではインストール時にリポジトリの自動アップデートを勝手に行う仕様になっているため、ここまでの工程が元に戻ってしまい、最新のパッケージの方がインストールされて、(゚Д゚)ハァ? となってしまうのですが、先頭の HOMEBREW_NO_AUTO_UPDATE=1 を指定するとアップデートせずに現在のコミットでインストールできます。

$ HOMEBREW_NO_AUTO_UPDATE=1 brew install swiftgen
==> Downloading https://homebrew.bintray.com/bottles/swiftgen-4.1.0.sierra.bottle.
######################################################################## 100.0%
==> Pouring swiftgen-4.1.0.sierra.bottle.tar.gz
🍺  /usr/local/Cellar/swiftgen/4.1.0: 172 files, 21.4MB

7. バージョンの確認

バージョンを確認します。やったぜ。

$ swiftgen --version
SwiftGen v4.1.0

8. リポジトリの修復

Homebrewのリポジトリが古い状態になっているので元に戻します。

$ git reset HEAD
$ git checkout .

9. 最後に

git fetch --unshallowでfull cloneしたことで重くなるかもと不安な方は/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core まで移動してから、以下のコマンドを入力することでlogを減らせます。

$ git fetch --depth=1
$ git gc
$ git prune

参考にさせてもらった記事

45
25
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
45
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?