我正在尝试将一些Perl模块安装到非标准位置,我们称之为/non/standard/location
。我用了
perl Makefile.PL PREFIX=/non/standard/location
make;make install
安装它们。
在使用该模块的脚本中,似乎有必要指定一个包含Perl版本的长目录路径,如下所示:
#!/usr/local/bin/perl
use lib '/non/standard/location/lib/perl5/site_perl/5.8.9/';
use A::B;
是否有任何use lib
或其他声明我可以使用哪个不长且冗长,并且不包含Perl的实际版本,以便我不必返回并编辑如果Perl的版本升级了,那么这个程序会不会出现?
答案 0 :(得分:5)
可能没有解决您的所有问题,但您知道local::lib吗?当它在系统perl中可用时,您只需use local::lib
。如果不是:
use lib glob '~/perl5/lib/perl5';
use local::lib;
这可能有点限制 - 不确定它在Windows上是如何工作的 - 但它对我的目的来说已经足够了。当然,如果您可以在脚本运行之前设置环境(.bashrc
,SetEnv
等),则可以忘记use lib glob
,因为正确的路径已经设置在PERL5LIB
。
答案 1 :(得分:0)
目前我已通过以下处方安装,这似乎可以解决问题。
perl Makefile.PL --no-manpages --skipdeps PREFIX=/non/system/location INSTALLSITELIB=/non/system/location/lib INSTALLSITEBIN=/non/system/location/bin INSTALLMAN1DIR=/non/system/location/man/man1 INSTALLMAN3DIR=/non/system/location/man/man3
我欢迎任何建设性的批评。我想使用--no-manpages
,但无论如何似乎都需要INSTALLMAN1DIR
。