自作は特定のバージョンの数式をインストールします。

installation versioning homebrew


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




Answer 1 Debilski


TLDR: brew install postgresql@8.4.4 詳細については、以下の回答を参照してください。


*(私の回答を再編集して、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

スター * が新しくアクティブになったバージョンに移動したことに注意してください

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

2)バージョンがタップで利用できるかどうかを確認します。

特に大規模なソフトウェアプロジェクトの場合、特定のソフトウェアのいくつかの(APIと互換性がない可能性がある)メジャーバージョンに対する十分な需要がある可能性が非常に高いです。2012年3月の時点で、自作0.9は、このためのメカニズムを提供します: brew 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 の変更により、動作する場合としない場合があります。

formula ディレクトリ全体が git リポジトリなので、プレーンな git コマンドで特定のバージョンをインストールすることができます。しかし、古いバージョンが利用可能だったコミットにたどり着く方法を見つける必要があります。

a)歴史的な時代

20118月から2014年10月までの間、homebrewには brew versions コマンドがあり、使用可能なすべてのバージョンをそれぞれのSHAハッシュで生成していました。2014年10月の時点で、使用する前に brew tap homebrew/boneyard を行う必要があります。タップの名前が示すように、これは最後の手段としてのみ実行する必要があります。

E.g.

$ 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)先史時代

特殊な場合は、自作レポで自力で掘ってみるのもありかもしれません。

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

git log -S は、ファイル Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb で文字列 '8.4.4' が追加または削除されたすべてのコミットを探します。結果として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 は私たちが関心を持っているコミットです。このコミットはかなり古いので、完全な自作インストールをダウングレードしようとします(そのようにして、数式APIが有効であることが多少保証されます)。

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

最後のコマンドはスキップしても構いません。

注意点としては、古いコミットをチェックアウトする際に、一時的に homebrew のインストールをダウングレードします。そのため、homebrew のコマンドの中には最新版とは異なるものがあるかもしれないので、注意が必要です。

4)手動で数式を書く

それほど難しくないので、独自のリポジトリにアップロードできます。するために使用自作・バージョンが、それは現在廃止されています。

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

postgresqlなどの特定のバージョンを保持して、自然な brew update; brew upgrade を行うときに更新されないようにする場合は、醸造アップグレード手順では、数式を固定できます

$ brew pin postgresql

固定された数式は /usr/local/Library/PinnedKegs/ リストされ、最新の変更と更新を取り込んだら、再度固定を解除できます。

$ brew unpin postgresql



Answer 2 Bijan


シンプルなワークフロー

Homebrew/versionsが非推奨となった現在、Homebrew/coreは新しい命名形式で複数のバージョンの数式をサポートしています。

特定のバージョンをインストールするには、例えばpostgresql 9.5を実行します。

$ brew install postgresql@9.5

利用可能なバージョンをリストアップするには、@で検索してください。

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6



Answer 3 Trevor Burnham


以前にインストールしていた旧バージョンの公式を簡単にインストールできるようになりました。以下のように

brew switch [formula] [version]

例えば、私は定期的にNode.js 0.4.12と0.6.5を交互に使っています。

brew switch node 0.4.12
brew switch node 0.6.5

brew switch はシンボリックリンクを変更するだけなので、非常に高速です。Homebrew Wikiの詳細については、External Commandsを参照してください。




Answer 4 Vishal


更新日:2015年1月15日

  • 目的のソフトウェアとバージョンのコミット履歴を見つけます。たとえば、Dockerバージョン1.4.1から1.3.3に切り替える必要があります。https: //github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • このボタンでファイルを表示します。enter image description here
  • 生」ボタンをクリックします。List item
  • アドレスバーからURL(この例ではdocker.rb url)をコピーします
  • brew install <url>brew unlink docker 、最初に brew unlink をbrewする必要がある場合があります)
  • brew switch docker 1.3.3
  • docker 1.4.1 brew switch docker 1.4.1 に切り替えます

この要旨から

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb



Answer 5 Lance Pollard


halfcubeさんの提案に沿って、これは非常にうまく機能しています。

  1. https://github.com/Homebrew/homebrew-core/tree/master/Formulaで探しているライブラリを見つけます。
  2. それをクリック:https : //github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. 「履歴」ボタンをクリックして、古いコミットを確認します。https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. 必要なものをクリックします。「postgresql:update version to 8.4.4」、https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. 「raw」リンクをクリックします。https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb