
我經常發現自己切換到安裝的軟體包的特定版本自製的切換項目時。
$ cd ~/Desktop/projects/project1
$ brew switch phantomjs 2.0.0
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/2.0.0
然後當改變項目時:
$ cd ~/Desktop/projects/project2
$ brew switch phantomjs 1.9.8
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/1.9.8
是否可以以某種方式自動執行此操作,以便我可以brew
在某個專案內強制自動切換到指定版本?
.homebrew
如果可以在目標目錄中建立一個名為類似名稱的文件,並從那裡指定所需的套件和版本,那就太好了。
答案1
直接回答你的問題:看看翁迪爾。我沒有親自使用過它,但它似乎適合您的用例。
ondir 是一個小程序,用於自動執行特定於某些目錄的任務。它的工作原理是在您進入和離開目錄時執行目錄中的腳本。
不過,沉思片刻…
由於多種原因,透過 shell 進入/退出目錄時交換軟體包版本是有風險的。 (對於初學者,請考慮兩個終端會話,每個會話都在自己的目錄中。)
您所要求的(每個目錄自製配置)實際上是一個虛擬機器或容器,因為它超出了「虛擬化」語言的範圍(例如:透過 Rubyrbenv
,Python透過virtualenv
`) 而適用於所有系統軟體套件。您應該考慮設立一個流浪漢為您的專案提供一個盒子,以便將它們與您的 Mac 正確隔離並更好地管理您的依賴項。
無論如何,回到你手邊的問題...
PhantomJS 是一個獨立的工具,恰好可以作為有用的工具靜態連結的二進位文件。我們可以利用這一點來發揮我們的優勢。無需透過 交換 PhantomJS 版本brew switch
,只需下載每個靜態連結版本,將二進位檔案貼到 中~/bin
,適當命名(例如phantomjs-1.9.8
),然後調整腳本以呼叫所需的版本。如果您無法調整腳本,則需要設計另一個方案(特定於項目的符號連結等)
或者,如建議的那樣您在 GitHub 上的查詢,您也可以PATH
透過ondir
任何磁碟機或包裝腳本來調整您的磁碟機phantomjs
。
(是的,對於一晚內第二次我向某人指出了一個我個人沒有使用過的工具。