我已下载模块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::SHA1
(perl -MDigest::SHA1 -e 'print $Digest::SHA1::VERSION'
显示版本2.11),仍为Algorithm::CouponCode
(其安装方式与Digest::SHA1
相同)抱怨它可以在@INC
谢谢!
答案 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::FAQ和Module::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)
副本。