• 原文:https://www.jianshu.com/p/aadb54eac0a8
  • 在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
  • 大功告成!

作者:乾九二
链接:https://www.jianshu.com/p/aadb54eac0a8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

brew安装指定版本的软件的更多相关文章

  1. brew 安装指定版本命令行工具 tmux 多版本实现

    Homebrew 是 macOS 命令安装工具,其核心库里的命令行在 github homebrew-core 仓库上维护. 核心库命令大概有 5000 条左右,大部分的命令行工具只保留了最新版本的 ...

  2. Mac下通过brew安装指定版本的nodejs

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC Semibold"; color: #2c303 ...

  3. brew安装指定版本boost

    brew 如何安装指定版本的boost brew uninstall boost brew install boost@1.57 brew link boost@1.57 --force --over ...

  4. ssh的server安装和安装指定版本的软件的方法

    ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...

  5. 运维笔记--ubuntu安装指定版本的RabbitMQ

    场景描述: 日常开发or生产环境经常会需要安装指定版本的软件,出于和其他软件的配合兼容性,以及稳定性的考虑. 现在我们的需求是安装指定版本的RabbitMQ,版本号: 操作步骤: 注意事项: 异常处理 ...

  6. Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本

    一.通过apt-get安装指定版本 apt-get install <<package name>>=<<version>> 二.查询指定软件有多少个版 ...

  7. Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本

    一.通过apt-get安装指定版本 apt-get install <<package name>>=<<version>> 二.查询指定软件有多少个版 ...

  8. Go的安装和使用/卸载/升级、安装指定版本

    mac: 1.brew install go默认安装最新的,更新go也是这条命令,建议这个方法,省事 2.从官网https://golang.org/dl/下载pkg包安装,官方说1.12是最后一个支 ...

  9. 安装指定版本的docker服务

    参考博客:Docker CE 镜像源站 参考博客:docker启动异常driver not supported 1. 说明 之前部署docker服务的时候都是安装最新的docker版本,并使用dock ...

随机推荐

  1. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_3_HashSet集合存储数据的结构

    特点就是查询速度快 jdk1.8以后,如果链表的长度超过了8位.就会把转成红黑树,也是为了提高查询的效率

  2. AWK之随心所欲-高手篇

    1.内置变量 变量名 描述 FS 输入字段分隔符,默认是空格或制表符 OFS 输出字段分隔符,默认是空格 RS 输入记录分隔符,默认是换行符\n ORS 输出记录分隔符,默认是换行符\n NF 统计当 ...

  3. C#后台获取日期:当天、前七天、后七天

    DateTime.Now.ToString(); //当前时间DateTime.Now.AddDays(7).ToString(); //当前时间加上7天DateTime.Now.AddDays(-7 ...

  4. SQL server 2008r2 file is corrupt

    下载的SQLManagement studio有问题,重新下载一遍后再安装就好了.安装顺序没问题. 在卸载SQL Server开始——运行:输入regedit 进入注册表编辑器,进入之后执行下列操作: ...

  5. ceph部署问题解决

    注意:1.ceph-deploy实用程序将输出文件到当前目录.执行ceph-deploy时确保你在这个目录下.2.不要使用sudo调用ceph-deploy,要么以root用户身份运行它,因为它不会发 ...

  6. [Git] 002 初识 Git 与 GitHub 之加入文件 第一弹

    在 GitHub 的 UI 界面使用 Git 往仓库里加文件 第一弹 1. 点击右上方的 Create new file 2. 在左上方填入文件名,若有后缀,记得加上 3. 页面跳转,此时已有两个文件 ...

  7. (一) MySQL架构

    1.MySQL架构 MySQL拥有分层的架构,上层是服务器层的服务和查询执行引擎,下层是存储引擎,真正负责数据的存储和提取. 服务层包含了连接和线程处理,以及大多数MySQL的核心服务,如对SQL的解 ...

  8. 贪心(change)

    http://codeforces.com/gym/100989/problem/H After the data structures exam, students lined up in the ...

  9. 【前端芝士树】Vue.js面试题整理 / 知识点梳理

    [前端芝士树] Vue.js 面试题整理 MVVM是什么? MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. ...

  10. 使用Kafka的一些简单介绍: 1集群 2原理 3 术语

    目录 第一节 Kafka 集群 Kafka 集群搭建 Kafka 集群快速搭建 第二节 集群管理工具 集群管理工具 集群 Issues 第三节 使用命令操纵集群 第四节 Kafka 术语说明 第五节 ...