【问题标题】:How can I brew link a specific version?如何酿造链接特定版本?
【发布时间】: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


    【解决方案1】:

    在 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

    【讨论】:

    • 我遵循 15.10.2014 更新方法,需要将 /usr/local/Cellar/mysql55/5.5.40/bin 添加到我的路径中。大多数 Homebrew 的东西在 /usr/local/bin 中都有一个符号链接到 /usr/local/Cellar...,但更新后的安装不会自动添加这个符号链接。
    • 您仍然需要链接已安装的版本并使用以下命令覆盖当前链接:brew link --overwrite mysql55
    • 不幸的是,brew tap homebrew/versions 现在给了我一个错误Error: homebrew/versions was deprecated. This tap is now empty as all its formulae were migrated `
    • 有没有办法在没有versions 或只是猜测和检查switch 的情况下找出可用的版本?
    • versions 已被弃用,所以我认为剩下的唯一方法是找到一个旧公式并从直接 URL 安装它
    【解决方案2】:

    遗憾的是,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
    

    【讨论】:

      【解决方案3】:

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

      $ brew switch libfoo mycopy 
      

      获取 libfoo 的 mycopy 版本。

      【讨论】:

        【解决方案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
        

        【讨论】:

          【解决方案5】:

          brew switch libfoo mycopy

          您可以使用brew switch 在同一包的版本之间切换,如果它安装为Cellar/&lt;packagename&gt;/ 下的版本化子目录

          这将列出安装的版本(例如我有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/&lt;packagename&gt;/&lt;version&gt; 下,您可以这样做

          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

          【讨论】:

            【解决方案6】:

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

            brew tap laggardkernel/tap
            brew switch --help
            

            name@version 公式

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

            如果是更大的版本更改。 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 repo 中搜索并下载具体公式。例如mysql 8.0.23
            2. 下载 raw 文件,并从中安装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,但这需要用户自己维护。此处不赘述,有兴趣的可以自行搜索。

            【讨论】:

            • 这适用于最新版本的 brew。接受的答案似乎已经过时了。
            【解决方案7】:

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

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

            切换版本的正确方法是:

            > brew link --overwrite node@14
            

            【讨论】:

              【解决方案8】:

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

              【讨论】:

              • 投反对票,因为这个答案没有回答作者的问题。
              猜你喜欢
              • 2013-09-13
              • 1970-01-01
              • 1970-01-01
              • 2016-01-20
              • 2014-11-20
              • 1970-01-01
              • 2012-06-07
              • 1970-01-01
              • 2017-07-19
              相关资源
              最近更新 更多