質問: 自作は公式の特定のバージョンをインストールしますか? 自作に特定のバージョンの式をインストールするにはどうすればよいですか?たとえば、最新の9.0ではなくpostgresql-8.4.4です。
回答: 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月現在、 homebrew 0.9 はこのためのメカニズムを提供します:brew tapおよび homebrewバージョン リポジトリ。そのバージョンリポジトリには、いくつかの式の古いバージョンのバックポートが含まれる場合があります。 (ほとんどが大規模で有名なものだけですが、もちろん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 # ... これは自動的にtapped the homebrew/versions tapになっていることに注意してください。 (brew tapで確認し、brew untap homebrew/versionsで削除します。)以下は同等でした:$ brew tap homebrew/versions $ brew install postgresql8 バックポートされたバージョンの式が最新である限り、このアプローチはおそらく古いソフトウェアに対処する最良の方法です。3)過去の式を試す以下のアプローチは、主に完全性のためにリストされています。両方とも、醸造リポジトリからいくつかのアンデッド式を復活させようとします。依存関係の変更、apiの式の仕様の変更、または単にダウンロードurlの変更により、動作する場合としない場合があります。式ディレクトリ全体がgitリポジトリであるため、プレーンなgitコマンドを使用して特定のバージョンをインストールできます。ただし、古いバージョンが使用可能であったコミットを取得する方法を見つける必要があります。a)歴史的時代2011年8月から2014年10月の間、homebrewにはbrew versionsコマンドがあり、それぞれのshaで利用可能なすべてのバージョンを吐き出しました_ハッシュ。 2014年10月の時点で、brew tap homebrew/boneyardを使用してから使用する必要があります。タップの名前が示すように、おそらく最後の手段としてこれを行う必要があります。例えば。$ 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は、ファイル'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)数式を手動で記述する それほど難しくありません そして、それを自分のリポジトリにアップロードできます。以前は homebrew-versions でしたが、現在は廃止されています。a.)ボーナス:固定たとえば、postgresqlなどの特定のバージョンを保持し、自然なbrew update; brew upgradeプロシージャを実行するときに更新されないようにする場合は、pin式を使用できます。$ brew pin postgresql ピン留めされた数式は/usr/local/library/pinnedkegs/にリストされており、最新の変更と更新を取り入れたい場合は、npin it:$ brew unpin postgresql