170

我有几桶相同包装的/usr/local/Cellar/libfoo类似物品/usr/local/Cellar/libfoo/1.0.1/usr/local/Cellar/libfoo/HEAD并且/usr/local/Cellar/libfoo/mycopy

如何将链接链接到特定版本?

4

8 回答 8

320

在 Homebrew 2.6.0(2020 年 12 月)中已弃用。跳到最后更新以获取有效的解决方案

使用信息:

Usage: brew switch <formula> <version>

例子:

brew switch mysql 5.5.29

您可以使用info.

brew info mysql

要查看要安装的可用版本,您可以提供一个无用的版本号,因为 brew 将帮助响应可用的版本号:

brew switch mysql 0

更新(15.10.2014):

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

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

$ brew tap homebrew/versions
$ brew install mysql55

更新(11.1.2022):

这可能是今天最好的方法

要安装特定版本,例如 postgresql 9.5,您只需运行:

$ brew install postgresql@9.5

要列出可用版本,请使用 @ 进行搜索:

$ brew search postgresql@
==> Formulae
postgresql                 postgresql@11              postgresql@13              postgresql@9.5             qt-postgresql
postgresql@10              postgresql@12              postgresql@9.4             postgresql@9.6             postgrest

==> Casks
navicat-for-postgresql

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

于 2013-06-14T07:58:07.383 回答
23

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

$ 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
于 2021-05-12T07:41:37.010 回答
11

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

$ brew switch libfoo mycopy 

获取 libfoo 的 mycopy 版本。

于 2012-11-20T16:36:57.027 回答
4

例如,如果您安装了 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
于 2014-09-09T11:37:08.757 回答
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

于 2014-11-29T06:55:00.817 回答
4

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

brew tap laggardkernel/tap
brew switch --help

名称@版本公式

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

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

冲泡开关

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

  1. 在这种情况下,请在homebrew-core repo 中搜索并下载具体公式。例如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,但这需要用户维护自己的水龙头。我这里就不介绍了,有兴趣的可以自行搜索。

于 2021-05-23T05:31:42.260 回答
2

如果brew switch产生错误(在此示例中尝试切换到节点版本 14):

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

切换版本的正确方法是:

> brew link --overwrite node@14
于 2021-04-30T18:47:04.287 回答
-2

如果@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)

在此处输入图像描述

于 2017-07-09T10:57:43.263 回答