在 Mac 上的 Homebrew 中使用每個目錄的特定版本的包

在 Mac 上的 Homebrew 中使用每個目錄的特定版本的包

我經常發現自己切換到安裝的軟體包的特定版本自製的切換項目時。

$ 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

(是的,對於一晚內第二次我向某人指出了一個我個人沒有使用過的工具。

相關內容