这是我的情况:我对 Perl 几乎一无所知,但它是移植机器上唯一可用的语言。我只有在本地工作区域写入的权限,而没有在 Perl 安装位置写入的权限。我需要使用 CPAN 的 Parallel::ForkManager Perl 模块
如何在不进行集中安装的情况下使用 Parallel::ForkManager?我可以设置一个环境变量来定位它吗?
谢谢
京东
当你构建模块时,告诉 Perl 在哪里安装模块。
对于基于 C 的发行版,请使用 INSTALL_BASE 选项 生成 Makefile 时:
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
对于基于 C 的发行版,请使用 --install_base 选项:
perl Build.PL --install_base /mydir/perl
您也可以将 CPAN.pm 配置为自动使用此选项:
% cpan
cpan> o conf mbuild_arg --install_base /mydir/perl
cpan> o conf commit
INSTALL_BASE 告诉这些工具将你的模块放入 F. 有关如何运行新的详细信息,请参阅 L 安装模块。
不过,INSTALL_BASE 有一个警告,因为它的作用 与旧版本的 PREFIX 和 LIB 设置不同 ExtUtils::MakeMaker 提倡。 INSTALL_BASE 不支持 为多个版本的 Perl 或不同版本安装模块 同一目录下的架构。你应该考虑如果你 真的想要那个,如果你想要,请使用旧的 PREFIX 和 LIB 设置。有关更多详细信息,请参阅 ExtUtils::Makemaker 文档。
从 CPAN 下载包到文件夹:
wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz
gunzip Parallel-ForkManager-1.06.tar.gz
tar -xvf Parallel-ForkManager-1.06.tar
在此之前,在主目录中创建一个文件夹来存储本地模块,现在进入下载的文件夹并运行以下命令:
perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install
从安装的文件夹/home/username/myModules中获取ForkManager的路径 并找到 Parallel 文件夹并获取其完整路径。
现在在你的 perl 文件中将它们放在开头
use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;
--应该可以了。
查看来自 Mark Dominus 的这篇文章
摘录:
- 构建 Makefile 时设置 PREFIX=X
- 构建 Makefile 时设置 INSTALLDIRS=vendor 和 VENDORPREFIX=X
- 或者也许您需要设置 INSTALLVENDORLIB 或其他东西来代替 VENDORPREFIX
- 或者也许不是在构建 Makefile 时设置它们,而是需要在运行 make install 目标时设置它们
- 构建Makefile时设置LIB=X/lib
- 使用PAR
- 使用本地::lib
Mark 在他的博客中还给出了另一个解决方案,该解决方案需要更多的空间来描述,但归结为运行 make 和 make test 但不运行 make install,然后使用 blib/ 中的内容。
使用该模块时,有 PERL5LIB 环境变量和命令行上的
-I
。有告诉 CPAN 和 CPANPLUS 的机制。
CPAN 手册的问题 5 中有信息(perldoc CPAN,或查看 CPAN 本身)。
use lib 'directory';
use Parallel::ForkManager;
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
使用
cpanm -l $DIR_NAME
选项。
您可以使用
-I
(大写 i)命令行开关,后跟要放置模块的目录;或者尝试“use lib”指令,后跟目录。
-Idirectory
may be used in conjunction with -P to tell the C preprocessor where to look for include files. By default /usr/include and /usr/lib/perl are searched.
perlbrew
允许您使用本地 Perl 并将其软件包安装到本地目录。
\curl -L https://install.perlbrew.pl | bash
perlbrew init # put this in .bash_profile etc
perlbrew install 5.27.11
perlbrew switch 5.27.11
考虑使用 cpanminus,这是 this other thread
上的建议