自作の数式の特定のバージョンをインストールするにはどうすればよいですか?たとえば、最新の9.0ではなくpostgresql-8.4.4です。
自作の数式の特定のバージョンをインストールするにはどうすればよいですか?たとえば、最新の9.0ではなくpostgresql-8.4.4です。
回答:
TLDR: brew install postgresql@8.4.4
詳細については、以下の回答を参照してください。
*(私の回答を再編集して、homebrewで古いソフトウェアバージョンをインストール/使用するためのより完全なワークフローを提供します。古いバージョンの方が良かった場合は、遠慮なくメモを追加してください。)
最も単純なケースから始めましょう:
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つのバージョンをあまり離れすぎないように切り替えたい場合に使用すると、ほとんどの場合に役立ちます。
特に大規模なソフトウェアプロジェクトの場合、特定のソフトウェアのいくつかの(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
バックポートされたバージョンの公式が最新である限り、このアプローチはおそらく古いソフトウェアを処理するための最良の方法です。
以下のアプローチは、完全を期すために主にリストされています。どちらも醸造リポジトリからいくつかのアンデッドフォーミュラを復活させようとします。依存関係の変更、数式仕様のAPIの変更、または単にダウンロードURLの変更により、動作する場合と動作しない場合があります。
式ディレクトリ全体がgitリポジトリであるため、プレーンなgitコマンドを使用して特定のバージョンをインストールできます。ただし、古いバージョンが利用可能であったコミットを取得する方法を見つける必要があります。
a)歴史的な時代
2011年8月から2014年10月までの間に、homebrewは、brew versions
利用可能なすべてのバージョンをそれぞれのSHAハッシュで生成するコマンドを持っていました。2014年10月の時点で、brew tap homebrew/boneyard
使用する前にaを実行する必要があります。タップの名前が示すように、これは最後の手段としてのみ実行する必要があります。
例えば
$ 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リポジトリに参照を保持できます。
1つの注意:古いコミットをチェックアウトするとき、自作のインストールを一時的にダウングレードします。したがって、homebrewの一部のコマンドは最新バージョンと異なる場合があるため、注意が必要です。
それほど難しくないので、独自のリポジトリにアップロードできます。するために使用自作・バージョンが、それは現在廃止されています。
例えばpostgresqlなどの特定のバージョンを保持し、自然なbrew update; brew upgrade
手順を実行するときに更新されないようにしたい場合は、式を固定できます。
$ brew pin postgresql
固定された数式がに一覧表示され/usr/local/Library/PinnedKegs/
、最新の変更と更新を取り込んだら、再度固定を解除できます。
$ brew unpin postgresql
git checkout fa992 -- Library/Formula/postgresql.rb
ます。完了したら、を使用して式への変更を元に戻すことができますgit revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb
。
brew update
、Gitリポジトリを確立する必要がある場合があります。
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
、その後、あなたは使用することができるgit checkout 4cce79d -- Formula/go.rb
とHOMEBREW_NO_AUTO_UPDATE=1 brew install go
。
現在、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
fatal: Not a git repository (or any of the parent directories): .git
ます。私はcd
代わりに(FORMULANAME.rbなし)ディレクトリに、そしてやるgit checkout 120938
cd /usr/local
最初に必ずしてください。
brew unlink FORMULANAME
brew versions <formula>
はサポートされなくなりました。
brew link --force postgresql@9.5
。新しいバージョンが既にインストールされていて、古いバージョンをデフォルトにしたい場合は--overwrite
、そこにもが必要です。
以前にインストールした式の古いバージョンをインストールする方法が、はるかに簡単になりました。単に使う
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を参照してください。
更新:2015年1月15日
brew install <url>
(brew unlink
例えば、最初に必要になるかもしれませんbrew unlink docker
)brew switch docker 1.3.3
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
brew install <url>
、brew unlink <formulaname>
。それ以外の場合、これは数式の特定のバージョンに切り替える最も簡単で最も簡潔な方法です(これまでのところ)。
Raw
どのファイルのボタンを押したのですか?
brew log <formula>
@halfcubeの提案に沿って、これは本当にうまくいきます:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
package@version
git log master -- Formula/PACKAGENAME.rb
コミット履歴を取得し、正しいコミットをチェックアウトしてから、実行brew install Formula/PACKAGENAME.rb
してインストールします。
brew unlink
前brew install
に必要だと思います。
mxcl
ですか?
brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rb
ますが、おそらく@
サインが原因でエラーが発生します:Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.
アイデアはありますか?
他の複雑なソリューションよりも優れた代替ソリューションを発見しました。
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
これにより、PostgreSQL 8.4.8がダウンロードおよびインストールされます。
私はこの解決策を見つけました。リポジトリとリポジトリ内のコメントを検索する手順を実行し始めました。
少し調査したところ、誰かが一緒に育てるための珍しい処方者のコレクションを持っていることがわかりました。
MySQL 5.1.xをお探しの場合は、ぜひお試しください。
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb
構文エラーで失敗したようです。
raw
URLを忘れないでください
homebrew-versions
はなくなり、すべてがオンにcore
なっているため、一般的なケースは次のとおりbrew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb
です。github.com/Homebrew/homebrew-core/commits/master/Formula/…にアクセスCOMMIT
すると見つかります。
式を特定する戦略と、インストールするパッケージのバージョンと一致する式の履歴内の特定のコミットを使用できます。
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
注:この回答は、braumeister.org Webサイトの削除に対応するために更新されました。同じ原理が当てはまり、ブラウミスターは単にフォーミュラバージョンをナビゲートする初心者にやさしい方法を提供しただけでした。
他の答えのほとんどは今では時代遅れです。そのバージョンが別々の式として存在しない限り、残念ながら自作はまだ、古いバージョンをインストールする組み込みの方法はありません(例えばpython@2
、postgresql@9.4
...)。
幸いなことに、他の式では、以前は必要であった複雑な混乱よりもはるかに簡単な方法があります。詳細な手順は次のとおりです。
ログで正しいバージョンを検索します。
brew log formula
# Scroll down/up with j/k or the arrow keys
# or use eg. /4\.4\.23 to search a specific version
# This syntax only works on pre-2.0 Homebrew versions
brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
これにより、コミットハッシュのリストが表示されます。適切なものを選択してください(ほとんどの場合、それはかなり明白であり、通常は最新(つまり上位)のものです。
上流のリポジトリで式が存在するURLを見つけます。
brew info ‹formula› | grep ^From:
URLを修正します。
github.com
とraw.githubusercontent.com
blob/master
最初のステップで見つけたcommitハッシュに置き換えます。master
以前に見つかったURLをコミットハッシュで置き換えることにより、目的のバージョンをインストールします。例:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
(最後のステップはbrew unlink ‹formula›
前に実行する必要があるかもしれません。)
使用するコミットハッシュをコピーした場合は、この例のようなものを使用してそのバージョンをインストールし、値をbash
コミットハッシュと目的の式で置き換えます。
BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
-e '/^From: /s///' \
-e 's/github.com/raw.githubusercontent.com/' \
-e 's%blob/%%' \
-e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install
この例では、bash 5の代わりにbash 4.4.23をインストールしていますが、brew upgrade
後で実行しbrew pin bash
た場合、最初に実行しない限り、bash 5が最初からインストールされます。代わりに、ピン止めなしでこれをよりスムーズにするために、最初にを使用して最新のものをインストールしbrew install bash
、次にbrew unlink bash
上記のスクリプトに従って必要な古いバージョンをインストールしてから、を使用brew switch bash 4.4.23
して古いバージョンへのシンボリックリンクを設定する必要があります。これで、brew upgrade
Bashのバージョンに影響はありません。あなたは可能brew switch bash
に切り替えるために利用可能なバージョンのリストを取得します。
同じ目標を達成する別の方法は次のようです。
brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install bash@4.4.23
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.
これによりformula@version
、上記の例に従ってインストールできるカスタムタップが作成されます。欠点は、特定のバージョンのBashまたは他の数式を使用するためにbrew unlink bash
、おそらくまだ必要があるということですbrew link bash@4.4.23
。
brew log
ので、追加-F
や--grep
オプションは私にとって失敗していました。
brew log
。gitログメッセージを適切に解析するかgit log
、対応するリポジトリで直接実行する必要があるため、今は新しいバージョンを作成する必要はありません。そして、変更ログはこの重大な変更についてさえ言及していないようです。迷惑を超えて。
External Command
の構造内で動作することが必要と思われるかもしれません。docs.brew.sh/External-Commandsbrew
git log
brew extract
使い方を見つけることができた唯一の場所でした、ありがとう!
単純にbrew install maven
インストールされたMaven 3.0.3 以降、Homebrewを使用してMaven 2.2.1に戻りました。
まず、そこにmaven dirを残す必要があります
$ brew unven maven
抽出タップコマンドを使用する
$ 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:6秒で構築された10ファイル、3.1M
$ mvn --version 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プロジェクトがリポジトリを再編成しました。この変更を説明するためにこの回答を更新しました。
@tschundeeeと@Debilskiの更新1で説明されているワークフローに基づいて、手順を自動化し、このスクリプトにクリーンアップを追加しました。
それをダウンロードして、あなたのパスに入れてくださいbrewv <formula_name> <wanted_version>
。特定のOPの場合、次のようになります。
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
それ以降の更新された回答は、@ lance-pollardがすでに有効な回答として投稿したものに追加されます。
式の特定のバージョンをインストールする方法(この例で使用されている式はterraform
):
git log master -- Formula/terraform.rb
リポジトリをローカルで複製した場合は、githubの履歴からコミットバージョンを取得します。brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
残念ながら、Homebrewには、古いバージョンをインストールする明確な組み込み方法がまだありません。
幸いなことに、ほとんどの式では、これまで必要であった複雑な混乱よりもはるかに簡単な方法があります。bash
例として使用する完全な手順は次のとおりです。
brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install bash@4.4.23
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.
これにより、formula@version
上記の例に従ってインストールできるカスタムタップが作成されます。重要な注意事項は、brew unlink bash
以前にデフォルト/最新バージョンの数式をインストールしていbrew link bash@4.4.23
た場合、特定のバージョンのBash(または最新バージョンと古いバージョンがインストールされている他の数式)を使用するために、おそらく必要になるということです。
この方法の潜在的な欠点は、バージョン間で簡単に切り替えることができないことです。これは、この方法がbrew
「異なる式」であるためです。
使用できるようにしたい場合brew switch $FORMULA $VERSION
は、次の方法を使用する必要があります。
この例は、古いbash 4.4.23のインストールを示しbash
ています。この式は現在bash 5をインストールするため、便利な例です。
brew install bash
brew unlink bash
brew switch bash 4.4.23
に、バージョンへのシンボリックリンクを設定するために使用しますbrew upgrade
最初に最新のものをインストールせずに古いバージョンをインストールした後にを実行した場合、最初にを実行しない限り、最新のものは古いバージョンを上書きしてインストールされますbrew pin bash
。
忘れがちで、将来的に安全でなくなるバージョンに固定する可能性があるため、ここでの手順は固定を回避します(Shellshockなどを参照)。この設定brew upgrade
でBashのバージョンに影響が及ぶことはありません。いつでも実行brew switch bash
して、切り替え可能なバージョンのリストを取得できます。
export
以下のコードスニペットの行をコピーして貼り付けて編集し、目的のバージョンと数式名で更新してから、残りをそのままコピーして貼り付けると、これらの変数を使用して魔法をかけます。
# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME
数式にバージョンが存在することが確実な場合は、以下を使用できます。
# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')
使用するコミットハッシュをエクスポートしたら、これを使用してそのバージョンのパッケージをインストールできます。
brew info $BREW_FORMULA_NAME \
| sed -n \
-e '/^From: /s///' \
-e 's/github.com/raw.githubusercontent.com/' \
-e 's%blob/%%' \
-e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install
式の出力の指示に従って、PATHに入れるか、デフォルトのシェルとして設定します。
Homebrewの最新バージョン(この記事の執筆時点では0.9.5)には、インストールするHomebrew kegのバージョンに固有のレシピがあります。例:
$ 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
。以下を使用してこれを解決しました。これは、任意の抽出インストールされたソフトウェアでも機能するはずです。以下の例は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
。これは、私のマシンではhomebrewがにインストールされて/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 作成者:Vincent Lesierse 日付: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 2015 +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
最新バージョンを取得し、その方法は、今後それを維持します。
git log --grep 0.4.1 docker-machine.rb
。
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
cairo
この方法では、醸造者のバージョン履歴を十分に見つけることができませんでした。@sealocalの答えは、何らかの理由でより多くを示しました。
私の状況:postgresql
11から12に誤ってアップグレードされました。残しておきたい11。
brew services stop postgresql
brew install postgresql@11
brew link postgresql@11 --force
postgres
しpostgres@11
ます。cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
brew services start postgresql@11
エラーがある場合は、チェックしてください/usr/local/var/log/postgresql@11.log
(@ 11に注意してください)。
brew postgresql-upgrade-database
。この答えは、他のほとんどの式では役に立ちません。
brew postgresql-upgrade-database
まあ、アップグレード用です。私の答えは、古いバージョンの Postgres を使用することです。バイナリを切り替えるだけでは機能しません。
nvm
古いLTSリリースでこの手法を使用して幸運を祈っています)。書き込みV10&V12の時には少なくとも、例えば利用可能であるべきbrew install node@12
formulae.brew.sh/formula/node
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
または
git clone git@github.com:Homebrew/homebrew-core.git
git log master -- Formula/flyway.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb
brew install Formula/flyway.rb
から実行しないのhomebrew-core
ですか?raw.github..
住所を使わなくても
brewの最後のバージョンでは非常に簡単に実行できました。
brew tap homebrew/versions
brew install subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8 # for postgresql 8 (which you ask)
これらのどれも実際には私のケース(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
cd
brew --prefix /Homebrew
およびgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Taps
は無視されるので機能しません。
HOMEBREW_NO_AUTO_UPDATE
。はい、必要なものを見つけるまで、必要なものを忘れないでください。xD
HOMEBREW_NO_INSTALL_CLEANUP
これは覚えておく必要があることではないですか?
でバージョンが見つからない場合brew search <formula>
は、数式のコミットログを調べて、必要なバージョンを見つけることもできます。
brewを使用して古いバージョンのnginxをインストールする例を次に示します。
見る nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
そこから1.6.3
、shaとraw git url を使用してインストールできます。
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
現在、特定の数式バージョンをインストールする古い方法は廃止されています。したがって、を使用する必要があるようbrew edit [formula]
です。たとえば、の62.1
バージョンをインストールしたいとしicu4c
ます(たとえばに必要postgresql 10.5
)。その後、あなたはする必要があります
> brew edit icu4c
# drops you to editor
ここでは、対応する文字列にurl
、version
およびsha256
(おそらくmirror
)を変更する必要があり62.1
ます。
url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"
次に実行brew reinstall icu4c
して、最終的に62.1
バージョンをダウンロードします。
sha256
?私の場合https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
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
それが役に立てば幸い:)
古いリリースのelasticsearchを/usr/local/Cellar/elasticsearch
ディレクトリにコピーしました。
$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3
それでおしまい。多分それは誰にとっても便利です。
私は、私のより良い判断に反して、Maven 3.1.1にhomebrew/versions
はない式を作成することにしました。これをする:
homebrew/versions
はgithubでforkしました。$(brew --prefix)/Library/Taps
ローカルの作業コピーにシンボリックリンクしました。これを呼ぶよmy-homebrew/versions
。my-homebrew/versions/<formula>
。homebrew/versions
新しいフォーミュラのプルリクエストを送信しました。わーい。
現在デフォルトのbrew式にないバージョンの場合は、https://github.com/buildtools-version-taps/homebrew-versions-tap-toolのツールを使用して独自のタップを簡単に作成できます
brew tap-new user/repo
それからそしてそれからbrew extract --version='Major.minor' FORMULA user/repo
そしてそれからbrew install FORMULA@Major.minor
。
この回答で規定されているプロセスを容易にするためのツールを作成しました。
pkg
バージョンのパッケージを見つけるには、次のコマンドを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
指定されたコマンドをコピーして実行し、インストールします。
postgresql
ある時点でHomebrewに個別のバージョンがあったため、奇妙なものbash
です。同じ数式名で4.xから5.xに変更されたため、stackoverflow.com/a/55764594/3794873を