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

时间:2012-11-20 16:14:13

标签: homebrew

/usr/local/Cellar/libfoo /usr/local/Cellar/libfoo/1.0.1/usr/local/Cellar/libfoo/HEAD/usr/local/Cellar/libfoo/mycopy

{{1}}中有一些相同包的小桶

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

8 个答案:

答案 0 :(得分:292)

使用信息:

Usage: brew switch <formula> <version>

示例:

brew switch mysql 5.5.29

您可以使用info找到系统上安装的版本。

brew info mysql

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

brew switch mysql 0

更新(15.10.2014):

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

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

$ brew tap homebrew/versions
$ brew install mysql55

有关安装旧版公式的所有方法的详细信息,请阅读this answer

答案 1 :(得分:12)

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

$ brew switch libfoo mycopy 

获取libfoo的版本mycopy。

答案 2 :(得分:7)

遗憾的是,brew switchHomebrew 2.6.0(2020 年 12 月)已被弃用

$ brew switch
Error: Unknown command: switch

TLDR,切换到 package 版本 10

brew unlink package
brew link package@10

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

  • 首先,确保使用 brew list 安装特定版本。我这里的包裹是 node (16) 和 node@14
➜  ~ brew list
==> Formulae
node
node@14

➜  ~ node -v
v16.1.0
  • 取消链接当前包:brew unlink node
➜  ~ brew unlink node
Unlinking /usr/local/Cellar/node/16.1.0... 7 symlinks removed.
  • 链接正确的版本
➜  ~ 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

答案 3 :(得分:4)

brew switch libfoo mycopy

如果brew switch

下安装为版本化子目录,则可以使用Cellar/<packagename>/在同一个软件包的版本之间切换

这将列出已安装的版本(例如我已Cellar/sdl2/2.0.3,我已编译为Cellar/sdl2/2.0.4

brew info sdl2

然后在它们之间切换

brew switch sdl2 2.0.4
brew info 

信息现在显示2.0.4旁边的*

要从源Cellar/<packagename>/<version>下安装,您可以执行以下操作

cd ~/somewhere/src/foo-2.0.4
./configure --prefix $(brew --Cellar)/foo/2.0.4
make

使用

检查安装位置
make install -n

如果一切看起来都正确

make install

然后从cd $(brew --Cellar)开始在版本之间切换。

我正在使用brew version 0.9.5

答案 4 :(得分:2)

如果你已经安装了例如php 5.4,它可以通过以下方式切换到php 5.5:

$ php --version
PHP 5.4.32 (cli) (built: Aug 26 2014 15:14:01) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

$ brew unlink php54

$ brew switch php55 5.5.16

$ php --version
PHP 5.5.16 (cli) (built: Sep  9 2014 14:27:18) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

答案 5 :(得分:2)

如果 from sklearn.preprocessing import FunctionTransformer def fit_once(transformer): fitted = [False] def func(x): if not fitted[0]: transformer.fit(x) fitted[0] = True return transformer.transform(x) return FunctionTransformer(func) pipeline = make_pipeline( fit_once(TfidfVectorizer()), LinearRegression() ) 产生错误(在本例中尝试切换到节点版本 14):

brew switch

切换版本的正确方法是:

> brew switch node 14
Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead.

答案 6 :(得分:2)

Homebrew 删除了 Homebrew 2.6.0 中的 brew switch 子命令。从here取回。

brew tap laggardkernel/tap
brew switch --help

名称@版本公式

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

如果是更大的版本更改。 Homebrew 可能在 repo 中创建了一个版本化的包。像gogo@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

酿造开关

但并非每个包都有版本化的变体。如果您刚刚升级到新版本,而旧版本仍在您的系统中,请跳过步骤 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 代替,但这需要用户保持自己的水龙头。这里就不展开了,有兴趣的可以自行搜索。

答案 7 :(得分:0)

如果@ simon的答案在某些mac中无法解决,请按照以下流程进行操作。

如果您已使用以下命令安装了swiftgen:

$ brew update $ brew install swiftgen

然后按照以下步骤运行swiftgen与旧版本。

第1步:brew uninstall swiftgen 第2步:导航至:https://github.com/SwiftGen/SwiftGen/releases 并下载swiftgen版本:swiftgen-4.2.0.zip。

在任何目录中解压缩包。

第3步: 在终端中执行以下操作:

$ mkdir -p ~/dependencies/swiftgen
$ cp -R ~/<your_directory_name>/swiftgen-4.2.0/ ~/dependencies/swiftgen
$ cd /usr/local/bin
$ ln -s ~/dependencies/swiftgen/bin/swiftgen swiftgen
$ mkdir ~/Library/Application\ Support/SwiftGen
$ ln -s ~/dependencies/swiftgen/templates/ ~/Library/Application\ Support/SwiftGen/

$ swiftgen --version

你应该得到:SwiftGen v0.0(Stencil v0.8.0,StencilSwiftKit v1.0.0,SwiftGenKit v1.0.1)

enter image description here