【发布时间】:2012-11-08 18:22:39
【问题描述】:
我在/usr/local/Cellar/libfoo 中有几桶相同的包裹,例如/usr/local/Cellar/libfoo/1.0.1、/usr/local/Cellar/libfoo/HEAD 和/usr/local/Cellar/libfoo/mycopy
如何将链接链接到特定版本?
【问题讨论】:
标签: homebrew
我在/usr/local/Cellar/libfoo 中有几桶相同的包裹,例如/usr/local/Cellar/libfoo/1.0.1、/usr/local/Cellar/libfoo/HEAD 和/usr/local/Cellar/libfoo/mycopy
如何将链接链接到特定版本?
【问题讨论】:
标签: homebrew
在 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/versions repo 安装,如下所示:
$ brew tap homebrew/versions
$ brew install mysql55
有关安装旧版公式的所有方法的详细信息,请阅读this answer。
【讨论】:
brew tap homebrew/versions 现在给了我一个错误Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated `
versions 或只是猜测和检查switch 的情况下找出可用的版本?
遗憾的是,brew switch 已在 Homebrew 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
【讨论】:
我在#machomebrew 中询问并了解到您可以使用 brew switch 在版本之间切换。
$ brew switch libfoo mycopy
获取 libfoo 的 mycopy 版本。
【讨论】:
如果你已经安装了,例如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
【讨论】:
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
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
【讨论】:
Homebrew 删除了 Homebrew 2.6.0 中的 brew switch 子命令。从here 取回。
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 步。
brew install /path/to/downloaded/mysql.rb。mysql)都存在,用 brew switch mysql 8.0.23 切换(链接)旧版本
brew info mysql 将列出所有仍然存在的旧版本。
第 1、2 步可以替换为brew extract,但这需要用户自己维护。此处不赘述,有兴趣的可以自行搜索。
【讨论】:
如果brew switch 产生错误(在此示例中尝试切换到节点版本 14):
> brew switch node 14
Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead.
切换版本的正确方法是:
> brew link --overwrite node@14
【讨论】:
如果@simon 的回答在某些 mac 中不起作用,请按照以下流程操作。
如果您已经使用以下命令安装了 swiftgen:
$brew update
$brew install swiftgen
然后按照以下步骤使用旧版本运行 swiftgen。
第一步: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)
【讨论】: