这是我的情况:我对 Perl 几乎一无所知,但它是移植机器上唯一可用的语言。我只有在我的本地工作区而不是 Perl 安装位置中写入的权限。我需要使用 CPAN 中的Parallel::ForkManager Perl 模块
如何在不进行中央安装的情况下使用此 Parallel::ForkManager?是否有我可以设置的环境变量以便将其定位?
谢谢
京东
这是我的情况:我对 Perl 几乎一无所知,但它是移植机器上唯一可用的语言。我只有在我的本地工作区而不是 Perl 安装位置中写入的权限。我需要使用 CPAN 中的Parallel::ForkManager Perl 模块
如何在不进行中央安装的情况下使用此 Parallel::ForkManager?是否有我可以设置的环境变量以便将其定位?
谢谢
京东
当你构建模块时,告诉 Perl 在哪里安装模块。
对于基于 C 的发行版,在生成 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
对于基于 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 有一个警告,因为它与旧版本的 ExtUtils::MakeMaker 提倡的 PREFIX 和 LIB 设置不同。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
在此之前在 home 中创建一个文件夹来存储您的本地模块,现在进入下载的文件夹并运行以下命令:
perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install
从已安装的文件夹中获取 ForkManager 的路径,/home/username/myModules 并找到 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;
您可以使用-I
(大写 i)命令行开关,后跟放置模块的目录;或尝试使用“use lib”指令,后跟目录。
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
使用cpanm -l $DIR_NAME
选项。
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,这是另一个线程上的建议