我如何酿造特定版本的链接?

jrw*_*ren 153 homebrew

我有同样的包几小桶中/usr/local/Cellar/libfoo一样/usr/local/Cellar/libfoo/1.0.1,/usr/local/Cellar/libfoo/HEAD/usr/local/Cellar/libfoo/mycopy

如何刷新特定版本的链接?

Sim*_*onW 298

使用信息:

Usage: brew switch <formula> <version>
Run Code Online (Sandbox Code Playgroud)

例:

brew switch mysql 5.5.29
Run Code Online (Sandbox Code Playgroud)

您可以找到系统上安装的版本info.

brew info mysql
Run Code Online (Sandbox Code Playgroud)

要查看要安装的可用版本,您可以提供dud版本号,因为brew将使用可用的版本号进行响应:

brew switch mysql 0
Run Code Online (Sandbox Code Playgroud)

更新(15.10.2014):

brew versions命令已从brew中删除,但是,如果您确实希望首先运行此命令brew tap homebrew/boneyard.

安装旧版本的推荐方法是从homebrew/versionsrepo 安装,如下所示:

$ brew tap homebrew/versions
$ brew install mysql55
Run Code Online (Sandbox Code Playgroud)

有关安装旧版本公式的所有方法的详细信息,请阅读此答案.

  • 现在“switch”已被弃用。 (3认同)
  • 您仍然需要链接已安装的版本并使用以下命令覆盖当前链接:brew link --overwrite mysql55 (2认同)
  • 不幸的是,`brew tap homebrew/versions` 现在给我一个错误`Error: homebrew/versions was deprecated。这个水龙头现在是空的,因为它的所有公式都被迁移了` ` (2认同)
  • versions 已弃用,所以我认为剩下的唯一方法是找到旧公式并从直接 URL 安装它 (2认同)

jrw*_*ren 12

我在#machomebrew中询问并了解到你可以使用brew开关在版本之间切换.

$ brew switch libfoo mycopy 
Run Code Online (Sandbox Code Playgroud)

获取libfoo的版本mycopy.


jac*_*blk 11

遗憾的brew switch是,在Homebrew 2.6.0(2020 年 12 月)中已弃用

$ brew switch
Error: Unknown command: switch
Run Code Online (Sandbox Code Playgroud)

TLDR,切换到package版本10

$ brew switch
Error: Unknown command: switch
Run Code Online (Sandbox Code Playgroud)

要使用另一个版本的包,例如node

  • 首先,确保使用brew list. 我这里的包裹是node(16) 和node@14.
?  ~ brew list
==> Formulae
node
node@14

?  ~ node -v
v16.1.0
Run Code Online (Sandbox Code Playgroud)
  • 取消链接当前包:brew unlink node
?  ~ brew unlink node
Unlinking /usr/local/Cellar/node/16.1.0... 7 symlinks removed.
Run Code Online (Sandbox Code Playgroud)
  • 链接正确的版本
?  ~ brew link node@14
Linking /usr/local/Cellar/node@14/14.16.1_1... 3857 symlinks created.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/node@14/bin:$PATH"' >> ~/.zshrc
?  ~ node -v
v14.16.1
Run Code Online (Sandbox Code Playgroud)


Sim*_*mba 6

Homebrew 删除了Homebrew 2.6.0brew switch中的子命令。从这里拿回来。

brew tap laggardkernel/tap
brew switch --help
Run Code Online (Sandbox Code Playgroud)

名称@版本公式

切换到旧版本应用程序主要有两种方法。

如果是较大的版本更改。Homebrew 可能已在存储库中创建了版本控制包。就像go、一样go@1.10,它们是两个不同的公式,安装在两个不同的位置。

# install the old one
brew install go@1.10

# link the executable into /usr/local/bin, or /opt/homebrew/bin
brew link --overwrite --force go@1.10
Run Code Online (Sandbox Code Playgroud)

酿造开关

但并非每个包都有版本控制的变体。如果您刚刚升级到新版本且旧版本仍在系统中,请跳过步骤 1、2。

  1. 在这种情况下,请在homebrew-core存储库中搜索并下载具体公式。例如mysql 8.0.23
  2. 下载原始文件并从中安装brew install /path/to/downloaded/mysql.rb
  3. 现在最新的和旧的 8.0.23 (相同的公式mysql)都存在,切换(链接出)旧版本brew switch mysql 8.0.23

brew info mysql将列出所有仍然存在的旧版本。

步骤 1、2 可以替换为brew extract,但这需要用户维护自己的水龙头。这里就不展开说了,有兴趣的可以自己搜索一下。