Homebrew は特定のバージョンの Formula をインストールしますか? 質問する

Homebrew は特定のバージョンの Formula をインストールしますか? 質問する

Homebrew で特定のバージョンの数式をインストールするにはどうすればよいですか? たとえば、最新の 9.0 ではなく postgresql-8.4.4 などです。

ベストアンサー1

TLDR: 参照brew install [email protected]下記に回答詳細については。


*( Homebrew で古いソフトウェア バージョンをインストール/使用するためのより徹底したワークフローを示すために、回答を再編集しました。古いバージョンの方が優れていると思われる場合は、遠慮なくメモを追加してください。 )

最も単純なケースから始めましょう:

1) バージョンがすでにインストールされているかどうか(ただしアクティブ化されていないかどうか)を確認します。

homebrew が新しいフォーミュラをインストールすると、 のようなバージョン管理されたディレクトリに配置されます/usr/local/Cellar/postgresql/9.3.1。その後、このフォルダへのシンボリック リンクのみがグローバルにインストールされます。原理的には、これにより、インストールされている 2 つのバージョン間の切り替えが非常に簡単になります。(*)

Homebrew を長期間使用していて、古いバージョンを削除したことがない場合 (たとえば、 を使用brew cleanup)、プログラムの古いバージョンがまだ残っている可能性があります。以前のバージョンを単にアクティブ化したい場合は、brew switchが最も簡単な方法です。

古いバージョンがインストールされているかどうかをbrew info postgresql(または)で確認します。brew switch postgresql <TAB>

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

古いバージョンがすでにインストールされているようです。以下を使用してアクティブ化できますbrew switch

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

何がアクティブ化されているかを再確認しましょう:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

星が*新しく有効化されたバージョンに移動したことに注意してください

(*)は、古いバージョンのすべての依存関係が残っている場合にのみ機能することに注意してください。場合によっては、古いバージョンの再構築が必要になることがあります。したがって、 は、あまり離れていない 2 つのバージョンを切り替える場合に最も便利です。brew switchbrew switch

2) バージョンがタップとして利用可能かどうかを確認します

特に大規模なソフトウェアプロジェクトでは、特定のソフトウェアの複数のメジャーバージョン(API非互換の可能性あり)に対する需要が非常に高い可能性が非常に高いです。2012年3月現在、自作 0.9brew tapこれには次のようなメカニズムがあります。自作バージョンリポジトリ。

そのバージョン リポジトリには、いくつかのフォーミュラの古いバージョンのバックポートが含まれている可能性があります。(ほとんどは大規模で有名なものだけですが、もちろん postgresql 用のフォーミュラもいくつかあります。)

brew search postgresqlどこを見ればよいかを示します:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

次のように入力するだけでインストールできます。

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

これにより、自動的にタップがタップされることに注意してください(homebrew/versionsで確認しbrew tap、 で削除しますbrew untap homebrew/versions。) 以下は同等です。

$ brew tap homebrew/versions
$ brew install postgresql8

バックポートされたバージョンの公式が最新の状態に保たれている限り、このアプローチはおそらく古いソフトウェアを処理するための最良の方法です。

3) 過去の公式を試してみる

以下のアプローチは、主に完全性のためにリストされています。どちらも、brew リポジトリからアンデッド フォーミュラを復活させようとします。依存関係の変更、フォーミュラ仕様の API の変更、またはダウンロード URL の単純な変更により、機能する場合と機能しない場合があります。

フォーミュラ ディレクトリ全体が git リポジトリであるため、単純な git コマンドを使用して特定のバージョンをインストールできます。ただし、古いバージョンが利用可能だったコミットにアクセスする方法を見つける必要があります。

a) 歴史的な時代

2011 年 8 月から 2014 年 10 月まで、homebrew にはbrew versions、利用可能なすべてのバージョンをそれぞれの SHA ハッシュとともに吐き出すコマンドがありました。2014 年 10 月現在、brew tap homebrew/boneyardそれを使用するには、 を実行する必要があります。tap の名前が示すように、これはおそらく最後の手段としてのみ実行する必要があります。

例えば

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

ご覧のとおり、使用は推奨されていません。Homebrew は内部のヒューリスティックで見つかったすべてのバージョンを吐き出し、古いフォーミュラを取得する方法を示します。試してみましょう。

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

古いバージョンの postgresql がインストールされたので、リポジトリをクリーンな状態に保つために最新のフォーミュラを再インストールできます。

$ git checkout -- Library/Formula/postgresql.rb

brew switch古いものと新しいものを切り替えるのはあなたの友達です。

b) 先史時代

特別なニーズがある場合は、homebrew リポジトリを独自に調べることもできます。

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -S'8.4.4'ファイル内で文字列が追加または削除されたすべてのコミットを検索しますLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb。結果として 2 つのコミットが取得されます。

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

明らかに、fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422これは私たちが興味を持っているコミットです。このコミットはかなり古いので、完全な homebrew インストールをダウングレードしてみます (この方法では、数式 API が有効であることがほぼ保証されます)。

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

最後のコマンドをスキップして、git リポジトリに参照を保持することができます。

注意: 古いコミットをチェックアウトすると、homebrew インストールが一時的にダウングレードされます。そのため、homebrew の一部のコマンドが最新バージョンと異なる可能性があるので注意が必要です。

4) 手動で数式を書く

それほど難しくないそしてそれを自分のリポジトリにアップロードすることができます。以前は自作バージョンですが、現在は廃止されています。

A.) ボーナス: ピン留め

たとえば postgresql の特定のバージョンを保持し、通常の手順を実行するときに更新されないようにするには、数式を固定しbrew update; brew upgradeます。

$ brew pin postgresql

固定された数式はリストに表示され/usr/local/Library/PinnedKegs/、最新の変更や更新を反映させたい場合には、再度固定を解除できます。

$ brew unpin postgresql

おすすめ記事