Homebrew安装特定版本的公式

38

具体来说,是关于 kubernetes-cli 的。我已安装了1.12.0版本,但我需要1.11.x版本,但我没有安装。

我已经查看并尝试了此线程中的每个答案,但没有任何效果:Homebrew install specific version of formula?

我尝试了 brew search 但没有安装版本:

~ brew search kubernetes-cli
==> Formulae
kubernetes-cli ✔

我尝试了brew versions,但该命令已被删除:

~ brew versions 
Error: Unknown command: versions

我已经尝试过brew install kubernetes-cli@1.11.0,以及 .1 和 .2:

~ brew install kubernetes-cli@1.11.0
Error: No available formula with the name "kubernetes-cli@1.11.0" 
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

brew switch 要求我已安装旧版本,但我没有安装。

~ brew switch kubernetes-cli 1.11.0
Error: kubernetes-cli does not have a version "1.11.0" in the Cellar.
kubernetes-cli installed versions: 1.12.0

这并不是回答这个问题的确切方法,但如果有人想要安装特定版本的kubernetes-cli,按照https://kubernetes.io/docs/tasks/tools/install-kubectl/中的步骤比下面提到的任何答案都要容易得多。 - ashish malgawa
Homebrew 现在通常不再支持安装旧软件包,因此您最好使用类似于 https://macports.org、https://github.com/LnL7/nix-darwin 或 https://pkgsrc.joyent.com 的工具。 - Pierz
8个回答

32
  1. 前往 homebrew git 仓库: https://github.com/Homebrew/homebrew-core/
  2. 查找与 kubernetes 1.11.x 版本相关的提交(commit)
  3. 进入 Formula 文件夹
  4. 打开 kubernetes-cli.rb 文件的原始版本(raw version)
  5. 复制文件的原始链接 https://raw.githubusercontent.com/Homebrew/homebrew-core/3e8f5503dde7069c5ff49b82d5e1576e6ebe3a5d/Formula/kubernetes-cli.rb
  6. 运行命令 brew install <raw_link>

2
我使用了以下指令 brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/41764e07727d9a86b0f8a077117dc7876ca294c4/Formula/kubernetes-cli.rb 以及相关指南来安装 v.1.11.3。 - GrandAdmiral
1
我使用了此处和@Erik K下面的答案的组合来安装较早版本的kubernetes-helm。应将Erik的答案并入此答案中,取代“识别提交”的步骤。 - Chuck Wilbur
9
最近的自制版本显然已经取消了通过原始链接安装的支持。无效用法:不支持从GitHub提交URL安装activemq! - Harish
5
我使用brew install kubernetes-cli@1.22进行安装,但是出现了以下错误:brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/75b367efca10dece21b2d68c55f45f6f0320d56f/Formula/kubernetes-cli.rb 运行 brew update --preinstall... 错误:不支持从GitHub提交网址安装kubernetes-cli!请在GitHub上从一个稳定的tap中提取kubernetes-cli。您可以尝试使用brew extract kubernetes-cli命令。 - Miguel Reyes
1
你可以查看这个指南:https://cmichel.io/how-to-install-an-old-package-version-with-brew/ - bertonc96
显示剩余2条评论

25

我没有足够的声望在帮助我的答案上发表评论。所以写在这里更具体地说明@urpalreloaded的第2点

  1. brew search --pull-request kubernetes-cli@1.11.0
  2. 它会说找不到这个,但应该会给你一个链接到匹配你搜索的版本的已关闭pull request。跟随链接到pull request,然后按照步骤3-5执行。
  3. brew unlink kubernetes-cli
  4. brew install <raw-link>

FWIW,我认为brew不保留版本是因为它会使存储库太大?这个解决方法很不方便,也许他们可以找到一种解决这个问题的方法?


哇!谢谢。这确实简化了一个真正令人头痛的过程。 - Giacomo1968
请记得提供原始文件的URL,否则在运行brew install时会出现语法错误。 - tharinduwijewardane
第一步对我来说返回了 ==> Formulae kubernetes-cli@1.22... - Mark
似乎您需要添加 --pull-request。我会更新答案。 - Erik K

3

以上的回答非常有用,但是当我尝试在我的Sierra 10.12.6机器上安装Carthage 0.30.1时,出现了SHA256不匹配的错误:

$ brew install https://raw.githubusercontent.com/ilovezfs/homebrew-core/8c93668a451087611b2247cafe02ad6f867daed6/Formula/carthage.rb --force-bottle
######################################################################## 100.0%
Warning: carthage 0.32.0 is available and more recent than version 0.30.1.
==> Downloading https://homebrew.bintray.com/bottles/carthage-0.30.1.sierra.bottle.tar.gz
######################################################################## 100.0%
Error: SHA256 mismatch

然后由于最新的Sierra Xcode不支持新的Xcode构建系统,它无法从源代码构建。

对我有用的方法是直接从瓶子中安装(URL在第一个brew install <raw url>输出中显示):

brew install https://homebrew.bintray.com/bottles/carthage-0.30.1.sierra.bottle.tar.gz

1

我和dsjapan遇到了同样的问题,解决方法是更改为High Sierra系统:

brew unlink carthage
brew install https://homebrew.bintray.com/bottles/carthage-0.30.1.high_sierra.bottle.tar.gz

1

我找到了一种方法,可以同时升级和降级任何因废弃而被禁用的公式。
(基本上我按照这个指南的步骤,并设置了一个额外的brew环境变量

在我的案例中,我执行了以下操作,从 1.22.16 升级到 1.22.17(废弃之前的最新版本):

  1. 运行:
brew edit kubernetes-cli@1.22

评论这行以disable! date开头的代码。
# disable! date: "2022-10-28", because: :deprecated_upstream

3. 运行:
HOMEBREW_NO_INSTALL_FROM_API=1 brew upgrade kubernetes-cli@1.22

要回滚或安装其他版本,请按照以下步骤继续:
  1. 将所有行替换为您想要的版本中的所有行, 可以通过提交历史轻松找到(在提交中点击... -> 查看文件)或者:
brew log kubernetes-cli@1.22

3. 运行:
HOMEBREW_NO_INSTALL_FROM_API=1 brew reinstall kubernetes-cli@1.22

0
截至2022年4月:
我发现最简单的方法是创建一个新标签页

0

对于特定的 kubernetes-cli(如果您不关心修补程序版本-在1.11.x中的x),您可以直接使用:

brew install kubernetes-cli@1.11

它将会使用最新的x版本完成。


0
这是我安装旧版本的kubectl(1.27.4)的步骤:
brew unlink kubernetes-cli
brew tap-new $USER/local-kubernetes-cli
brew extract --version=1.27.4 kubernetes-cli $USER/local-kubernetes-cli
brew install kubernetes-cli@1.27.4

安装过程花了几分钟,期间遇到了一个关于“md5sha1sum”被锁定的错误,因此无法安装kubectl,因为需要降级该软件包。 使用以下命令进行修复:
brew unlink md5sha1sum

感谢用户bertonc96提供的指南链接。

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