我如何在没有root权限的情况下安装Perl模块?
我在一台没有root权限的Linux机器上。 我想通过CPAN将一些软件包安装到我的主目录中,以便在运行Perl时能够看到它。
我跑了cpan
,要求一些configuration选项。 它询问了一些目录,它提示~/perl
为非root用户。 不过,当我尝试安装一个软件包时,在make install
步骤中会失败,因为我没有对/usr/lib/perl5/whatever
写权限。
我怎样才能configurationCPAN,使我可以安装软件包到我的主目录?
请参阅local :: lib 。
一旦你安装了,你可以做:
perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
在perlfaq8中有这样的logging,这就是local :: lib为你所做的。
这也是一个经常被问到的StackOverflow问题:
- 为什么安装某些CPAN模块需要root权限?
- 如何在本地安装CPAN模块而无需root权限(DynaLoader.pm第229行错误)?
- 如何告诉CPAN.pm将所有模块安装在特定的目录中?
- 我怎样才能安装一个CPAN模块到本地目录?
- 我怎样才能使用一个新的Perl模块没有安装权限?
- 我怎样才能使用CPAN作为非root用户?
- 我如何使用cpan工具安装本地模块?
好奇的是,当我使用你原来的问题标题(这是一个好的标题是寻找你的答案非常重要的原因之一)时,这些都没有build议。
我如何保留自己的模块/库目录?
当你build立模块时,告诉Perl在哪里安装模块。
如果你想自己安装模块,最简单的方法可能是local :: lib,你可以从CPAN下载。 它为您设置各种安装设置,并在您的程序中使用这些相同的设置。
如果你想要更多的灵活性,你需要configuration你的CPAN客户端为您的特定情况。
对于基于Makefile.PL的发行版,在生成Makefiles时使用INSTALL_BASE选项:
perl Makefile.PL INSTALL_BASE=/mydir/perl
你可以在你的CPAN.pmconfiguration中设置它,这样当你使用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
你可以configurationCPAN.pm自动使用这个选项:
% cpan cpan> o conf mbuild_arg "--install_base /mydir/perl" cpan> o conf commit
INSTALL_BASE告诉这些工具把你的模块放到/ mydir / perl / lib / perl5中。 请参阅如何在运行时将目录添加到包含path(@INC)? 有关如何运行新安装的模块的详细信息。
但是INSTALL_BASE有一个警告,因为它的行为与旧版本的ExtUtils :: MakeMaker提倡的PREFIX和LIB设置不同。 INSTALL_BASE不支持在同一目录下安装多个版本的Perl或不同体系结构的模块。 你应该考虑如果你真的想要这样做,如果你这样做,使用旧的PREFIX和LIB设置。 有关更多详细信息,请参阅ExtUtils :: Makemaker文档。