打包所有Perl模块依赖项?

时间:2014-02-06 13:18:53

标签: perl install

我发现自己在没有root访问权限的CentOS上,以及一个甚至没有ExtUtils :: MakeMaker的非常蹩脚的Perl。

是否存在可以产生模块依赖关系存档的东西,以便我打开一个可以放入@INC的目录?

3 个答案:

答案 0 :(得分:2)

使用App::cpanminus

cd ~/bin
curl -LO http://xrl.us/cpanm
chmod +x cpanm

export ROOT=/some/directory
export PERL5LIB=${ROOT}/lib/perl5

然后,安装ExtUtils::MakeMakerModule::CoreList。您无法进行简单安装,因为这些模块由cpanm使用,并且它不会在解压缩的源目录中查找它们。因此,请cpanm下载它们,然后进行半手动安装。它实际上安装了三个发行版(上面两个和ExtUtils::Install),这就是为什么你要三次调用构建咒语的原因:

PERL_MM_OPT=INSTALLBASE=$ROOT ./cpanm -L $ROOT --look ExtUtils::MakeMaker Module::CoreList
perl Makefile.PL
make && make install
exit
perl Makefile.PL
make && make install
exit
perl Makefile.PL
make && make install
exit

将包和cd依次解压缩到每个发行版的目录中。至少这是在CentOS 6安装上发生的事情,我碰巧在四处闲逛。

之后,您应该能够通过

安装模块及其依赖项
./cpanm -L $ROOT <module name, or url, or tarball goes here>

查看cpanm文档以获取更多信息。

答案 1 :(得分:0)

您可以使用perlbrew安装具有用户访问权限的全新Perl。

http://perlbrew.pl/

#install perlbrew
wget -O - http://install.perlbrew.pl | bash

# install new perl for youurself
perlbrew install perl-5.16.0
# set aliases
perlbrew switch perl-5.16.0

#reinstall all moodules for new perl http://perlbrew.pl/Reinstall-All-Modules-On-New-Perl.html
perlbrew list-modules | perlbrew exec --with perl-5.16.0 cpanm

#how to install/recompile third party modules
https://github.com/lecstor/DevNotes/wiki/Image-Magick-with-Perlbrew

此致

答案 2 :(得分:0)

下载并解压ExtUtils::MakeMaker,在您的主目录下创建一个目录lib,通过以下方式安装:

perl Makefile.PL PREFIX=~/lib LIB=~/lib

现在已安装该模块我建议您使用local::lib(通过文档中的bootstrap方法轻松安装)来安装模块:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(MIME::Lite)' # Replace MIME::Lite with what you want to install.

此处MIME::Lite通过cpan安装到您的本地lib目录。 Prelbrew不会花很长时间设置,从长远来看,你可能会有更轻松的时间。

编辑,评论太久了。

@LeeGee也许我不够具体。

所描述的方法将允许您绕过您有权访问的受限制的perl版本,并允许将模块安装到另一个位置。

如果您想在其他计算机上打包您的应用,可以使用PARpp创建一个独立的代码包&amp;模块,或独立的可执行文件。

失败Module::ScanDeps将找到脚本依赖