为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何在没有root权限的情况下安装Perl模块?

/ 猿问

请问如何在没有root权限的情况下安装Perl模块?

手掌心 2019-09-14 15:10:02

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

我在Linux机器上,我没有root权限。我想通过CPAN将一些软件包安装到我的主目录中,这样当我运行Perl时,它就能看到它。

我跑了cpan,这要求一些配置选项。它要求提供一些目录,它建议~/perl“对于非root用户”。尽管如此,当我尝试安装软件包时,它在make install步骤中失败了,因为我没有写访问权限/usr/lib/perl5/whatever

如何配置CPAN以便我可以将软件包安装到我的主目录中?


查看完整描述

3 回答

?
烙印99

请参阅local :: lib

安装完成后,您可以执行以下操作:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'


查看完整回答
反对 回复 2019-09-16
?
富国沪深

perlfaq8中记录了这种方式,这就是local :: lib正在为你做的事情。

这也是一个经常被问到的StackOverflow问题:

好奇的是,当我使用你原来的问题标题时,这些都没有被建议(这是一个好标题在找到答案时非常重要的原因之一)。


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

构建模块时,请告诉Perl在哪里安装模块。

如果要安装模块供自己使用,最简单的方法可能是local :: lib,可以从CPAN下载。它为您设置各种安装设置,并在您的程序中使用相同的设置。

如果您想要更灵活,则需要根据您的特定情况配置CPAN客户端。

对于基于Makefile.PL的发行版,在生成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

对于基于Build.PL的发行版,请使用--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告诉这些工具将您的模块放入/ mydir / perl / lib / perl5。请参阅如何在运行时将目录添加到包含路径(@INC)?有关如何运行新安装的模块的详细信息。

但是,INSTALL_BASE有一个警告,因为它的行为与旧版ExtUtils :: MakeMaker所倡导的PREFIX和LIB设置不同。INSTALL_BASE不支持在同一目录下为多个Perl版本或不同体系结构安装模块。您应该考虑是否真的需要它,如果这样做,请使用较旧的PREFIX和LIB设置。有关更多详细信息,请参阅ExtUtils :: Makemaker文档。



查看完整回答
反对 回复 2019-09-16
?
慕仰8121524

CPAN方式

  1. 运行cpan命令。如果您没有配置CPAN,请先执行此操作!否则,您将看到cpan提示符。在这种情况下,键入look local::lib,您将有一个新的shell提示符。在这个新shell中,运行bootstrap命令,同时配置和编译模块,如下所示。

    user@host:~/.cpan/build/local-lib-1.004003-UyX2wf$ perl Makefile.PL --bootstrap && make test && make install

  2. 现在,导出一些变量:

    local :: lib将安装东西的路径

    echo 'eval $(perl -I$index.t/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc

    和Perl变量以避免用户输入

    echo 'export PERL_MM_USE_DEFAULT=1' >> ~/.bashrc

  3. 现在加载你的bashrc运行

    source ~/.bashrc

  4. 尝试安装运行 cpan <SOME_VALID_MODULE_NAMESPACE>

而已!现在,您可以使用没有root权限的cpan安装模块。但是,请记住,这只适用于包括root用户在内的CURRENT USER!

cpanminus方式

如果您安装了这个系统,那么您的系统管理员应该喝啤酒!

赶紧跑

$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)

打开另一个终端并运行

$ env |grep PERL

你应该看到这样的东西:

PERL5LIB = $ HOME / perl5 / lib / perl5 PERL_MB_OPT = - install_base“$ HOME / perl5”

PERL_LOCAL_LIB_ROOT = $ HOME / perl5的

PERL_MM_OPT = INSTALL_BASE = $ HOME / perl5的

但如果你不是,那么导出这样的变量:

$ echo "export PERL5LIB=\"$HOME/perl5/lib/perl5\"">>~/.bashrc && \ echo "export PERL_MB_OPT=\"--install_base '$HOME/perl5'\">>~/.bashrc && \ echo "export PERL_LOCAL_LIB_ROOT=$HOME/perl5">>~/.bashrc

最后,加载你的bashrc文件并尝试使用命令安装

source ~/.bashrc

cpanm <SOME_VALID_MODULE_NAMESPACE>

FIM!



查看完整回答
反对 回复 2019-09-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信