如何在自制程序中安装特定版本的公式?例如,postgresql-8.4.4而不是最新的9.0。


当前回答

以下是我如何降级KOPS(不支持版本控制)

# brew has a git repo on your localhost
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core

git remote -v
origin  https://github.com/Homebrew/homebrew-core (fetch)
origin  https://github.com/Homebrew/homebrew-core (push)

# find the version of kops.rb you need
git log Formula/kops.rb

# checkout old commit
# kops: update 1.18.1 bottle.
git checkout 2f0ede7f27dfc074d5b5493894f3468f27cc73f0 -- Formula/kops.rb

brew unlink kops
brew install kops

# now we have old version installed
ls -1 /usr/local/Cellar/kops/
1.18.1
1.18.2

which kops
/usr/local/bin/kops
ls -l /usr/local/bin/kops
/usr/local/bin/kops -> ../Cellar/kops/1.18.1/bin/kops
kops version
Version 1.18.1

# revert to the newest version
brew uninstall kops
git checkout -f
brew link kops
kops version
Version 1.18.2

其他回答

目前,安装特定公式版本的旧方法已被弃用。因此,我们似乎必须使用brew edit[公式]。例如,假设我们要安装icu4c的62.1版本(例如postgresql10.5需要)

> brew edit icu4c
# drops you to editor

在这里,您必须将url、version和sha256(可能也是镜像)更改为相应的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重新安装icu4c,最终下载62.1版本。

意外升级Postgres?

我的案例:

postgresql意外地从11升级到12(在运行brew升级后没有参数)我想让Postgres保持11岁。

解决方案:

停止数据库:

brew services stop postgresql

安装Postgres 11:

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

⚠ 这个答案在2020年12月后不再有效:在HomeBrew 2.7.0中禁用了brew开关(2.6.0中已弃用)


对于2.7之前的Homebrew版本:

现在有一种更简单的方法来安装以前安装的公式的旧版本。简单使用

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开关只是更改符号链接,所以速度非常快。请参阅外部命令下Homebrew Wiki的更多文档。

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

最接近@Lance的答案,但这对我来说并不奏效,在2023年,使用M1macOS13并尝试安装特定版本的opencv@4.

底线是:您应该用brew的GitHub repo中找到的远程opencv.rb文件的内容覆盖本地opencv.r文件的内容,该文件对应于您要安装的opencv版本。

本质上,我们希望更新包的.rb文件中的url和sha256。但是sha256在opencvReleases Github页面上不可用,在本地创建sha256会给我带来校验和错误。但是从提交历史记录中获取.rb文件可以解决这个问题。

分解:5个简单步骤

首先卸载包:brew卸载opencv@4查找要安装的软件包的正确版本的.rb文件在Github上的Homebrew>Homebrew core>Formula下搜索在opencv.rb文件的历史记录中:https://github.com/Homebrew/homebrew-core/commits/master/Formula/opencv.rb选择与所需版本相对应的提交,例如opencv:update 4.6.0_1 bottle。和查看文件。复制/下载文件的内容在系统上打开.rb文件:breweditopencv@4用从Github下载的文件替换此文件的内容使用.rb文件路径再次安装软件包:brew Install/opt/homebrew/Library/Taps/homebrew/homebrew core/Formula/oppencv.rb

这对我来说非常有效,然而,@Lance使用brew install的回答给出了一个错误:您的命令行工具(CLT)不支持macOS 13。

其他答案对我来说也不管用。