65

我正在使用托管的 Linux 机器,所以我没有写入/usr/lib目录的权限。

当我尝试按照通常的方式安装 CPAN 模块时:

perl Makefile.PL
make test
make install

该模块被提取到一个blib/lib/文件夹中。我保留use blib/lib/ModuleName了,但编译器仍然说找不到模块。我尝试将 .pm 文件复制到本地目录并保留 require ModuleName,但它仍然给我一些错误。

如何将模块安装到其他目​​录并使用它?

4

5 回答 5

67

Stackoverflow 上已有的其他答案:

来自 perlfaq8:


如何保留自己的模块/库目录?

当你构建模块时,告诉 Perl 在哪里安装模块。

对于基于 Makefile.PL 的发行版,在生成 Makefile 时使用 INSTALL_BASE 选项:

perl Makefile.PL INSTALL_BASE=/mydir/perl

您可以在您的 CPAN.pm 配置中进行设置,以便在您使用 CPAN.pm shell 时模块自动安装在您的私有库目录中:

% cpan
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
cpan> o conf commit

对于基于 Build.PL 的发行版,使用 --install_base 选项:

perl Build.PL --install_base /mydir/perl

您也可以将 CPAN.pm 配置为自动使用此选项:

% cpan
cpan> o conf mbuildpl_arg '--install_base /mydir/perl'
cpan> o conf commit
于 2009-02-12T23:02:12.103 回答
45

我有一个类似的问题,我什至无法安装 local::lib

我创建了一个安装程序,将模块安装在相对于 .pl 文件的某个位置

安装过程如下:

perl Makefile.PL PREFIX=./modulos
make
make install

然后,在需要该模块的 .pl 文件中,该文件位于 ./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path
use module::name;

其余文件(makefile.pl、module.pm 等)无需更改。

您可以只调用 .pl 文件

perl file.pl
于 2009-02-12T10:57:48.977 回答
19

local::lib会帮助你。它将说服“make install”(和“Build install”)安装到您可以写入的目录,并告诉perl如何获取这些模块。

通常,如果您想使用 blib/ 目录中的模块,您想说明通常perl -Mblib ...在哪里调用脚本。...

于 2009-02-12T10:21:03.760 回答
3

我强烈推荐Perlbrew。它允许您运行多个版本的 Perl、安装软件包、如果您愿意,可以破解 Perl 内部结构,以及所有常规用户权限。

于 2013-08-31T12:10:43.733 回答
3

对于基于 Makefile.PL 的发行版,在生成 Makefile 时使用 INSTALL_BASE 选项:

perl Makefile.PL INSTALL_BASE=/mydir/perl
于 2014-07-19T08:34:19.867 回答