2012-12-18 150 views
3

我聽說最好不要從系統版本的Perl所在的CPAN安裝模塊。我知道如何使用命令行來安裝模塊,我只是想知道是否有方法將CPAN與系統的核心Perl分開。安裝CPAN模塊而不搞亂系統Perl安裝

我應該:

下載源,並作出專門的目錄,這些模塊?

任何人有任何其他想法或實現,他們已經成功地使用?

我使用Arch Linux和Perl 5.16.2。

回答

5

你在尋找類似local::lib

地方:: lib中 - 創建和使用本地的lib/Perl的模塊,PERL5LIB

+0

是 - 本地:: lib和也搶應用:: cpanminus - 在cpanm工具的工作原理非常整齊當地:: lib中 –

+0

這無助於解決由OP提到的所有問題。看到我的答案。 – ikegami

-2

爲什麼不將模塊打包成真正的軟件包,rpm或dep樣式?通過這種方式,您可以控制已安裝的軟件,您可以根據需要刪除和更新軟件包,就像您習慣的那樣。所以,不要繞過管理,這很少是一個好主意,你會保持控制。

如果您使用的是基於rpm的版本,我真的推薦OBS來完成這個任務。您可以創建自己的項目,配置源代碼,測試它們併爲各種發行版和體系結構創建包。當您將家庭項目資源庫導入到軟件管理中時,只需單擊一次即可安裝軟件包。

0

關於什麼的cpanminus? CPAN minus module

+0

這是一個很好的工具,它將使用本地模塊安裝環境,但不會爲您設置該環境 - 這就是問題的要求。 – Quentin

+0

我聽說過'cpanm'的好東西。 +1 – squiguy

3

下載並解壓最新版本的local::lib

curl -LO http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz 
tar xzf local-lib-1.008004.tar.gz 
cd local-lib-1.008004/ 

部署它:

perl Makefile.PL --bootstrap=$HOME/perl5 
make 
make test 
make install 

保存的持久性配置:

cat <<PROFILE>> $HOME/.profile 

eval \$(perl -I\$HOME/perl5/lib/perl5/ -Mlocal::lib) 
PROFILE 

現在,您可以註銷/登錄您的會議或簡單地source ~/.profile。 完成這些步驟後,CPAN模塊將在本地安裝。

+0

感謝您指導設置'local :: lib'。 +1 – squiguy

3

您不需要手動安裝模塊。你只需要在某個地方安裝它,並且你的環境被配置爲在那裏安裝它。然後你可以像平常一樣使用cpan/cpanp/cpanm/etc。 (cpan減去我的勝利)

手動設置該環境有點痛苦,所以大多數人使用應用程序爲它們設置配置。

這兩個主要的選擇是:

local::lib - 設置你的環境變量,這樣你就可以安裝模塊從系統perl的離開,而是繼續使用該系統的Perl。

Perlbrew - 這會爲您安裝一個完整的perl,因此您可以完全避免您的系統perl,並使用更新的perl本身版本,然後可能隨系統提供。它還可以並行管理多個perl安裝(因此您可以針對不同版本的perl測試您的模塊)。我個人更喜歡Perlbrew(因爲它可以很容易地使用yada yada操作符和智能匹配等閃亮的新功能來玩(不是那種智能匹配現在是新的),但它需要更長的時間來設置(就像你要編譯perl的)。

+0

感謝您的洞察。我也會檢查Perlbrew。唯一要做的就是不得不管理安裝,但我想這不是太糟糕。 +1 – squiguy

+0

Perlbrew的要點是它會爲你管理安裝:) – Quentin

1

我聽說,這是最好的你的系統的版本的Perl是不是從CPAN安裝模塊。

這樣做是爲了避免升級破壞你的發行版的工具他們使用的模塊

安裝模塊到一個新的目錄,並使用PERL5LIB(這就是前面提到的安裝:: lib中所做的)是不會在所有幫助在這種情況下,因爲Perl看到完全一樣的東西告訴Perl的它,如果你已經安裝了模塊在通常的site目錄中。

(其中將主要使用PERL5LIB安裝模塊時,一個沒有安裝到默認的目錄權限。)

的另一個問題使用該系統的Perl是要升級它阻止。

的解決這兩個是安裝你自己的Perl的版本。這很容易使用perlbrew