brew安装指定版本的软件

作者: 乾九二 | 来源:发表于2017-02-08 20:34 被阅读15881次
    1F7D7052E69E7E73B2EFE8069E735526.jpg
    • 在mac中使用 brew install 安装的软件默认都是最新版本的。有时候我们需要旧版本(指定版本)的时候,应该怎么做呢?
    • 由于在学习 thrift 的过程中,希望安装 0.9.3 版本的 thrift ,但是默认 brew install thrift 安装的是 0.10.0 版本,所以就查看了下 brew install 是如何进行安装的。

    安装源


    • 其实安装主要应该是先找到对应的软件安装源,以前没有认真看 brew 是如何找这个源的,今天使用命令 brew info thrift 看了下,发现是有一个 From 的:
    $> brew info thrift
    thrift: stable 0.10.0 (bottled), HEAD
    Framework for scalable cross-language services development
    https://thrift.apache.org/
    /usr/local/Cellar/thrift/0.9.3 (95 files, 5.7M) *
      Poured from bottle on 2017-02-08 at 19:52:24
    From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/thrift.rb
    ==> Dependencies
    Build: bison ✔
    Required: boost ✔, openssl ✔
    Optional: libevent ✘
    ==> Requirements
    Optional: python ✔
    ==> Options
    --with-erlang
        Install Erlang binding
    --with-haskell
        Install Haskell binding
    --with-java
        Install Java binding
    --with-libevent
        Install nonblocking server libraries
    --with-perl
        Install Perl binding
    --with-php
        Install PHP binding
    --with-python
        Build with python support
    --HEAD
        Install HEAD version
    ==> Caveats
    To install Ruby binding:
      gem install thrift
    
    To install PHP extension for e.g. PHP 5.5:
      brew install homebrew/php/php55-thrift
    
    • 可以看到,我这里是已经安装好的,第一行显示了 brew 使用的 bottled 里的 thrift0.10.0 版本!而我安装的为 0.9.3 版本,在第4行中有路径。第6行显示了 From !这个很重要。
    • 在我没安装之前,我查找到了这个 From ,然后在浏览器中打开了 https://github.com/Homebrew/homebrew-core。并找到对应的文件:Formula/thrift.rb ,发现这里其实是一个 ruby文件,打开后看到了下面主要的信息:
    url "https://www.apache.org/dyn/closer.cgi?path=/thrift/0.10.0/thrift-0.10.0.tar.gz"
    sha256 "2289d02de6e8db04cbbabb921aeb62bfe3098c4c83f36eec6c31194301efa10b"
    
    • 看到这基本知道了软件安装源的相关信息了。所以,不同版本的 thrift.rb 中应该是包含对应版本的软件源 urlsha256 的。接下来查看 thrift.rb 文件修改历史,提示太多,所以简单粗暴的直接将 homebrew-core 整个仓库 git clone 了下来:
    git clone git@github.com:Homebrew/homebrew-core.git
    
    • 有了本地clone的仓库,直接查看对应 0.9.3 版本的 thrift.rb 文件log:
    git log ./Formula/thrift.rb | less
    
    • 找到后搜索 0.9.3 就可以定位到对应的 commit,然后获取到 commmit : 9d524e4。接下来切换到对应的 commit :
    git checkout 9d524e4
    
    • 查看了下 ./Formula/thrift.rb ,发现此时里面的 urlsha256 变成了如下:
    url "https://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.tar.gz"
    sha256 "b0740a070ac09adde04d43e852ce4c320564a292f26521c46b78e0641564969e"
    
    • 可以看到,此时的版本正是需要的,接下来执行 brew 安装命令进行安装 0.9.3 版本:
    # 这里直接指定了 rb 文件,自己尝试了下,发现果然 OK
    brew install ./Formula/thrift.rb
    
    • 大功告成!

    相关文章

      网友评论

      • luckXiaofei:brew install [name]@[tag],这样不就可以指定版本了嘛!
      • 会写代码的地质狗:很好的东西,谢谢。但太麻烦了,我简化了一下,不用把整个git弄下来。上https://github.com/Homebrew/homebrew-core。并找到对应的文件,直接打开ruby,把内容复制下来,在本地用文本黏贴后,修改内容中需要的版本号(前提是源上有该版本)。用brew 安装一次本地的rb,会提示Error: SHA256 mismatch。把Actual:后面的那一串复制黏贴上本地的rb里,再装一次就o了。
      • 捡了幸福的猪:楼主,我想安装0.10.0 ,结果报错: Error: thrift: Unsupported special dependency :python
        卡尔瓦多斯:vim打开./Fromula/thrift.rb,修改depends_on:python为depends_on "python@2"
        c43e2ebd5a9d:@乾九二 你后来怎么弄的,我在装0.9时候遇上了同样的问题
        乾九二:你的python版本不支持安装这个版本的,可以尝试看能不能 brew uninstall python 成功,如果能成功,你再安装 thrift 试下,如果不能成功,那就不行了
      • 十一岁的加重:非常有研究能力的人
      • 6fecd2f40bd7:brew switch 就可以切换版本
        管其虎:人家是安装本机不存版本,你说的是本机已存在版本切换~ 看题不仔细啊
        踏遍青山:厉害了 哥
      • 21eb0e8731db:挺有用,正好需要装0.9.3的thrift
      • 八刀一闪:好赞~
      • xjtuzxh:写的好,受用了
      • 这个算什么:很受用,我是用来装nasm的,为了装旧版本那真是蛋疼啊。感谢楼主。不过刚看到这篇文章的时候,因为我不怎么用git,卡在 git co 9d524e4 ,后来发现原来是checkout的意思,commit的id原来也只需要前7位。
        bb83d73a7c08:作者的别名真是………………

      本文标题:brew安装指定版本的软件

      本文链接:https://www.haomeiwen.com/subject/orubittx.html