2009-11-17 129 views
3

嘿,我是新來的MacPorts的東西,因爲我最近改用Mac電腦。因爲我正在考慮在我的Mac中開發一些應用程序,我想要所有常用的gnu和開源工具。但我有一個小混亂。我正在用macports安裝git,並且我注意到它安裝了很多像Perl這樣的包,我已經在我的機器上了。所以我在想沒有任何衝突,以及如何知道使用哪個版本。 macports一個還是蘋果一個?MacPorts的混亂

回答

9

MacPorts將其所有端口安裝到/opt/local(或者您配置的任何前綴,但默認爲/opt/local)。它安裝自己的Perl,Python等副本,以便MacPorts的安裝是標準化的,並且爲了避免衝突(蘋果公司提供的一些程序,如Perl和Python,以及一些庫的版本,往往遠遠落後於最新版本的那些工具)。

當您安裝使用MacPorts,它自動會預先/opt/local/bin$PATH變量(您可以通過編輯你的shell配置文件改變這一點),因此,如果調用perl等等,你會得到的MacPorts版本。但是,Apple提供的版本仍然保持不變,並且依賴於這些版本的其他程序也不會受到影響。

+5

一個警告是:如果你在你的$ PATH首先將/ opt/local/bin目錄,以便MacPorts的版本的優先級,要知道,有*可能*是MacPorts的版本和蘋果提供的一個之間的差異。我過去一直被燒掉的一個具體和潛在的關鍵示例是'rsync',它被MacPorts'git-core'軟件包依賴。不幸的是,MacPorts rsync -aE選項與Apple rsync -aE選項不同:擴展屬性和資源分支默默無視,這可能會在以後嘗試使用複製的文件時導致令人不快的意外。 – 2009-11-18 00:49:45

1

MacPorts在/opt/local樹中安裝它自己的依賴關係(您可以在生成MacPorts時更改此默認設置),因爲它的打包程序具有已知數量的測試對象。在某些情況下,對於給定的依賴關係,有一個系統包可讓您使用系統安裝的版本,但這實際上非常罕見。根據PATH(對於可執行文件)或動態庫的鏈接程序路徑中首先選擇的系統與MacPort版本進行選擇。使用標準開發工具的選項來選擇合適的庫鏈接,你應該沒問題。

3

不應該有任何衝突,因爲安裝MacPorts的所有方案中/opt/local/一個完全獨立的目錄層次結構下。

如果您安裝了多個版本的軟件(例如默認的OS X Perl和MacPorts的Perl),那麼它取決於您的環境變量$PATH中的目錄順序。 MacPorts的通常把它自己與它的bin目錄早些時候在你的路徑,所以說perl在命令行中會調用的MacPorts的Perl,而不是OS X的Perl。