如何找出并控制Perl模块在本地存储的位置?

时间:2012-02-04 02:39:59

标签: linux perl build perl-module

某些Perl模块(例如DBI)需要下载,编译并安装

我正在连接到远程生产测试计算机,我只有本地用户密码(没有root,原因很明显)。我已经使用wget下载了我需要的一些外部模块,例如DBI,并将这些模块解压缩到~/modules/DBI-<version>这样的目录中。

通常,在为Linux编译某些内容时,运行configure以在安装之前预先配置所有内容;其中一个开关是--prefix=<some_dir>,它控制编译后的可执行文件和所有编译后的依赖项最终会在哪里结束。

但是对于Perl模块,你没有运行configure,所以我的第一个问题是:

  • 运行DBI.pm时,我可以控制已编译模块(例如make)的去向吗?如果是这样,怎么样?

如果失败了,我至少需要更新@INC,所以我可以参考模块;所以我的第二个问题是:

  • 如何在运行make时找到已编译模块的位置?

编译后我无法发出make install,此外,我被要求不要。 (我被要求设计脚本,以便它不依赖于标准系统路径中的外部模块。)

3 个答案:

答案 0 :(得分:1)

perl模块应该与发行版的系统一起安装,就像在BSD上使用gentoo或pkg_add一样安装,或者使用CPAN。不要做你正在做的事,这会让你感到困惑。系统。

perl -MCPAN -e "install DBI"

答案 1 :(得分:1)

您可以使用local::lib在自定义目录中安装Perl模块。这样安装的模块可以在Perl脚本中使用:

use local::lib '/path/to/custom/directory';  # Custom modules can be `use`d from hereon
当您使用-l-L标志时,

cpanm会在内部使用local::lib。要在当前目录中安装模块:

cpanm -l. DBI

答案 2 :(得分:-1)

在构建模块的makefile时设置安装目录。每个模块都附带一个Makefile.PL,必须运行它来构建makefile,同时考虑到当前的Perl配置。 Makefile.PL有选项PREFIX,说明要在哪里安装构建,因此在解压缩模块的分发并cd到解压缩的目录后,您可以说

perl Makefile.PL PREFIX=/module/directory/path
make test
make install

Perl文档中描述了此过程 - 阅读perldoc perlmodinstall。您可以进入CPAN shell并使用'o'(小写)oprion,它允许您更改传递给makefile.PL的选项,但我认为手动构建/测试/安装更直接并且为您提供更多地控制过程。

请记得添加

use lib qw(/module/directory/path);

到程序的开头,以确保Perl在新目录中搜索模块。