手动安装Perl模块

时间:2011-09-24 18:26:13

标签: perl perl-module

我已下载模块Digest::SHA1并将其解压缩到一个目录(../Digest-SHA1-2.13/),然后将所有SHA1。*文件复制到(../Digest-SHA1-2.13/)摘要)

在perl脚本中,我做了:使用Digest :: SHA1; 启动这样的脚本:

perl -I ../Digest-SHA1-2.13/Digest perlscriptname.pl

我收到此错误:

Can't locate loadable object for module Digest::SHA1 in @INC

我认为它与共享库(* .so)有关?我不知道如何从这里继续。

我可以使用CPAN(-MCPAN)模块直接安装它,因为我没有权限在该服务器上执行此操作,并且只能在本地安装(应用程序运行的地方)。 我的最终目标是使用依赖于Algorithm::CouponCode

Digest::SHA1

奇怪的是,我已安装Digest::SHA1perl -MDigest::SHA1 -e 'print $Digest::SHA1::VERSION'显示版本2.11),仍为Algorithm::CouponCode(其安装方式与Digest::SHA1相同)抱怨它可以在@INC

中找到它

谢谢!

3 个答案:

答案 0 :(得分:25)

使用此配方手动安装perl模块:

tar zxf Digest-SHA1-2.13.tar.gz
cd Digest-SHA1-2.13
perl Makefile.PL
make
make test
make install

请注意,某些发行版会有Build.PL个文件而不是Makefile.PL。在这种情况下,请使用此配方:

tar zxf ...
cd ...
perl Build.PL
./Build
./Build test
./Build install

(您可以通过运行make install./Build install来实现目标。)

如果您需要更改安装目录,请使用:

perl Makefile.PL INSTALL_BASE=...

perl Build.PL --install_base ...

取决于模块的类型。

有关详细信息,请参阅ExtUtils::MakeMaker::FAQModule::Build

的perldoc

答案 1 :(得分:4)

Perl模块有两种:pure-Perl和XS。 Pure-Perl模块完全用Perl编写,通常只需将.pm文件复制到适当的目录即可安装。 XS模块用Perl和C编写(XS由ExtUtils::ParseXS模块处理成C代码)并且需要C编译器来安装它们。

正如dsolimano所说,当你没有root访问权限时,为系统Perl安装Perl模块的最简单方法是使用local::lib。 (你可以做local::lib自己做的事情,但为什么要这么麻烦?)

Digest::SHA1单独使用而不是使用Algorithm::CouponCode的原因是系统Perl已经安装了Digest::SHA1版本2.11。当您使用-I ../Digest-SHA1-2.13/Digest时,use Digest::SHA1会从../Digest-SHA1-2.13/Digest中获取Perl代码,但是从XS代码构建的共享库不在相应的位置

答案 2 :(得分:3)

您无法使用local::lib的任何理由?

  

使用PERL5LIB

创建和使用本地lib / for perl模块

它基本上是一个帮助您使用私有(非系统范围)目录作为Perl库目录的工具。

设置完成后,您可以运行类似

的命令
perl -MCPAN -Mlocal::lib -e 'CPAN::install(Algorithm::CouponCode)'

然后您的脚本将使用您本地安装的Algorithm::CouponCode)副本。