2012-12-18 153 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