Go to your homebrew Formula directory. 您可以通过运行 brew info [any package name] 来确定 . 例如, brew info docker-machine 给了我一条显示路径的行 - /usr/local/Cellar/docker-machine/0.5.0 . 这告诉我,在我的机器上,自制软件安装在 /usr/local ,我的 Formula 目录默认位于 /usr/local/Library/Formula
Locate the specific formula file (.rb) for your package. 由于我想降级 docker-machine ,我可以看到 docker-machine.rb 文件 .
Get the version history for this formula file . 输入 git log docker-machine.rb . 这将列出此文件的完整提交历史记录 . 你会看到这样的输出:
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 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
在 August 2011 and October 2014 之间,自制软件有一个 brew versions 命令,它用各自的SHA哈希值吐出所有可用的版本 . 截至2014年10月,您必须先使用 brew tap homebrew/boneyard 才能使用它 . 正如水龙头的名称所暗示的,你应该只做这个作为最后的手段 .
# 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
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
20 回答
homebrew/versions
的问题是,某人必须在存储库中列出该特定版本的软件才能使用它 . 此外,由于不再支持brew versions
,因此需要另一种解决方案 . 对于指示使用brew switch
的解决方案,仅当您尚未执行brew cleanup
时才会起作用,因为您的计算机上需要存在该版本 .我有一个问题,想要安装
docker-machine
的特定旧版本docker-machine
. 我使用下面的解决方案,这也应该适用于任何brew安装的软件 . 下面的示例将使用docker-machine
作为我想要从0.5.0版降级到0.4.1的包 .Go to your homebrew Formula directory.
您可以通过运行
brew info [any package name]
来确定 . 例如,brew info docker-machine
给了我一条显示路径的行 -/usr/local/Cellar/docker-machine/0.5.0
. 这告诉我,在我的机器上,自制软件安装在/usr/local
,我的Formula
目录默认位于/usr/local/Library/Formula
Locate the specific formula file (.rb) for your package. 由于我想降级
docker-machine
,我可以看到docker-machine.rb
文件 .Get the version history for this formula file . 输入
git log docker-machine.rb
. 这将列出此文件的完整提交历史记录 . 你会看到这样的输出:棘手的部分是找到您想要的特定版本的最新提交 . 在上面,我可以告诉使用此提交标记提交的最新0.4.1版本:
commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. 上面提交的提交开始使用版本0.5.0(git日志条目从最新到最早的日期列出) .git checkout 5970e1 docker-machine.rb
Uninstall your current package version. 只需运行正常的brew命令即可卸载当前版本的软件包 .
防爆 .
brew uninstall docker-machine
Install the older package version 现在,您可以运行正常的brew install命令,它将安装您已签出的公式 . 防爆 .
brew install docker-machine
如有必要,您可能需要使用_309749重新链接 .
如果您想在任何时候恢复到特定软件包的最新版本,请进入公式目录并在公式文件(.rb)上发出以下命令
然后你可以
brew uninstall docker-machine
和brew install docker-machine
获得最新版本并保持这种方式向前发展 .对于当前不在默认brew配方中的版本,您可以使用https://github.com/buildtools-version-taps/homebrew-versions-tap-tool中的工具轻松创建自己的水龙头
简单的工作流程
现在Homebrew / versions已被弃用,Homebrew / core支持具有新命名格式的多个公式版本 .
要安装特定版本,例如postgresql 9.5你只需运行:
要列出可用版本,请使用@进行搜索:
它可以很容易地完成最后一个版本的brew .
根据我的判断,我决定为Maven 3.1.1创建一个
homebrew/versions
没有的公式 . 去做这个:我在github上分叉
homebrew/versions
.我从
$(brew --prefix)/Library/Taps
符号链接到我的fork的本地工作副本 . 我会称之为my-homebrew/versions
.我通过将公式指定为
my-homebrew/versions/<formula>
进行了测试 .我发送拉动请求到
homebrew/versions
为我的新公式 .好极了 .
我发现了一种比其他复杂解决方案更好的替代解决方案 .
这将下载并安装PostgreSQL 8.4.8
我通过开始按照在仓库中搜索仓库和comment的步骤找到了这个解决方案 .
经过一番研究发现,有人收集了一批稀有的配方奶粉 .
如果您正在寻找MySQL 5.1.x,请尝试一下 .
您可以使用在公式的历史记录中标识公式和特定提交的策略,该策略与您要安装的软件包的版本相匹配 .
转到https://github.com/Homebrew/homebrew-core
按键盘上的
t
以激活文件查找器 .确定一个看起来最相关的公式,可能是:
Formula/mysql.rb
,将您带到forumla文件位置:https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .单击
History
按钮查看修订历史记录,该按钮位于https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . 如果您对MySQL 5.7.10感兴趣,可能需要单击5.7.11之前的最新版本,该版本导航到GitHub提交:https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb
注意:如果在浏览器中未加载提交历史记录,则可能必须根据GitHub的建议在控制台中查看提交历史记录 . 如果您有兴趣在GitHub上看到该提交,请替换URL中的提交SHA . 或者,跳到下面的步骤7 .
单击“查看”按钮可在应用提交后查看mysql.rb文件的源 .
然后单击“原始”按钮以查看原始源 .
复制URL . 或者,使用
mysql.rb
文件名自己构建URL以标识您的公式和该公式的特定版本(由下面的URL中的commmit SHA标识) .https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
$ brew install [URL from step 7]
安装注意:此答案已更新,以说明删除braumeister.org网站的原因 . 同样的原则适用,braumeister只是提供了一种初学者友好的方式来导航公式版本 .
安装旧的brew包版本(Flyway 4.2.0示例)
在本地找到您当地的自制git目录或克隆Homebrew / homebrew-core
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
要么
git clone git@github.com: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
自那以后更新的答案增加了@ lance-pollard已经发布的工作答案 .
如何安装特定版本的公式(此示例中使用的公式为
terraform
):找到您的公式文件,例如:https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
如果您已在本地克隆了repo,请使用https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb或
git log master -- Formula/terraform.rb
从github的历史记录中获取提交版本 .使用公式的提交版本获取原始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
安装时间:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
我刚刚使用Homebrew回到Maven 2.2.1,因为简单的
brew install maven
安装了Maven 3.0.3 .首先,你必须离开maven目录
使用brew tap命令
现在您可以安装maven2公式:
Edit: 您也可以
brew switch maven 2.2.1
切换到其他版本 .Edit: Apache Maven项目重组了他们的回购 . 更新了此答案以解释此更改 .
这些都不适合我的情况(Python),所以我将加上我的2美分:
输出看起来像这样:
python:澄清pour_bottle的原因
提交cb3b29b824a264895434214e191d0d7ef4d51c85
作者:BrewTestBot brew-test-bot@googlegroups.com
日期:星期三六月29日14:18:40 2016 0100
python:更新2.7.12瓶 .
提交45bb1e220341894bbb7de6fd3f6df20987dc14f0
作者:Rakesh rakkesh@users.noreply.github.com
日期:2016年6月29日星期三10:02:26 2016 0530
python 2.7.12
关闭#2452 .
签名:Tim D. Smith git@tim-smith.us
commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
作者:BrewTestBot brew-test-bot@googlegroups.com
日期:星期六6月17日20:14:36 2016 0100
python:更新2.7.11瓶 .
...
我想版本
2.7.11
所以我的哈希是cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(或简称cf5da05
) . 接下来,我查看该版本并安装公式python
:最后,清理:
如果使用
brew search <formula>
找不到您的版本,您还可以尝试查看公式的提交日志以查找所需的版本:这是一个通过brew安装旧版nginx的示例:
ngxnx formula commit log
见
nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
从那里,我们可以使用sha和raw git url安装
1.6.3
:brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
库/ Formula / postgresql.rb第8行更新到
和MD5在9号线上
保存并退出 .
现在在这个阶段你可能会遇到
postgresql could not create shared memory segment
错误,要解决这个更新/etc/sysctl.conf
,如下所示:再次尝试
initdb /usr/local/var/postgres
,它应该运行顺利 .在start上运行postgresql
希望有所帮助:)
基于@tschundeee和@Debilski’s update 1描述的工作流程,我自动化了该过程并在this script中添加了清理 .
Download it,把它放在你的路径
brewv <formula_name> <wanted_version>
. 对于特定的OP,它将是::)
按照@ halfcube的建议,这非常有效:
在https://github.com/Homebrew/homebrew-core/tree/master/Formula找到您要找的库
点击:https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
单击"history"按钮查看旧提交:https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
单击您想要的那个:"postgresql: update version to 8.4.4",https://github.com/Homebrew/homebrew-core/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
点击"raw"链接:https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
更新: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
从这个gist
(我已经重新编辑了我的答案,为安装/使用旧版本的自制软件提供了更全面的工作流程 . 如果您发现旧版本更好,请随意添加备注 . )
让我们从最简单的情况开始:
1)检查版本是否已安装(但未激活)
当自制软件安装新公式时,它会将其放在像
/usr/local/Cellar/postgresql/9.3.1
这样的版本化目录中 . 然后,仅全局安装指向此文件夹的符号链接 . 原则上,这使它很漂亮易于在两个已安装的版本之间切换 . (*)如果您已经使用自制程序更长时间并且从未删除旧版本(例如使用
brew cleanup
),那么您的程序的某些旧版本可能仍然存在 . 如果您只想激活之前的版本,brew switch
是最简单的方法 .检查
brew info postgresql
(或brew switch postgresql <TAB>
)是否安装了旧版本:我们看到已经安装了一些旧版本 . 我们可以使用
brew switch
激活它:让我们仔细检查激活的内容:
请注意,星号
*
已移至新激活的版本(*)请注意,只要旧版本的所有依赖项仍然存在,
brew switch
才有效 . 在某些情况下,可能需要重建旧版本 . 因此,当人们想要在不太远的两个版本之间切换时,使用brew switch
非常有用 .2)检查版本是否可用作点按
特别是对于较大的软件项目,很可能对某个软件的几个(可能是API不兼容的)主要版本有足够高的需求 . 截至2012年3月,Homebrew 0.9为此提供了一种机制:
brew tap
&homebrew versions存储库 .该版本存储库可能包含几个公式的旧版本的后端 . (大多数只是大而着名的,但当然他们也会有几个postgresql公式 . )
brew search postgresql
会告诉你在哪里看:我们可以通过输入简单地安装它
请注意,这已自动点击了
homebrew/versions
点击 . (使用brew tap
检查,使用brew untap homebrew/versions
删除 . )以下内容相同:只要向后移植的版本公式保持最新,这种方法可能是处理旧软件的最佳方法 .
3)尝试过去的一些公式
列出了以下方法,主要是为了完整性 . 两者都尝试从brew存储库中复活一些不死的公式 . 由于更改了依赖关系,公式规范中的API更改或只是更改了下载URL,因此可能会或可能不会起作用 .
由于整个公式目录是一个git存储库,因此可以使用plain git命令安装特定版本 . 但是,我们需要找到一种方法来获取旧版本可用的提交 .
a) historic times
在 August 2011 and October 2014 之间,自制软件有一个
brew versions
命令,它用各自的SHA哈希值吐出所有可用的版本 . 截至2014年10月,您必须先使用brew tap homebrew/boneyard
才能使用它 . 正如水龙头的名称所暗示的,你应该只做这个作为最后的手段 .例如 .
如您所见,它建议不要使用它 . Homebrew通过其内部启发式吐出所有可以找到的版本,并向您显示检索旧公式的方法 . 我们来试试吧 .
既然安装了较旧的postgresql版本,我们可以重新安装最新的公式,以保持我们的存储库清洁:
brew switch
是你在新老之间改变的朋友 .b) prehistoric times
对于特殊需求,我们也可以尝试自己挖掘自制回购 .
git log -S
查找在文件Library/Formula/postgresql.rb
中添加或删除字符串'8.4.4'
的所有提交 . 结果我们得到了两次提交 .显然,
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
是我们感兴趣的提交 . 由于这个提交很旧,我们会尝试降级完整的自制软件安装(这样,公式API或多或少保证有效):您可以跳过最后一个命令以将引用保留在git存储库中 .
一个注意事项:当签出旧提交时,您暂时降级自制软件安装 . 因此,您应该小心,因为自制程序中的某些命令可能与最新版本不同 .
4)手动编写公式
这不是太难,你可以将它上传到Homebrew-Versions .
A.)奖金:固定
如果你想保留某个版本,比如postgresql,并在你做自然的
brew update; brew upgrade
程序时阻止它被更新,你可以固定一个公式:固定公式列在
/usr/local/Library/PinnedKegs/
中,一旦您想引入最新的更改和更新,您可以再次取消固定:在最新版本的自制软件(撰写本文时为0.9.5)中,您将要安装自制软件桶的特定配方 . 例:
然后就像正常一样做
brew install mongodb26
.如果您已安装最新版本,请确保取消链接最新版本并链接所需版本:
brew unlink mongodb && brew link mongodb26
.我刚刚将一个旧版本的elasticsearch复制到
/usr/local/Cellar/elasticsearch
目录中 .而已 . 也许它对任何人都有用 .
现在有一种更简单的方法来安装以前安装的旧版本的公式 . 简单地使用
例如,我经常在Node.js 0.4.12和 . 之间交替0.6.5:
由于
brew switch
只是更改了符号链接,因此速度非常快 . 请参阅External Commands下的Homebrew Wiki上的更多文档 .