如何在没有安装权限的情况下使用新的 Perl 模块?

问题描述 投票:0回答:11

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

如何在不进行集中安装的情况下使用 Parallel::ForkManager?我可以设置一个环境变量来定位它吗?

谢谢

京东

perl permissions installation module cpan
11个回答
37
投票

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

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


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

在此之前,在主目录中创建一个文件夹来存储本地模块,现在进入下载的文件夹并运行以下命令:

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;

--应该可以了。


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/ 中的内容。


4
投票

使用该模块时,有 PERL5LIB 环境变量和命令行上的

-I
。有告诉 CPAN 和 CPANPLUS 的机制。

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


3
投票
use lib 'directory';
use Parallel::ForkManager;


2
投票
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl

2
投票

使用

cpanm -l $DIR_NAME
选项。


2
投票

您可以使用

-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.

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


0
投票

考虑使用 cpanminus,这是 this other thread

上的建议
© www.soinside.com 2019 - 2024. All rights reserved.