CPAN 與 APT:版本衝突?

CPAN 與 APT:版本衝突?

我找不到任何地方有這個問題的答案:Does a module displayed by APT跟你透過CPAN安裝的模組衝突嗎?

隨之而來的問題還有:已安裝的 CPAN 模組位於何處?它們是全域可存取的還是僅可供安裝用戶存取?你怎麼知道是哪一個?您如何知道安裝了什麼以及哪個優先順序?

當模組透過 APT 安裝時是否應該使用 CPAN?

答案1

在 Debian 和 Ubuntu 上,CPAN(實用程式)預設/usr/bin/cpan安裝模組。 /usr/local/lib/debian 軟體包將其檔案保存在/usr/share/perl5/和中/usr/lib/perl5/。因此透過 apt 安裝的檔案/usr/bin/cpan不會覆蓋透過 apt 安裝的檔案。

使用系統 perl 沒有任何問題,混合 apt 和 cpan 程式碼通常也可以運作。

您也可以選擇手動打包 apt 儲存庫中不可用的任何 cpan 發行版。借助 dh-make-perl 工具,這很容易:

dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi

答案2

我用珀爾布魯。它安裝本地版本的 Perl 和 cpan。它所做的一切都是在您的主目錄中完成的。安裝和使用非常簡單,您可以安裝最新版本的 Perl。

答案3

直接從 CPAN 安裝時,我建議使用 local::lib 到您私有的目錄。請參閱 boostrapping 技術https://metacpan.org/module/local::lib

這樣,CPAN 安裝的模組將僅由您的使用者使用,並且它將與使用 APT 安裝的模組完全分開。

如果您遇到任何問題或升級 Ubuntu 時,它還可以讓您輕鬆刪除 CPAN 安裝的模組。

這就是我在 Ubuntu 上使用它的方式。

答案4

您可以同時使用兩者,但它們會發生衝突。它們被寫入同一個位置,因此如果您從 apt 安裝某些內容,然後從 cpan 安裝更高版本,則可能會出現問題。

我對 Perl 的了解不多,但在 Python 中我確實遇到了你所說的困境:apt-vs-PyPI。我個人盡可能選擇 apt。這意味著我應該獲得更新,而不必記住維護每個單獨的 Python 套件。不僅如此,這還意味著我的所有系統都應該在這些軟體包的相同版本上運作。

它並不總是有效。有時,您的儲存庫中沒有足夠新的東西,或者您需要的東西沒有打包。這兩種方式都不完美,但我相信很可能會完美更多的完美的。只要意識到你在做什麼就應該沒問題。


編輯- 幾乎忘記了,有一種更好的方法來劃分事物,這樣系統就可以擁有自己的環境,並且您正在開發的任何內容都可以存在於自己的環境中(您完全使用CPAN 進行管理),就像Python 的virtualenv...

https://stackoverflow.com/questions/1423879/how-can-i-install-specialized-environments-for- Different-perl-applications

相關內容