28

这是我的情况:我对 Perl 几乎一无所知,但它是移植机器上唯一可用的语言。我只有在我的本地工作区而不是 Perl 安装位置中写入的权限。我需要使用 CPAN 中的Parallel::ForkManager Perl 模块

如何在不进行中央安装的情况下使用此 Parallel::ForkManager?是否有我可以设置的环境变量以便将其定位?

谢谢

京东

4

11 回答 11

36

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

当你构建模块时,告诉 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 文档。

于 2008-10-30T21:01:37.467 回答
7

将包形式 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;

——应该这样做。

于 2014-02-20T14:59:12.273 回答
6

查看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/中的东西。

于 2008-10-30T21:01:44.363 回答
4

有 PERL5LIB 环境变量,-I在使用模块时在命令行上。有告诉 CPAN 和 CPANPLUS 的机制。

CPAN 手册的问题 5 中有信息(perldoc CPAN,或查看CPAN本身)。

于 2008-10-30T21:19:30.130 回答
3
use lib 'directory';
use Parallel::ForkManager;
于 2008-10-30T21:15:29.547 回答
2

您可以使用-I(大写 i)命令行开关,后跟放置模块的目录;或尝试使用“use lib”指令,后跟目录。

于 2008-10-30T21:04:16.013 回答
2

是的,即使您可以使用 CPAN

于 2008-11-02T09:12:04.383 回答
2
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
于 2012-08-27T14:52:41.737 回答
2

使用cpanm -l $DIR_NAME选项。

于 2014-11-01T10:08:10.813 回答
1

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

另请参阅https://opensource.com/article/18/7/perlbrew

于 2019-09-12T13:25:50.903 回答
0

考虑使用 cpanminus,这是另一个线程上的建议

于 2010-06-13T12:03:23.117 回答