installation - with - homebrew versions was deprecated




Homebrew安裝特定版本的公式? (13)

如何在自製軟件中安裝特定版本的公式? 例如,postgresql-8.4.4而不是最新的9.0。



  1. 在braumeister.org上搜索您的軟件包。

  2. 看看結果。 你會在這樣的位置:

    http://braumeister.org/search/mysql

    mysql是你的搜索查詢。

  3. 點擊你感興趣的那個,例如“mysql”,導航到諸如http://braumeister.org/formula/mysql的位置。

  4. 查看頁面底部的修訂歷史記錄。 如果您對MySQL 5.7.10感興趣,您可能需要單擊5.7.11之前的最新版本,該版本導航至GitHub提交:

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

  5. 單擊“查看”按鈕查看應用提交後的mysql.rb文件的源代碼。

  6. 然後點擊“原始”按鈕查看原始來源。

  7. 複製網址。

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

  8. 安裝它:

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

十分簡單。


homebrew/versions的問題在於,某人必須擁有存儲庫中列出的特定版本的軟件才能使用它。 此外,由於不再支持brew versions ,因此需要另一種解決方案。 對於表示使用brew switch解決方案,只有在您的計算機上存在版本時才進行brew cleanup ,這將僅適用。

我想要安裝未列在homebrew/versions的特定版本的docker-machine 。 我用下面的方法解決了這個問題,它也適用於任何安裝了brew的軟件。 下面的例子將使用docker-machine作為我想從版本0.5.0降級到0.4.1的軟件包。

  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

  2. 找到您的軟件包的特定公式文件(.rb)。 由於我想降級docker-machine ,我可以看到一個docker-machine.rb文件。

  3. 獲取此公式文件的版本歷史記錄 。 輸入git log docker-machine.rb 。 這將列出此文件的完整提交歷史記錄。 你會看到這樣的輸出:

    ...more 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Author: BrewTestBot 
    Date:   Thu Nov 5 16:14:18 2015 +0000

        docker-machine: update 0.5.0 bottle.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Author: Vincent Lesierse 
    Date:   Tue Oct 27 22:25:30 2015 +0100

        docker-machine 0.5.0

        Updated docker-machine to 0.5.0

        Closes #45403.

        Signed-off-by: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Author: BrewTestBot 
    Date:   Mon Sep 21 14:04:04 2015 +0100

        docker-machine: update 0.4.1 bottle.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Author: BrewTestBot 
    Date:   Sun Aug 16 09:05:56 2015 +0100

        docker-machine: update 0.4.1 bottle.

    ...more

棘手的部分是找到你想要的特定版本的最新提交。 在上面,我可以告訴最新的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安裝命令,它將安裝您已結算的公式。 防爆。 brew install docker-machine

如有必要,您可能需要使用brew link docker-machine重新鏈接。

如果在任何時候想要恢復到特定軟件包的最新版本,請進入公式目錄並在公式文件(.rb)上發出以下命令

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

然後,您可以brew uninstall docker-machinebrew install docker-machine以獲取最新版本,並保持這種狀態。



在最新版本的自製軟件(在撰寫本文時為0.9.5)時,將會為您想要安裝的自製軟件包的版本提供特定的配方。 例:

$ brew search mongodb
mongodb    mongodb24  mongodb26

然後,就像正常一樣,做brew install mongodb26

如果您已安裝最新版本,請確保取消鏈接最新版本並鏈接所需版本: brew unlink mongodb && brew link mongodb26


基於@tschundeee@ Debilski的更新1描述的工作流程,我自動執行了該過程並在該腳本中添加了清理。

下載它 ,把它放在你的路徑和brewv <formula_name> <wanted_version> 。 對於具體的OP,它將是:

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

:)


將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

希望幫助:)


對於最後一個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)

我發現了一個更好的替代方案,然後是其他復雜的解決方案

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

這將下載並安裝PostgreSQL 8.4.8

我通過開始按照搜索回購和回購comment的步驟找到了這個解決方案。

經過一些研究發現,有人收集稀有的配方奶粉。

如果您在尋找MySQL 5.1.x,請嘗試一下。

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

更新後的答案增加了@ lance-pollard已發布的工作答案。

如何安裝特定版本的公式(本例中使用的公式是terraform ):

  1. 找到你的配方文件,例如: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rbhttps://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rbgit log master -- Formula/terraform.rb獲取github的歷史記錄提交版本,如果你已經在本地克隆了repo。
  3. 使用公式的提交版本獲取原始git URL:如果github.com中的公式鏈接是https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb ,那麼您的原始URL將會be: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb : 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

沿著@半立方體的建議,這種方法非常有效:

  1. 通過https://github.com/mxcl/homebrew/tree/master/Library/Formula找到您要找的圖書館
  2. 點擊它: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rbhttps://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. 點擊“歷史記錄”按鈕查看舊的提交: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rbhttps://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. 點擊你想要的:“postgresql:update version to 8.4.4”, https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. 點擊“原始”鏈接: https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rbhttps://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

現在有一種更簡單的方法來安裝先前安裝的舊版公式的舊版本。 簡單使用

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的進一步文檔。


這些都不適合我的情況(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 (或cf5da05cf5da05 )。 接下來,我查看該版本並安裝公式python

git checkout cf5da05
brew install python

最後,清理:

git checkout master