特定のバージョンのフォーミュラを自作にインストールするにはどうすればよいですか? たとえば、最新の 9.0 ではなく、postgresql-8.4.4 です。
32 に答える
TLDR: brew install postgresql@8.4.4
詳細については、以下の回答を参照してください。
*(古いソフトウェアバージョンをhomebrewでインストール/使用するためのより完全なワークフローを提供するために、回答を再編集しました。古いバージョンの方が優れている場合は、メモを追加してください。)
最も単純なケースから始めましょう:
1)バージョンがすでにインストールされている(ただしアクティブ化されていない)かどうかを確認します
homebrewが新しい数式をインストールすると、のようなバージョン管理されたディレクトリに配置され/usr/local/Cellar/postgresql/9.3.1
ます。このフォルダへのシンボリックリンクのみがグローバルにインストールされます。原則として、これにより、インストールされている2つのバージョンを簡単に切り替えることができます。(*)
自作を長期間使用していて、古いバージョンを削除したことがない場合(たとえば、を使用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月の時点で、Homebrew0.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
# …
これにより、タップが自動的にタップさ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
使用する前に行う必要があります。タップの名前が示すように、おそらくこれは最後の手段としてのみ行う必要があります。
例えば
$ 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
私たちが興味を持っているコミットです。このコミットはかなり古いので、完全な自作インストールをダウングレードしようとします(そうすれば、数式APIは多かれ少なかれ有効であることが保証されます):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
最後のコマンドをスキップして、参照をgitリポジトリに保持することができます。
注:古いコミットをチェックアウトするときは、自作のインストールを一時的にダウングレードします。したがって、homebrewの一部のコマンドは、最新バージョンとは異なる場合があるため、注意が必要です。
4)手動で数式を書く
それほど難しくはないので、自分のリポジトリにアップロードできます。以前はHomebrew-Versionsでしたが、現在は廃止されています。
A.)ボーナス:ピン留め
たとえばpostgresqlの特定のバージョンを保持し、自然な手順を実行するときに更新されないようにする場合は、式を固定brew update; brew upgrade
できます。
$ brew pin postgresql
固定された数式はにリストされ/usr/local/Library/PinnedKegs/
ており、最新の変更や更新を取り込みたい場合は、再度固定を解除できます。
$ brew unpin postgresql
シンプルなワークフロー
Homebrew / versionが非推奨になったため、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
以前にインストールした数式の古いバージョンを簡単にインストールできるようになりました。単に使用する
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
、非常に高速です。External Commandsの下にある Homebrew Wiki の詳細なドキュメントを参照してください。
更新: 2015 年 1 月 15 日
- 目的のソフトウェアとバージョンのコミット履歴を見つけます。たとえば、docker バージョン 1.4.1 から 1.3.3 に切り替える必要があります: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
- このボタンでファイルを表示します。
- [未加工] ボタンをクリックします。
- アドレス バーからURL (この例では docker.rb url) をコピーします。
brew install <url>
(最初にする必要があるかもしれませんbrew unlink
、例えばbrew unlink docker
)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
@halfcubeの提案に沿って、これは本当にうまく機能します:
- https://github.com/Homebrew/homebrew-core/tree/master/Formulaで探しているライブラリを見つけて ください
- クリックしてください:https ://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
- [履歴]ボタンをクリックして、古いコミットを確認します:https ://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
- 必要なものをクリックします:「postgresql:バージョンを8.4.4に更新」、https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
- 「raw」リンクをクリックします:https ://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
私は他の複雑な解決策よりも優れた代替解決策を発見しました。
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
これにより、PostgreSQL8.4.8がダウンロードおよびインストールされます。
リポジトリとリポジトリ内のコメントを検索する手順を実行し始めることで、この解決策を見つけました。
少し調べたところ、誰かが作り上げる珍しい処方者のコレクションを持っていることがわかりました。
MySQL 5.1.xをお探しの場合は、これを試してみてください。
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
更新: このメソッドは廃止され、機能しなくなりました。
この方法はエラーになります: GitHub コミット URL からの mysql のインストールはサポートされていません! brew extract mysql
代わりに GitHub の安定したタップに。(使用エラー)
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
...
Traceback (most recent call last):
9: from /usr/local/Homebrew/Library/Homebrew/brew.rb:122:in `<main>'
8: from /usr/local/Homebrew/Library/Homebrew/cmd/install.rb:132:in `install'
7: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:302:in `parse'
6: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `formulae'
5: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `map'
4: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:655:in `block in formulae'
3: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:351:in `factory'
2: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:138:in `get_formula'
1: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:142:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:227:in `load_file': Invalid usage: Installation of mysql from a GitHub commit URL is unsupported! `brew extract mysql` to a stable tap on GitHub instead. (UsageError)
12: from /usr/local/Homebrew/Library/Homebrew/brew.rb:155:in `<main>'
11: from /usr/local/Homebrew/Library/Homebrew/brew.rb:157:in `rescue in <main>'
10: from /usr/local/Homebrew/Library/Homebrew/help.rb:64:in `help'
9: from /usr/local/Homebrew/Library/Homebrew/help.rb:83:in `command_help'
8: from /usr/local/Homebrew/Library/Homebrew/help.rb:103:in `parser_help'
7: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:302:in `parse'
6: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `formulae'
5: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `map'
4: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:655:in `block in formulae'
3: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:351:in `factory'
2: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:138:in `get_formula'
1: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:142:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:227:in `load_file': Invalid usage: Installation of mysql from a GitHub commit URL is unsupported! `brew extract mysql` to a stable tap on GitHub instead. (UsageError)
推奨されるコマンドでインストールしようとしましたが、MySQL 5.7.10 のこの特定のインスタンスでは機能しません。最新のフォーミュラを使用すると、運が良くなる可能性があります。
$ brew extract --version=5.7.10 mysql homebrew/cask
==> Searching repository history
==> Writing formula for mysql from revision 0fa511b to:
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/mysql@5.7.10.rb
$
$ brew install /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/mysql@5.7.10.rb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 1 formula.
Error: undefined method `core_tap?' for nil:NilClass
Error: Failed to load cask: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/mysql@5.7.10.rb
Cask 'mysql@5.7.10' is unreadable: wrong constant name #<Class:0x00007f9b9498cad8>
Warning: Treating /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/mysql@5.7.10.rb as a formula.
==> Installing mysql@5.7.10 from homebrew/cask
==> Downloading https://homebrew.bintray.com/bottles/cmake-3.19.4.big_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/278f2ad1caf664019ff7b4a7fc5493999c06adf503637447af13a617d45cf484?response-content-disposition=attachment%3Bfilenam
######################################################################## 100.0%
==> Downloading https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
==> Downloading from https://phoenixnap.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
######################################################################## 100.0%
==> Downloading https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz
curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "mysql@5.7.10"
Download failed: https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz
上記のパス (ruby で記述) の式を変更して、目的の結果 (たとえば、最近の macOS バージョンに MySQL 5.7.10 をインストールするなど) を達成することを試みることができます。
インストールするパッケージのバージョンと一致する数式と数式の履歴内の特定のコミットを識別する戦略を使用できます。
キーボードの を押し
t
て、ファイル ファインダーをアクティブにします。最も関連性が高いと思われる式 (おそらく: ) を特定
Formula/mysql.rb
し、フォーラム ファイルの場所 ( https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb )に移動します。https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb
History
にあるボタンをクリックして、リビジョン履歴を確認します。MySQL 5.7.10 に興味がある場合は、5.7.11 より前の最新リビジョンをクリックすると、GitHub コミットに移動します。
注: コミット履歴がブラウザーに読み込まれない場合、GitHub の提案に従って、コンソールでコミット履歴を表示する必要がある場合があります。GitHub でそのコミットを表示することに関心がある場合は、URL の上記のコミット SHA を置き換えます。または、以下の手順 7 に進みます。
[表示] ボタンをクリックして、コミットが適用された後に mysql.rb ファイルのソースを表示します。
次に、「Raw」ボタンをクリックして生のソースを表示します。
URL をコピーします。
mysql.rb
または、数式とその数式の特定のバージョンを識別するファイル名を使用して URL を自分で作成します(以下の URL の commit SHA によって識別されます)。
でインストールします
$ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
brew install maven
シンプルにインストールされた Maven 3.0.3から、Homebrew を使用して Maven 2.2.1 に戻りました。
最初に、maven dir をそのままにしておく必要があります。
$ brew unlink maven
brew tap コマンドを使う
$ brew tap 自作/バージョン 「/usr/local/Library/Taps/homebrew-versions」に複製しています... リモート: オブジェクトのカウント: 590、完了。 リモート: オブジェクトの圧縮: 100% (265/265)、完了。 リモート: 合計 590 (デルタ 362)、再利用 549 (デルタ 325) オブジェクトの受信: 100% (590/590)、117.49 KiB | 79 KiB/秒、完了。 デルタの解決: 100% (362/362)、完了。 タップド50式
これで、maven2 式をインストールできます。
$ brew install maven2 ==> http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz のダウンロード #################################################### ######################## 100.0% /usr/local/Cellar/maven2/2.2.1: 10 ファイル、3.1M、6 秒でビルド
$ mvn --バージョン Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700) Java バージョン: 1.6.0_37 Java ホーム: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home デフォルトのロケール: en_US、プラットフォームのエンコード: MacRoman OS 名: 「mac os x」 バージョン: 「10.7.4」 アーキテクチャ: 「x86_64」 ファミリー: 「mac」
編集:brew switch maven 2.2.1
別のバージョンに切り替える
こともできます。
編集: Apache Maven プロジェクトはリポジトリを再編成しました。この変更を説明するためにこの回答を更新しました。
誤って Postgres をアップグレードしましたか?
私の場合:
postgresql
誤って 11 から 12 にアップグレードされた (brew upgrade
引数なしで実行した後)- Postgres 11 を維持したい。
解決:
- DB を停止します。
brew services stop postgresql
- Postgres 11 をインストールします。
brew install postgresql@11
- 有効にします:
brew link postgresql@11 --force
- (オプション) DB データ ディレクトリの名前を から に変更
postgres
しpostgres@11
ます。
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
- DB を開始します。
brew services start postgresql@11
エラーがある場合は、チェックしてください/usr/local/var/log/postgresql@11.log
(@11 に注意してください)。
@tschundeeeと@Debilski の update 1で説明されているワークフローに基づいて、手順を自動化し、このスクリプトにクリーンアップを追加しました。
それをダウンロードし、あなたのパスに入れてbrewv <formula_name> <wanted_version>
. 特定の OP の場合、次のようになります。
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
自作の最新バージョン (この記事の執筆時点では 0.9.5) では、インストールする自作樽のバージョンに固有のレシピがあります。例:
$ brew search mongodb
mongodb mongodb24 mongodb26
brew install mongodb26
あとは普通にやってください。
最新バージョンを既にインストールしている場合は、必ず最新バージョンのリンクを解除し、目的のバージョンをリンクしてください: brew unlink mongodb && brew link mongodb26
。
問題homebrew/versions
は、誰かがその特定のバージョンのソフトウェアをリポジトリにリストして、それを使用できるようにしなければならないことです。また、brew versions
サポートが終了しているため、別のソリューションが必要です。を使用していることを示すソリューションの場合、バージョンがコンピューターに存在する必要があるため、brew switch
これは を行っていない場合にのみ機能します。brew cleanup
docker-machine
に記載されていない特定の古いバージョンをインストールしたいという問題がありましたhomebrew/versions
。以下を使用してこれを解決しました。これは、brew がインストールされたソフトウェアでも機能するはずです。以下の例はdocker-machine
、バージョン 0.5.0 から 0.4.1 にダウングレードしたいパッケージとして使用します。
自作
Formula
ディレクトリに移動します。
これは、 を実行することで確認できますbrew info [any package name]
。たとえばbrew info docker-machine
、パスを示す行が表示されます -/usr/local/Cellar/docker-machine/0.5.0
。これは、私のマシンでは自作がインストールされて/usr/local
おり、私のFormula
ディレクトリはデフォルトで次の場所にあることを示しています/usr/local/Library/Formula
パッケージの特定の式ファイル (.rb) を見つけます。 をダウングレードしたいので
docker-machine
、ファイルを見ることができdocker-machine.rb
ます。このフォーミュラ ファイルのバージョン履歴を取得します。を入力し
git log docker-machine.rb
ます。これにより、このファイルの完全なコミット履歴が一覧表示されます。次のような出力が表示されます。
...もっと コミット 20c7abc13d2edd67c8c1d30c407bd5e31229cacc 作者: BrewTestBot 日付: 2015 年 11 月 5 日 (木) 16:14:18 +0000 docker-machine: 0.5.0 ボトルを更新します。 コミット 8f615708184884e501bf5c16482c95eff6aea637 作者: ヴィンセント・レシエルス 日付: 2015 年 10 月 27 日 22:25:30 +0100 ドッカーマシン 0.5.0 docker-machine を 0.5.0 に更新 #45403 を閉じます。 署名者: Dominyk Tiller コミット 5970e1af9b13dcbeffd281ae57c9ab90316ba423 作者: BrewTestBot 日付: 2015 年 9 月 21 日月曜日 14:04:04 +0100 docker-machine: 0.4.1 ボトルを更新します。 コミット 18fcbd36d22fa0c19406d699308fafb44e4c8dcd 作者: BrewTestBot 日付: 2015 年 8 月 16 日 (日) 09:05:56 +0100 docker-machine: 0.4.1 ボトルを更新します。 ...もっと
難しいのは、必要な特定のバージョンの最新のコミットを見つけることです。上記では、最新の 0.4.1 バージョンがこのコミット タグ : でコミットされたことがわかりますcommit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
。この時点より上のコミットは、バージョン 0.5.0 を使用して開始されます (git ログ エントリは、最新の日付から最も古い日付の順に一覧表示されます)。
式ファイルの以前のバージョンを取得します。 手順 3 の commit タグ (最初の 6 文字を使用できます) を使用すると、次の方法で古いバージョンの式ファイルを取得できます。
git checkout 5970e1 docker-machine.rb
現在のパッケージ バージョンをアンインストールします。 通常の brew コマンドを実行して、現在のバージョンのパッケージをアンインストールします。
元。brew uninstall docker-machine
古いバージョンのパッケージをインストールする これで、通常の brew install コマンドを実行するだけで、チェックアウトしたフォーミュラがインストールされます。元。
brew install docker-machine
必要に応じて、 を使用して再リンクする必要があるbrew link docker-machine
場合があります。
特定のパッケージの最新バージョンに戻したい場合はいつでも、Formula ディレクトリに移動し、フォーミュラ ファイル (.rb) で次のコマンドを発行します。
git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb
その後、最新バージョンを入手brew uninstall docker-machine
しbrew install docker-machine
て、そのままにしておくことができます。
でバージョンが見つからない場合はbrew search <formula>
、式のコミット ログを調べて、必要なバージョンを見つけることもできます。
以下は、brew を介して古いバージョンの nginx をインストールする例です。
見る
nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
そこから1.6.3
、sha と生の git URL を使用してインストールできます。
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
私の場合 (Python) では、これらのどれも実際に機能しなかったので、2 セントを追加します。
cd `brew --prefix`
git log Library/Formula/python.rb
出力は次のようになります。
commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de Author: Dominyk Tiller <dominyktiller@gmail.com> Date: Thu Jun 30 17:42:18 2016 +0100 python: clarify pour_bottle reason commit cb3b29b824a264895434214e191d0d7ef4d51c85 Author: BrewTestBot <brew-test-bot@googlegroups.com> Date: Wed Jun 29 14:18:40 2016 +0100 python: update 2.7.12 bottle. commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0 Author: Rakesh <rakkesh@users.noreply.github.com> Date: Wed Jun 29 10:02:26 2016 +0530 python 2.7.12 Closes #2452. Signed-off-by: Tim D. Smith <git@tim-smith.us> commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9 Author: BrewTestBot <brew-test-bot@googlegroups.com> Date: Fri Jun 17 20:14:36 2016 +0100 python: update 2.7.11 bottle. ...
バージョンが欲しい2.7.11
ので、ハッシュはcf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(またはcf5da05
略して)です。次に、そのバージョンをチェックアウトして、式をインストールしpython
ます。
git checkout cf5da05
brew install python
最後に、クリーンアップします。
git checkout master
この回答で規定されているプロセスを容易にするツールを作成しました。
pkg
versionのパッケージを見つけるにはa.b.c
、次を実行します。
$ brew-install-specific pkg@a.b.c
pkg
これにより、指定されたバージョンとその GitHub URL に言及している自作フォーミュラのコミットが一覧表示されます。
Matching versions:
1. pkg: update a.b.c bottle.
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
Select index:
指定された URL からコミットを確認し、選択したコミットのインデックスを入力します。
Select index: 2
Run:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb
指定されたコマンドをコピーして実行し、インストールします。
Library/Formula/postgresql.rb 行 8 を次のように更新します。
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
そして9行目のMD5
fcc3daaf2292fa6bf1185ec45e512db6
保存して終了。
brew install postgres
initdb /usr/local/var/postgres
この段階で、次のようなpostgresql could not create shared memory segment
更新を回避するために、エラーに 直面する可能性があります。/etc/sysctl.conf
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
もう一度お試しくださいinitdb /usr/local/var/postgres
。スムーズに実行されるはずです。
起動時に postgresql を実行するには
launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist
それが役立つことを願っています:)