我听说最好不要从您系统的 Perl 版本所在的 CPAN 安装模块。我知道如何使用命令行安装模块,我只是想知道是否有办法将 CPAN 与系统的核心 Perl 分开。
我是不是该:
下载源代码并专门为这些模块创建一个目录?
任何人有他们成功使用的任何其他想法或实现?
我正在使用带有 Perl 5.16.2 的 Arch Linux。
你在寻找类似的东西local::lib
local::lib - 使用 PERL5LIB 为 perl 模块创建和使用本地 lib/
下载并解压最新版本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 模块。
您不需要手动安装模块。您只需要在某个地方安装它,并且您的环境配置为在那里安装它。然后你就可以正常使用 cpan/cpanp/cpanm/etc 了。(cpan 减去我的胜利)
手动设置该环境有点痛苦,因此大多数人使用应用程序为他们设置配置。
对此的两个主要选择是:
local::lib
— 这会设置您的环境变量,以便您可以在远离系统 perl 的地方安装模块,但继续使用系统 perl。
Perlbrew - 这会为您安装一个完整的 perl,因此您可以完全避免使用系统 perl,并使用更新版本的 perl 本身,然后可能会随您的系统一起提供。它还同时管理多个 perl 安装(因此您可以针对不同版本的 perl 测试您的模块)。
就个人而言,我更喜欢 Perlbrew(因为它可以轻松使用闪亮的新功能,如 yada yada 运算符和智能匹配(现在智能匹配不是那么新),但设置需要更长的时间(因为你必须编译 perl )。
我听说最好不要从您系统的 Perl 版本所在的 CPAN 安装模块。
这个想法是通过升级他们使用的模块来避免破坏你的发行版工具。
在这种情况下,将模块安装到一个新目录并告诉 Perl 使用它PERL5LIB
(这是前面提到的 install::lib 所做的)根本没有帮助,因为 Perl 看到的内容与您在通常的site
目录。
(当没有权限安装到默认目录时,主要使用 PERL5LIB 安装模块。)
使用 Perl 系统的另一个问题是您无法升级它。
两者的解决方案是安装您自己的 Perl 版本。这很容易使用perlbrew
.
cpanminus 是怎么回事? CPAN 减模块
为什么不将模块打包成真正的包、rpm 或 dep 样式?这样您就可以控制已安装的软件,您可以根据需要和习惯删除和更新软件包。因此,与其绕过管理(这很少是一个好主意),不如让您保持控制。
如果您使用的是基于 rpm 的发行版,我真的推荐OBS来完成这项任务。您可以创建自己的项目、配置源、测试它们并为各种发行版和架构创建包。当您将家庭项目存储库导入软件管理时,只需单击一下即可安装软件包。