如何在 brew 安装某些软件包时不自动更新 homebrew?

How to not update homebrew automatically when brew install some packages?

我在 Mac 上安装了带有自制软件的 python3。但是,最新的 Python3.6 不能很好地与某些包一起使用,所以我决定回滚到 3.5.2。

由于homebrew/versions已被弃用,我检查了目录中的提交:/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

git log python3.rb

commit ec545d45d4512ace3570782283df4ecda6bb0044
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Tue Oct 11 06:42:06 2016 +0100

      python3: update 3.5.2_3 bottle.

然后

git chekcout ec545 
brew install python3

但是,似乎自制软件会自动更新我 运行 $brew install [Formula]

➜  Formula git:(ec545d4) brew install python3
    Updating Homebrew...

如何在brew安装一些包的时候不自动更新homebrew? 或者如何使用自制软件安装 python 3.5.2?

$ brew tap derekkwok/python or (zoidbergwill/python)
$ brew versions python
$ brew install python35

如果您已经安装了旧版本的公式,您可以简单地切换符号链接以使用 brew 命令引用它。

brew switch python 3.5.2

如果你想保留某个版本并阻止它更新,你可以固定一个公式。

brew pin python

Also you can try this Python Version Management pyenv.
brew install pyenv
pyenv install 3.5.2

对了,你可以看看homebrew-install-specific-version-of-formula了解更多。

回答第一个问题,如何在 brew install 一些包时不自动更新 homebrew?

  1. 黑客代码解决方案:

    vim /usr/local/Homebrew/Library/Homebrew/brew.sh

    在行

    之后添加return

    update-preinstall() {

    至:

    update-preinstall() {
    return
    
  2. 环境变量解决方案:

    export HOMEBREW_NO_AUTO_UPDATE=1

    export HOMEBREW_AUTO_UPDATING=0

    export HOMEBREW_UPDATE_PREINSTALL=0

如果你会一直工作,把它加到.bash_profile