【问题标题】:homebrew - how to install older versionshomebrew - 如何安装旧版本
【发布时间】:2016-08-28 03:39:29
【问题描述】:

我正在尝试使用旧版本(例如:1.4.5)安装 memcached,但我不知道该怎么做。

brew install memcached 安装最新版本。

我也试过brew install memecached1.4.5,但没用。

【问题讨论】:

标签: homebrew


【解决方案1】:

通常,您可以检查是否有多个版本可用,您可以使用@指定版本。例如brew install package@2.8

$ brew info memcached

memcached: stable 1.4.24
High performance, distributed memory object caching system
https://memcached.org/
Conflicts with:
  mysql-cluster (because both install `bin/memcached`)
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/memcached.rb
...

如果你想要的版本不可用,你可以去 repo,查看历史记录

cd "$(brew --repo homebrew/core)"
git log master -- Formula/memcached.rb

然后你就可以找到你要找的提交了

commit 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
Author: Adam Vandenberg <flangy@gmail.com>
Date:   Fri Apr 9 21:19:48 2010 -0700

    Update memcached to 1.4.5

签出该版本并安装:

cd "$(brew --repo homebrew/core)" && git checkout 5ec463decefeaab3d1825b923ad2dbee73ffc6dc
HOMEBREW_NO_AUTO_UPDATE=1 brew install memcached

安装完版本后,您可以通过以下方式将 brew 带到其最新版本:

git checkout master

然后,就是这样!

【讨论】:

  • 如果您已经安装了它,您可能需要改用HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade memcached
  • 这行得通,但我觉得这个过程应该容易得多。安装旧版本并不少见
  • 这是一个救命的食谱,干得好!!
  • 要查看完整日志,您可能必须运行 git -C "$(brew --repo homebrew/core)" fetch --unshallow,因为 brew 默认具有存储库的浅层克隆。
  • 另外,brew pin memcached 将阻止它在未来自动升级。
【解决方案2】:

我愿意

brew unlink memecached
brew install memecached@1.4.5
brew link memecached@1.4.5 --force

【讨论】:

  • ==> 在 GitHub 上搜索水龙头...错误:在水龙头中找不到公式。
  • @Madeo 您要安装的公式的名称是什么?也许你需要先点击它(点击意味着将他们的外部存储库添加到 brew 中)
【解决方案3】:

阿德里安的好答案的更多扩展版本也在 SO 上。

https://stackoverflow.com/a/53766019/3794873

要记住的一件事是,如果您安装的是较旧的 Formula,则 Homebrew API/方法自那时起可能已更改,因此您应该 brew edit appFormula 与当前版本进行比较,如果遇到任何问题,请与 brew edit app@your.version 进行比较在链接答案中的brew extract 命令之后尝试brew install app@your.version 时出错。

【讨论】:

    【解决方案4】:

    2021 年更新:

    $ curl https://raw.githubusercontent.com/Homebrew/homebrew-cask/<commit-hash>/Casks/<FORMULA>.rb > $(find $(brew --repository) -name <FORMULA>.rb)
    $ brew reinstall <FORMULA>
    

    您可以在此处找到木桶或公式文件 URL,提交消息应描述要获取 URL 的文件版本。

    https://github.com/Homebrew/homebrew-core/commits/master/Formula/<formula>.rb
    https://github.com/Homebrew/homebrew-cask/commits/master/Casks/<cask>.rb
    

    信用:https://remarkablemark.org/blog/2017/02/03/install-brew-package-version/

    【讨论】:

    • 这里的一些字段注释:第一个sn-p中的第一个curl确实是cask,如果需要使用第二个sn-p修改为formula。此外,您不必复制整个提交 hash, 7 chars 就足够了。
    【解决方案5】:

    现在分享我为自己制作的Adriananswer 的交互式单线器:

    它仅根据 github URL 中的“/blob/”对brew info 中的“From”进行简单的解析,并对来自git log 的提交执行 bash select

    brew install 可以根据需要替换为brew reinstall

    bash 5.1(来自 macports ;P)和env -i /bin/bash 3.2macOS(高Sierra) 10.13.6 反对brew 3.3.11。 (前几天我可能做了一些敲击。)

    (name= &amp;&amp; { [[ $name ]]||read -ep "Name: " name;} &amp;&amp; [[ $(brew info "$name"|sed -Ene'/^From: (.*)/s//\1/p') =~ ([^/]*)/blob/([^/]*)/([^/]*)/([^/]*) ]] &amp;&amp; V=("${BASH_REMATCH[@]:1}") &amp;&amp; N=(repo current dir file) &amp;&amp; for s in ${!N[@]};do eval "${N[s]}=\${V[s]}" &amp;&amp; declare -p &gt;&amp;2 "${N[s]}";done &amp;&amp; cd "$(brew --repo "${repo//-//}")" &amp;&amp; IFSO="$IFS" &amp;&amp; IFS=$'\n' &amp;&amp; select line in $(git log --oneline master -- "$dir/$file");do IFS="$IFSO" &amp;&amp; commit=($line) &amp;&amp; break;done &amp;&amp; set -x &amp;&amp; git checkout "$commit" &amp;&amp; HOMEBREW_NO_AUTO_UPDATE=1 brew install "$name" &amp;&amp; git checkout master)

    Skål,致敬,干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 2013-08-05
      相关资源
      最近更新 更多