2010-03-12 95 views
4

當我從源代碼安裝perl時,第一個好的驚喜是,從現在開始安裝的所有模塊都可以用於新的perl。由於我沒有在我的操作系統附帶的cpan上找到一個模塊,所以我必須使用onboard-perl的某些腳本。對於這些腳本之一,我想安裝Text :: Format或Text :: Autoformat(在cpan上沒有找到該模塊的文檔)。我的問題:我如何告訴cpan這次爲OS-distro-perl安裝模塊?如何告訴cpan更改模塊安裝的目標?

回答

1

每個Perl安裝都有自己的想法,即圖書館應該在哪裏「活着」,CPAN模塊使用它作爲執行安裝位置的指南。您可以通過執行perl -V來查看這些值,然後查找@INC(底部)的值。如果調用CPAN用不同的Perl(例如,你的系統安裝的Perl),您將自動模塊安裝到Perl的首選地點:

/usr/bin/perl -MCPAN -e shell 

或簡單地安裝一個模塊,而無需調用CPAN命令明確:

/usr/bin/cpan <modulename> 

還有CPAN配置選項可用,您可以暫時或永久更改安裝位置,但這不應該在您的情況下需要。

+0

我不明白這是怎麼說的問題,他問,「改變模塊安裝的目標」,這一切都涉及PERL5LIB,雖然適用與CPAN安裝的東西無關。有了這個說法,恭喜您閱讀這個問題。 – 2010-03-12 20:29:39

+0

而且,AFAIK cpan/cpanp在任何發行版中都不使用@INC的最後一個值,而是使用它們的分發配置。 – 2010-03-12 20:35:12

+0

@Evan:不同的CPAN安裝到不同的位置。使用與您想要安裝的perl相對應的'cpan'可執行文件將使用已安裝時已經設置的配置「正常工作」。 – Ether 2010-03-12 20:36:47

1

/路徑/到/ System/perl的-MCPAN -e殼

+0

這與運行'cpan'是一樣的。 – 2010-03-17 03:14:49

+0

brian d foy:'cpan'將爲PATH中的第一個perl運行cpan shell,而不是用於需要的perl。 – 2010-03-17 08:09:41

+0

'perl -MCPAN -e shell'和簡單的'cpan'有什麼不同? – 2015-07-15 10:48:18

-3

我假設你想簡單的模塊安裝到不同的位置,然後從該位置運行它們 - 你的問題是不是太對我清楚。

local::lib上完全閱讀perldoc。我試圖更好地編寫這個文件是一個重大失敗。這也是實現這一任務的最新和先進的方式。如果另一個解決方案沒有引用這個模塊,那麼我個人的建議就是避免它像鼠疫一樣。

2

沒有特別的方法可以告訴cpan只在一個調用中將模塊安裝到一個新的位置。然而,該功能與我的待辦事項列表以及local :: lib支持一致。我真的瞭解你的痛苦,並希望獲得同樣的功能。我只需要時間(或補丁)來使它工作。

在那之前,你必須輸入CPAN.pm殼並更改值mbuild_argmakefilepl_argperlfaq8: How do I keep my own module directory?指出:


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

對於基於Makefile.PL的發行,產生Makefile文件時,請使用INSTALL_BASE選項:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

你可以在你的CPAN.pm的配置設置此所以模塊會自動在你的私人圖書館目錄時,使用安裝CPAN.pm殼:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

對於基於Build.PL的發行,使用--install_base選項:

perl Build.PL --install_base /mydir/perl 

您可以配置CPAN。pm也自動使用該選項:

% cpan 
cpan> o conf mbuild_arg "--install_base /mydir/perl" 
cpan> o conf commit 
+0

沒有爲我工作。完成這些配置後,CPAN仍然將'SVG'軟件包('cpan -i SVG')不恰當地安裝到'$ HOME/perl5/lib/perl5 /'中。 – 2015-07-15 10:52:33