2012-12-19 128 views
3

我一直在寫了我的工作,我已經給上安裝Perl,讓工作機器Perl腳本模塊困難:安裝Perl模塊和依賴與非根和不CPAN

  • 我們不能有gcc出於安全原因,所以我不能使用CPAN來安裝大多數模塊的模塊。
  • 我無權訪問root帳戶。

通常,當我想安裝一個模塊時,我提出了一個請求,我必須等待一兩天才能安裝。我知道沒有人會對我自己安裝它們有任何問題,所以爲了節省每個人的時間和我的理智,我希望自己安裝它們。這只是一個如何做到最好的問題。我已經和不同的人交談過,他們說要用RPM來安裝它們(以避開gcc)。但是,當試圖從RPM安裝模塊時,它不處理依賴關係,因此我手動需要處理依賴關係,這可能需要一段時間。

我該如何最好地安裝具有這些限制的Perl模塊?

+1

工具/實施問題通常更適合SO。請不要在此重新詢問,因爲這可能會遷移。遵循的一條好規則是如果你的問題在你的IDE之前,它就屬於SO。如果您問題是否在白板前面,則屬於程序員。 – Walter

+0

gcc可能導致perl解釋器無法解決的安全問題? –

+0

程序員無法訪問編譯器......這個世界到底是什麼? – runrig

回答

3

在一個類似的機器與同樣內置的Perl,安裝使用

mkdir ~/foo 
cpan 
o conf makepl_arg 'PREFIX=~/foo LIB=~/foo/lib/perl5' 
o conf mbuildpl_arg '--prefix ~/foo --lib ~/foo/lib/perl5' 
install Some::Module 

只要模塊(S),你不這樣做o conf commit,配置變化將是暫時的,所以不要做那。

複製~/foo,並設置env var PERL5LIB以包含LIB目錄。您可以將較新的~/foo合併到較舊的一箇中以添加新模塊。

這不會安裝模塊所依賴的任何非Perl庫。

0

請參閱Perl常見問題第8部分中的How do I keep my own module/library directory?

當您構建模塊時,請告訴Perl在哪裏安裝模塊。

對於Makefile.PL爲基礎的分佈,產生Makefile■當使用INSTALL_BASE選項:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

對於Build.PL爲基礎的分佈,使用--install_base選項:

perl Build.PL --install_base /mydir/perl 

INSTALL_BASE告訴這些工具把你的模塊分爲/mydir/perl/lib/perl5。有關如何運行新安裝的模塊的詳細信息,請參見How do I add a directory to my include path (@INC) at runtime?

雖然INSTALL_BASE有一個警告,因爲它的行爲與ExtUtils::MakeMaker老版本所倡導的PREFIXLIB設置不同。 INSTALL_BASE不支持在同一目錄下安裝多個版本的Perl或不同體系結構的模塊。你應該考慮你是否真的想要這樣做,如果你這樣做,使用舊的PREFIXLIB設置。有關更多詳細信息,請參閱ExtUtils :: Makemaker文檔。

+0

1)這不會安裝依賴關係。 2)'INSTALL_BASE'會導致多個問題,因爲它不會創建'arch'目錄。在這種特殊情況下,適當時使用arch目錄將有助於確保兩個Perl兼容。 3)這怎麼回答OP的問題呢? – ikegami