Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

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

cyberagent
サイバーエージェントは「21世紀を代表する会社を創る」をビジョンに掲げ、インターネットテレビ局「AbemaTV」の運営や国内トップシェアを誇るインターネット広告事業を展開しています。インターネット産業の変化に合わせ新規事業を生み出しながら事業拡大を続けています。
http://www.cyberagent.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした