我在一台Linux机器上,我没有root权限。我想通过CPAN将一些包安装到我的主目录中,这样当我运行Perl时,它就可以看到它。我运行了{\f3 cpan},它要求一些配置选项。它要求一些目录,它建议“非根用户”使用{\f3 ~/perl}。但是,当我尝试安装软件包时,它在{\f3 make install}步骤失败,因为我没有{\f3 /usr/lib/perl5/whatever}的写入权限。我如何配置CPAN,以便我可以将软件包安装到我的主目录中?
cpan
~/perl
make install
/usr/lib/perl5/whatever
j7dteeu81#
请参阅local::lib。安装后,您可以执行以下操作:perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
ax6ht2ek2#
perlfaq 8中记录了一种方法,这就是local::lib为您所做的。这也是StackOverflow的常见问题:
奇怪的是,当我使用你最初的问题标题时,这些都没有被建议(这也是为什么一个好的标题对找到你的答案非常重要的原因之一)。如何保留自己的模块/库目录?当您构建模块时,请告诉Perl安装模块的位置。如果你想安装自己使用的模块,最简单的方法可能是local::lib,你可以从CPAN下载它。它为你设置各种安装设置,并在你的程序中使用这些相同的设置。如果您想要更大的灵活性,则需要针对特定情况配置CPAN客户端。对于基于Makefile. PL的发行版,在生成Makefile时使用INSTALL_BASE选项:
perl Makefile.PL INSTALL_BASE=/mydir/perl
您可以在www.example.com配置中进行设置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
您也可以将www.example.com配置CPAN.pm为自动使用此选项:
% cpan cpan> o conf mbuild_arg "--install_base /mydir/perl" cpan> o conf commit
INSTALL_BASE告诉这些工具将您的模块放入/mydir/perl/lib/perl 5。有关如何运行新安装的模块的详细信息,请参见如何在运行时将目录添加到包含路径(@INC)中。但是,INSTALL_BASE有一个警告,因为它的作用与旧版本ExtUtils::MakeMaker支持的PREFIX和LIB设置不同。INSTALL_BASE不支持在同一目录下安装多个Perl版本或不同体系结构的模块。您应该考虑是否真的需要这样做,如果确实需要,请使用旧的PREFIX和LIB设置。有关更多详细信息,请参见ExtUtils::Makemaker文档。
anhgbhbe3#
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 install1.现在,导出一些变量:local::lib将安装内容的路径echo 'eval $(perl -I$index.t/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc和Perl变量以避免用户输入echo 'export PERL_MM_USE_DEFAULT=1' >> ~/.bashrc1.现在加载您的 bashrc 运行source ~/.bashrc1.尝试安装运行cpan <SOME_VALID_MODULE_NAMESPACE>就是这样!现在您可以使用cpan安装模块,而不需要root权限。但是,请记住,这只适用于CURRENT USER,包括root用户!
look local::lib
user@host:~/.cpan/build/local-lib-1.004003-UyX2wf$ perl Makefile.PL --bootstrap && make test && make install
echo 'eval $(perl -I$index.t/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc
echo 'export PERL_MM_USE_DEFAULT=1' >> ~/.bashrc
source ~/.bashrc
cpan <SOME_VALID_MODULE_NAMESPACE>
如果你安装了这个,你的系统管理员应该喝杯啤酒!跑吧$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)打开另一个终端并运行$ env |grep PERL您应该会看到如下所示的内容:如果您有任何问题,请单击此处。如果您有任何问题,请单击此处。PERL_MM_OPT=安装基础=$主目录/perl 5但如果不是,则导出如下变量:$ 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>个菲姆!
$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
$ env |grep PERL
$ 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
cpanm <SOME_VALID_MODULE_NAMESPACE>
3条答案
按热度按时间j7dteeu81#
请参阅local::lib。
安装后,您可以执行以下操作:
perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
ax6ht2ek2#
perlfaq 8中记录了一种方法,这就是local::lib为您所做的。
这也是StackOverflow的常见问题:
奇怪的是,当我使用你最初的问题标题时,这些都没有被建议(这也是为什么一个好的标题对找到你的答案非常重要的原因之一)。
如何保留自己的模块/库目录?
当您构建模块时,请告诉Perl安装模块的位置。
如果你想安装自己使用的模块,最简单的方法可能是local::lib,你可以从CPAN下载它。它为你设置各种安装设置,并在你的程序中使用这些相同的设置。
如果您想要更大的灵活性,则需要针对特定情况配置CPAN客户端。
对于基于Makefile. PL的发行版,在生成Makefile时使用INSTALL_BASE选项:
您可以在www.example.com配置中进行设置CPAN.pm,以便在使用CPAN.pm shell时,模块自动安装在您的专用库目录中:
对于基于Build. PL的发行版,请使用--install_base选项:
您也可以将www.example.com配置CPAN.pm为自动使用此选项:
INSTALL_BASE告诉这些工具将您的模块放入/mydir/perl/lib/perl 5。有关如何运行新安装的模块的详细信息,请参见如何在运行时将目录添加到包含路径(@INC)中。
但是,INSTALL_BASE有一个警告,因为它的作用与旧版本ExtUtils::MakeMaker支持的PREFIX和LIB设置不同。INSTALL_BASE不支持在同一目录下安装多个Perl版本或不同体系结构的模块。您应该考虑是否真的需要这样做,如果确实需要,请使用旧的PREFIX和LIB设置。有关更多详细信息,请参见ExtUtils::Makemaker文档。
anhgbhbe3#
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
1.现在,导出一些变量:
local::lib将安装内容的路径
echo 'eval $(perl -I$index.t/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc
和Perl变量以避免用户输入
echo 'export PERL_MM_USE_DEFAULT=1' >> ~/.bashrc
1.现在加载您的 bashrc 运行
source ~/.bashrc
1.尝试安装运行
cpan <SOME_VALID_MODULE_NAMESPACE>
就是这样!现在您可以使用cpan安装模块,而不需要root权限。但是,请记住,这只适用于CURRENT USER,包括root用户!
cpanminus方式
如果你安装了这个,你的系统管理员应该喝杯啤酒!
跑吧
$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
打开另一个终端并运行
$ env |grep PERL
您应该会看到如下所示的内容:
如果您有任何问题,请单击此处。
如果您有任何问题,请单击此处。
PERL_MM_OPT=安装基础=$主目录/perl 5
但如果不是,则导出如下变量:
$ 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>
个菲姆!