Homebrew 是 Mac 系统中常用的软件包管理工具, 这里的软件包更多的是指命令行工具, 比如 tree
, wget
等. 苹果官方只有 Apple Store 提供的图形化软件, 而对于这些命令行工具, 官方没有提供一个统一的管理工具, 正如 Homebrew 官方网站 所说: The missing package manager for macOS
.
/usr/local/bin/brew
命令路径/usr/local/Cellar
用户安装路径brew --repo
brew 代码库brew --cache
下载的 package 的存放路径brew install <Formula>
安装软件包brew list
查看本机已安装的软件包按照官方给出的安装方法如下
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果你真的执行上述命令, 会发现安装过程非常缓慢 (在国内). 自然的想法是, 找国内代理, 这里推荐清华大学提供的镜像.
修改默认的安装方式. 官方提供的安装命令实际上分为两个部分, 第一部分, 下载 install
安装脚本; 第二部分, 执行该安装脚本.
首先, 下载安装脚本保存为 install_brew.rb
.
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install > install_brew.rb
修改如下两行, 指向镜像源
BREW_REPO = "https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew".freeze
CORE_TAP_REPO = "https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core".freeze
然后, 执行安装脚本. (-e
指的是后面跟的一条命令, 因此这里不需要了)
ruby install_brew.rb
这样就大功告成了.
如果是已经安装好了 brew
, 但在用 brew
安装软件包时, 发现安装缓慢, 此时想要替换为国内镜像源, 请直接参考清华大学提供的镜像提示.
利用 brew
安装软件包时, 每次总会先执行 Updating Homebrew...
, 速度很慢, 可以设置如下环境变量.
export HOMEBREW_NO_AUTO_UPDATE=true
详情参见取消brew的自动更新. 如果确实想要更新 Homebrew, 可以手动执行
brew update
如果上一节中的自动更新开启了, 那么每次用 brew install <formula>
命令安装软件包时, 都会安装当前 <formula>
的最新版本, 但在实际工作中, 服务器上的软件包版本往往不是最新的, 为了保持一致, 本地应尽量安装相同的版本, 至少保证大版本号一致.
当前 MySQL 最新版本为 8.0, 那么如何安装 5.7 版本呢?
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ cd Formula
$ ls mysql*
mysql++.rb mysql-sandbox.rb mysql@5.6.rb
mysql-client.rb mysql-search-replace.rb mysql@5.7.rb
mysql-cluster.rb mysql-utilities.rb mysqltuner.rb
mysql-connector-c++.rb mysql.rb
mysql-connector-c.rb mysql@5.5.rb
正好有 mysql@5.7.rb
Formula, 那么执行如下命令即可 (需要根据提示安装将命令加入 PATH
环境变量)
brew install mysql@5.7
同上, 执行如下命令
brew install python@2
当前 Python 最新版本为 3.7, 由于有些 Python 包还没有推出适合的版本, 比如 tensorflow, 会报如下错误, 找不到匹配的版本.
$ pip3 -V
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
$ pip3 install tensorflow
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting tensorflow
Could not find a version that satisfies the requirement tensorflow (from versions: )
No matching distribution found for tensorflow
我们需要将 homebrew-core
的 Formula/python.rb
文件, 回滚到 3.6 时的版本, 可按如下方式操作.
注意: 如下方式操作之前必须取消自动更新, 方法参见前面的例子.
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git log -- Formula/python.rb
<== 省略 ==>
commit e23247ec179ba32f277857e89b7ae8e70b3e177c
Author: Aleks Bunin <github@compuix.com>
Date: Wed Jun 27 19:55:02 2018 -0400
python 3.7.0
commit f2a764ef944b1080be64bd88dca9a1d80130c558
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Sun Jun 17 13:24:46 2018 +0000
python: update 3.6.5_1 bottle.
<== 省略 ==>
从上面的输出看到, f2a764e
版本是正好对应 python 3.6
, 这就是我们需要版本, 先回滚代码, 然后完成安装.
git reset --hard f2a764ef944b1080be64bd88dca9a1d80130c558
brew install python
当前 thrift 最新版本为 0.12.0, 很多公司可能还在用比较老的版本, 比如我司之前还在用 0.10.0, 最近升级到了 0.11.0. 如何安装需要的版本呢? 当然可以按前面安装 Python 3.6 的方式, 这里提供一种懒人方式.
brew unlink thrift # 如果安装了别的版本, 可能需要先卸载
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/a1d5a1e87bccf56b741a1276f0b305baadca0e16/Formula/thrift.rb
这里的 commit ID 获取方式同上面.
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git log -- Formula/thrift.rb
<== 省略 ==>
commit 2a11925d90d50b37a7b3ced8c64d211392c82a19
Author: Taras <9948629+Trane9991@users.noreply.github.com>
Date: Tue Jan 8 12:35:00 2019 +0200
thrift 0.12.0
commit a1d5a1e87bccf56b741a1276f0b305baadca0e16
Author: FX Coudert <fxcoudert@gmail.com>
Date: Mon Jan 28 20:13:01 2019 +0100
thrift: remove pre-Mavericks support
<== 省略 ==>