web-dev-qa-db-ja.com

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

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

1936
Gravis

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

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

(*)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
2363
Debilski

簡単なワークフロー

Homebrew/versionsが非推奨になったので、Homebrew/coreは新しい命名フォーマットで複数のバージョンの式をサポートします。 

特定のバージョンをインストールするにはpostgresql 9.5を実行するだけです。

$ brew install [email protected]

利用可能なバージョンを一覧表示するには、@で検索を実行します。

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
695
Bijan

以前インストールした式の古いバージョンをインストールするためのはるかに簡単な方法があります。単に使う

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 の下にある他のドキュメントを参照してください。

440
Trevor Burnham

更新日: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
  • [Raw]ボタンをクリックします。 List item
  • アドレスバーから _ 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
202
Vishal

私は他の複雑な解決策よりも優れた代替解決策を発見しました。 

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
101
halfcube

@ halfcubeの提案に沿って、これは本当にうまくいきます:

  1. あなたが探しているライブラリを見つけてください。 https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. それをクリックしてください: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. "history"ボタンをクリックして古いコミットを見てください: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. 必要なものをクリックします。 "postgresql:8.4.4への更新版"、 https://github.com/Homebrew/homebrew-core/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. 「raw」リンクをクリックします。 https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb /
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
74
Lance Pollard

式を識別する戦略と、インストールするパッケージのバージョンに一致する式の履歴内の特定のコミットを使用できます。

  1. https://github.com/Homebrew/homebrew-core に移動します

  2. キーボードのtを押して、ファイルファインダーをアクティブにします。

  3. 最も関連性が高いと思われる式を特定します。おそらく、Formula/mysql.rbで、forumlaファイルの場所に移動します。 https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql。 rb

  4. https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb にあるHistoryボタンをクリックして、改訂履歴を確認します。 。 MySQL 5.7.10に興味がある場合は、5.7.11より前の最新のリビジョンをクリックすると、GitHubコミットに移動できます。

    https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb

注:コミット履歴がブラウザにロードされない場合、GitHubの提案に従って、コンソールでコミット履歴を表示する必要がある場合があります。 GitHubでそのコミットを見たい場合は、URLの上記のコミットSHAを置き換えます。または、以下の手順7にスキップします。

  1. コミットが適用された後、「表示」ボタンをクリックしてmysql.rbファイルのソースを表示します。

  2. 次に、「Raw」ボタンをクリックして、未加工のソースを表示します。

  3. URLをコピーします。または、mysql.rbファイル名を使用して自分でURLを作成し、式とその式の特定のバージョン(以下のURLのコミットSHAで識別)を識別します。

    https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb

  4. $ brew install [URL from step 7]でインストールします

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
    

注:この回答は、braumeister.org Webサイトの削除を説明するために更新されました。同じ原則が当てはまり、ブラウメスターは、数式バージョンをナビゲートするための初心者向けの方法を単に提供していました。

72
sealocal

単純なbrew install mavenがMaven 3.0.3をインストールしたので、私はHomebrewを使ってMaven 2.2.1に戻りました。

最初にあなたはそこにMaven dirをそこに残さなければなりません 

 $ unlink mavenを作成しました

Brew tapコマンドを使う

 $ brew tap homebrew/versions 
 '/usr/local/Library/Taps/homebrew-versions'へのクローン作成.... 
remote:オブジェクトの数を数える:590、完了しました。リモート:圧縮オブジェクト:100%(265/265)、終了
リモート:合計590(デルタ362)、再利用549(デルタ325)
受信オブジェクト:100%( 590/590)、117.49 KiB | 79 KiB/s、完了
デルタの分解: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 6秒で構築された1: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プロジェクトはリポジトリを再編成しました。この変更を説明するためにこの回答を更新しました。

28
Cameron Goodale

@tschundeee および @ Debilskiのupdate 1 で説明されているワークフローに基づいて、手順を自動化し、 このスクリプト にクリーンアップを追加しました。

ダウンロードしてください 、パスに入れてbrewv <formula_name> <wanted_version>。特定のOPの場合は、次のようになります。

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)

21
MattiSG

他の答えのほとんどは今では時代遅れです。残念ながら、Homebrewには古いバージョンをインストールする組み込みの方法がありません。ただし、そのバージョンが別の数式として存在しない限り(例:python@2[email protected]…)。

幸いなことに、他のフォーミュラには、以前は必要だった複雑な混乱よりもはるかに簡単な方法があります。完全な手順は次のとおりです。

  1. ログで正しいバージョンを検索します。

    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›
    

    これにより、コミットハッシュのリストが表示されます。適切なものを取ります(ほとんどの場合、それはかなり明白である必要があり、通常は最新(つまりトップ)のものです)。

  2. アップストリームリポジトリで式が存在するURLを見つけます。

    brew info ‹formula› | grep ^From:
    
  3. URLを修正します。

    1. github.comraw.githubusercontent.comに置き換えます
    2. blob/masterを最初のステップで見つけたコミットハッシュに置き換えます。
  4. 以前に見つかったURLのmasterをコミットハッシュに置き換えて、目的のバージョンをインストールします。例:

    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 [email protected]
# 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 [email protected]を実行する必要があることです。

16
Konrad Rudolph

それ以降の更新された回答は、@ lance-pollardがすでに実用的な回答として投稿したものに追加されます。

式の特定のバージョンをインストールする方法(この例で使用されている式はterraform):

  1. 式ファイルを探します。例: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb またはリポジトリをローカルに複製した場合はgit log master -- Formula/terraform.rbを使用して、githubの履歴からコミットバージョンを取得します。
  3. あなたの式のコミットバージョンで生のgit URLを入手してください:github.comの式リンクが https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb の場合_、生のURLは https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb になります
  4. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rbでインストールしてください。
13
Miguel Reyes

自作の最新版(この記事を執筆している時点で0.9.5)では、インストールしたい自作樽のバージョンに合ったレシピがあります。例:

$ brew search mongodb
mongodb    mongodb24  mongodb26

それから通常どおりにbrew install mongodb26を実行してください。

最新版をすでにインストールしている場合は、必ず最新版のリンクを解除し、目的のバージョンのbrew unlink mongodb && brew link mongodb26をリ​​ンクしてください。

11
Alex Sharp

homebrew/versionsの問題は、あなたがそれを使用することができるようにするために誰かがその特定のバージョンのソフトウェアをリポジトリに記載しなければならないということです。また、brew versionsはサポートされなくなったため、別の解決策が必要です。 brew switchを使用することを示す解決策のために、バージョンがあなたのコンピュータに存在する必要があるのであなたがbrew cleanupをしなかったならば、これは働くだけです。

docker-machineにリストされていなかった特定の古いバージョンのhomebrew/versionsをインストールしたいという問題がありました。私は以下を使ってこれを解決しました。以下の例では、バージョン0.5.0から0.4.1にダウングレードするパッケージとしてdocker-machineを使用します。

  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にあることを私に伝えています

  2. パッケージの特定の式ファイル(.rb)を見つけます。 docker-machineをダウングレードしたいので、docker-machine.rbファイルを見ることができます。

  3. この式ファイルのバージョン履歴を取得する git log docker-machine.rbを入力してください。これにより、このファイルの完全なコミット履歴が一覧表示されます。あなたはこのような出力を見るでしょう:

 ... more 
 
 commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc 
作成者:BrewTestBot 
作成日:2015年11月5日16時14分18秒+ 00:00 ] 
 docker-machine:0.5.0ボトルを更新します。
 
 commit 8f615708184884e501bf5c16482c95eff6aea637 
作成者:Vincent Lesierse 
作成日:Tue Oct 27 22: 25:30 2015 + 0100 
 
 docker-machine 0.5.0 
 
 docker-machineを0.5.0に更新しました
 
 #45403を閉じます。
 [.____。サインオフ:Dominyk Tiller 
 
 commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423 
作成者:Mon Sep 21 14:04:04 2015 +0100 
 
 docker-machine:0.4.1ボトルを更新します。
 
 commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd 
著者:BrewTestBot 
日付:日Aug 16 09:05:56 2015 + 0100 
 
 docker-machine:更新0.4.1のボトル
 
    ...もっと

難しい部分は、あなたが望む特定のバージョンに対する最新のコミットを見つけることです。上記で、私は最新の0.4.1バージョンがこのコミットタグでコミットされたことを伝えることができます:commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423。これより上のコミットではバージョン0.5.0が使用されています(gitのログエントリは最新のものから順に記載されています)。

  1. 前のバージョンの式ファイルを入手します。 ステップ#3のコミットタグ(最初の6文字を使用できます)を使用すると、次のようにして古いバージョンの式ファイルを入手できます。

    git checkout 5970e1 docker-machine.rb

  2. 現在のパッケージバージョンをアンインストールします。 通常のbrewコマンドを実行して、現在のバージョンのパッケージをアンインストールするだけです。
    brew uninstall docker-machine

  3. 古いパッケージバージョンをインストールする これで、通常の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-machinebrew install docker-machineを使って最新バージョンを入手し、それを今後も継続することができます。

8
rchawdry

それは醸造の最後のバージョンのために非常に簡単にすることができました。

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)
7

これらのどれも私の場合(Python)に実際にはうまくいきませんでした、それで私は私の2セントを加えます

cd `brew --prefix`
git log Library/Formula/python.rb

出力は次のようになります。

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <[email protected]>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <[email protected]>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <[email protected]>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <[email protected]>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <[email protected]>
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
6
tenfishsticks

あなたがbrew search <formula>であなたのバージョンを見つけることができないなら、あなたはあなたが望むバージョンを見つけるためにあなたの式のためにコミットログを調べてみることもできます: 

これは、brew経由で古いバージョンのnginxをインストールするための例です。

そこから、shaと生のgitのURLで1.6.3をインストールできます。

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb

5
lfender6445

古いBrewパッケージバージョンをインストールします(Flyway 4.2.0の例)

あなたの地元の自作gitディレクトリを検索するか、自家製のhomebrew/homebrew-coreを複製してください。

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

OR

git clone [email protected]:Homebrew/homebrew-core.git

利用可能なすべてのバージョンを一覧表示する

git log master -- Formula/flyway.rb

必要なバージョンのコミットIDをコピーして直接インストールする

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Library/Formula/flyway.rb

3
ffghfgh

私はここで解決策のほとんどを試してみました、そしてそれらは時代遅れです。私はここからいくつかのアイデアを自分の作品と組み合わせる必要がありました。その結果、私はあなたが見つけることができる重いものをやるのを助けるためにスクリプトを作成しました ここ

使用法: brewv.sh formula_name desired_version

2
demosten

現在、特定の数式バージョンをインストールする古い方法は推奨されていません。だから私たちはbrew edit [formula]を使わなければならないようです。例えば。 62.1icu4cバージョンをインストールしたいとします(例えばpostgresql 10.5に必要です)。それならあなたはしなければならないでしょう 

> brew edit icu4c
# drops you to editor

ここでは、urlversion、および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バージョンをダウンロードします。

2
Emil Rehhnberg

私はちょうど古いリリースの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

それはそれです。多分それは誰にとっても役に立つでしょう。

1
Thaars

公式方式( https://github.com/Homebrew/brew/issues/6028 への回答から判断)

残念ながら、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 [email protected]
# 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、次にBashの特定のバージョン(または最新バージョンと古いバージョンがインストールされている場合はその他の式)を使用する場合はbrew link [email protected]を必要とすることです。 。

この方法の潜在的なマイナス面は、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/etcを参照)。この設定で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に配置するか、デフォルトのシェルとして設定してください。

1
dragon788

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

それが役立つことを願っています:)

1
mmrs151

現在デフォルトのBREW式にないバージョンでは、 https://github.com/buildtools-version-taps/homebrew-versions-tap-tool からツールを使用して独自のタップを簡単に作成できます

0
Lutzifer

私の判断に反して、homebrew/versionsにはなかったMaven 3.1.1の式を作成することにしました。これをする:

  1. 私はgithubでhomebrew/versionsをフォークしました。
  2. 私は$(brew --prefix)/Library/Tapsから自分のフォークのローカル作業コピーにシンボリックリンクを張った。これをmy-homebrew/versionsと呼びます。
  3. 式をmy-homebrew/versions/<formula>として指定してテストしました。
  4. 私は新しい式のためにhomebrew/versionsにpull requestを送りました。

わーい。

0