昨天升級了 homebrew 中的不少套件,結果我的 vim 就毀滅了,一直出現 ImportError: cannot import name MAXREPEAT 的錯誤!找了好久才發現原來是 python 在月初發佈了 2.7.4 版本,因此我電腦中的版本也變成了 2.7.4,導致我 vim 中跟 python 相關的 plugin 都掛點了,於是決定來把 python 降到 2.7.3 版!以下是降版的步驟:
首先先來到 homebrew 安裝的資料夾,一般來說應該都在 /usr/local。
1
cd /usr/local
如果不知道自己的 homebrew 安裝在哪的話,可以輸入以下指令來進入該資料夾。
1
cd `brew --prefix`
接著利用以下指令可以找出該套件各個版本的對應的 homebrew 版本。
1
brew version <formular>
輸入該指令後,可以看到類似下方的列表(以 python 為例):
1
2
3
4
5
6
7
8
9
brew versions python
2.7.4 git checkout fbf7be9 Library/Formula/python.rb
2.7.3 git checkout 51fb481 Library/Formula/python.rb
2.7.2 git checkout 97c6869 Library/Formula/python.rb
2.7.1 git checkout 83ed494 Library/Formula/python.rb
2.7 git checkout 1bf3552 Library/Formula/python.rb
2.6.5 git checkout acd49f7 Library/Formula/python.rb
2.6.4 git checkout 843bff9 Library/Formula/python.rb
2.6.3 git checkout 5c6cc64 Library/Formula/python.rb
像我要把 python 降到 2.7.3,就可以看到該套件在 homebrew 的 git 版本號是 51fb481,然後把 python 的 formula 切換到 2.7.3 版。
1
git checkout 51fb481 Library/Formula/python.rb
如果不是第一次安裝該套件的話,要先用以下指令把 homebrew 連結到的版本先取消連結。
1
brew unlink formula
然後按照原本安裝套件的方式即可安裝指定的版本了!
1
brew install formula
不過,這時候電腦中可能會存在多個版本,為了確定我們現在預設使用的版本是我們剛剛安裝的版本,可以使用以下指令來指定版本!
1
brew switch formula version
最後再把 homebrew 的 git repo 恢復到最新的版本,輸入最新的版本的版本編號即可!
1
git checkout fbf7be9 Library/Formula/python.rb
然後我無聊寫了個 script 來做這件事情,用法如下:
1
brew_version formula version [param1 param2 …]
- formula: 要安裝的套件名稱
- version: 指定的版本號
- param: 附加於
brew install
後的其它參數
例如我是要安裝 python,但在安裝時,我會多下一個 --framework
的參數。所以在使用這個 script 來安裝 2.7.3 版本的 python 時,就要下以後指令。
1
brew_version python 2.7.3 --framework
script 內容如下:
Source code on gist.