如何使用Homebrew安装旧版本

67
我正在尝试安装旧版本的memcached(例如1.4.5),但我不确定如何操作。
使用brew install memcached命令可以安装最新版本。
我还尝试了brew install memecached1.4.5,但是没有成功。

14
可能是Homebrew安装特定版本的公式?的重复。 - Alexander O'Mara
这里涵盖了以下问题的答案: https://dev59.com/NW865IYBdhLWcg3wFqrY - François DELAGE
这个回答对我没用,这个可以。 - gregfqt
6个回答

163

通常情况下,您可以检查是否有多个版本,并使用 @ 指定版本。例如:brew install package@2.8

$ brew info memcached

memcached: stable 1.4.24
High performance, distributed memory object caching system
https://memcached.org/
Conflicts with:
  mysql-cluster (because both install `bin/memcached`)
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/memcached.rb
...
如果你想要的版本没有提供,你可以前往仓库并查看历史记录。
cd "$(brew --repo homebrew/core)"
git log master -- Formula/memcached.rb

然后你就可以找到你要查找的提交

commit 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
Author: Adam Vandenberg <flangy@gmail.com>
Date:   Fri Apr 9 21:19:48 2010 -0700

    Update memcached to 1.4.5

检查该版本并安装:

cd "$(brew --repo homebrew/core)" && git checkout 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
HOMEBREW_NO_AUTO_UPDATE=1 brew install memcached

安装成功后:

git checkout master  # bring brew back to its latest version
brew pin memcached   # [optional] prevent formula from updating

就是这样了!


1
如果您已经安装了它,您可能需要执行 HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade memcached - Simon Woodside
22
好的,我会尽力为您提供准确的翻译。这个方法可以用,但我觉得这个过程应该更简单一些。安装旧版本并不是一个不常见的需求。 - jvans
2
这是一个救命的配方,干得好!! - Karol Z
6
若要查看完整的日志,可能需要运行命令 git -C "$(brew --repo homebrew/core)" fetch --unshallow,因为 Homebrew 默认只克隆了该存储库的部分历史记录。 - Philip
10
另外,brew pin memcached 将防止其在未来自动升级。 - Philip
非常感谢您,这真是救命稻草。 顺便说一下,这是一个非常滑稽可笑的解决方案,用于最基本的软件包管理器使用。 - Robin Kurosawa

11
这在2019年有效。
brew unlink memecached
brew install memecached@1.4.5
brew link memecached@1.4.5 --force

10
在 GitHub 上搜索中... 错误:在 taps 中未找到任何公式。 - wakedeer
@Madeo,你要安装的公式名称是什么?也许你需要先添加它们的外部存储库到brew中(Tapping意味着将它们的外部存储库添加到brew中)。 - Radu Chiriac

3

2021年更新:

$ curl https://raw.githubusercontent.com/Homebrew/homebrew-cask/<commit-hash>/Casks/<FORMULA>.rb > $(find $(brew --repository) -name <FORMULA>.rb)
$ brew reinstall <FORMULA>

您可以在此处找到cask或formula文件的URL,提交信息应描述要获取URL的文件版本。

https://github.com/Homebrew/homebrew-core/commits/master/Formula/<formula>.rb
https://github.com/Homebrew/homebrew-cask/commits/master/Casks/<cask>.rb

来源:https://remarkablemark.org/blog/2017/02/03/install-brew-package-version/

如何安装 Homebrew 的旧版本?

如果你需要安装 Homebrew 的旧版本,可以使用以下命令:

cd "$(brew --repo)" && git fetch && git checkout 2.3.0

这将使 Homebrew 版本降至 2.3.0。你可以将 "2.3.0" 替换为任何其他版本号。


1
这里有一些现场记录:第一个代码片段中的第一个“curl”确实是“cask”,如果需要,请使用第二个片段进行修改。另外,您不必复制整个提交“哈希值”,7个字符就足够了。 - Dr1Ku

2
Adrian的好答案的更详细版本也在SO上。

https://dev59.com/NW865IYBdhLWcg3wFqrY#53766019

需要记住的一件事是,如果您正在安装一个较旧的公式,则 Homebrew API/methods 自那时以来可能已更改,因此如果在执行答案中的 `brew extract` 命令后尝试 `brew install app@your.version` 时遇到任何错误,您应该针对当前版本编辑 `brew edit appFormula` 并与 `brew edit app@your.version` 进行比较。

1

我分享了一个互动式的一行代码,这是我根据Adrian答案创建的:

它对 "From" 在brew info中的内容进行简单解析,并且只依赖于 github URL 中的 "/blob/",然后使用 bash selectgit log 中选择提交。

brew install 可以根据需要替换为 brew reinstall

macOS (High Sierra) 10.13.6上,在bash 5.1(来自 macports ;P)和 env -i /bin/bash 3.2下测试(针对 cask "name=powershell"),并且针对 brew 3.3.11 进行了测试。(我可能在几天前做了一些 tap'ing。)

(name= && { [[ $name ]]||read -ep "Name: " name;} && [[ $(brew info "$name"|sed -Ene'/^From: (.*)/s//\1/p') =~ ([^/]*)/blob/([^/]*)/([^/]*)/([^/]*) ]] && V=("${BASH_REMATCH[@]:1}") && N=(repo current dir file) && for s in ${!N[@]};do eval "${N[s]}=\${V[s]}" && declare -p >&2 "${N[s]}";done && cd "$(brew --repo "${repo//-//}")" && IFSO="$IFS" && IFS=$'\n' && select line in $(git log --oneline master -- "$dir/$file");do IFS="$IFSO" && commit=($line) && break;done && set -x && git checkout "$commit" && HOMEBREW_NO_AUTO_UPDATE=1 brew install "$name" && git checkout master)

干杯,salud,cheers!


1
如果您正在寻找的版本已经从Homebrew存储库中删除
  1. 在Homebrew存储库中找到公式。例如,我需要solr
  2. 转到文件历史记录并找到所需版本。例如,我需要solr 8.11.2
  3. 获取文件的原始链接并将其本地化。对于我的情况:
    curl -o /tmp/solr.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/8400730997ae589261783a1973896d2c3cdd6791/Formula/solr.rb
    
  4. 安装公式,但确保关闭自动更新。对于我的情况:
    HOMEBREW_NO_AUTO_UPDATE=1 brew install --formula /tmp/solr.rb
    
  5. 固定公式,以防止意外更新。对于我的情况:
    brew pin solr
    
  6. 按照Homebrew的常规说明操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接