我想在我没有root访问权限的共享服务器上安装perl模块.我怎样才能做到这一点?它们似乎也有旧版本的CPAN(它在运行命令时会抱怨),是否可以更新我帐户中使用的CPAN命令而无需root访问权限?
Cha*_*ens 132
到目前为止我发现的最简单的方法就是说
wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
这是假设你的个人资料被命名.profile,您可能需要更改是.bash_profile,.bashrc等以后你可以这样安装模块
cpanm Module::Name
Run Code Online (Sandbox Code Playgroud)
并简单地使用它们,就像在根目录中安装它们一样.
以下是对上述命令的简要说明.
wget -O- http://cpanmin.us获取最新版本cpanm并将其打印到STDOUT然后通过管道传送到perl - -l ~/perl5 App::cpanminus local::lib.第一个-告诉perl我们期待程序进入STDIN,这使得perl运行cpanm我们刚刚下载的版本. perl将其余参数传递给cpanm.该-l ~/perl5参数告诉cpanm安装Perl模块的位置,另外两个参数是要安装的两个模块. [App::cpanmins] 1是安装的包cpanm. local::lib是一个帮助程序模块,用于管理在本地目录中运行模块所需的环境变量.
安装这些模块后,我们运行
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
Run Code Online (Sandbox Code Playgroud)
设置使用本地模块所需的环境变量然后
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
确保我们下次登录时能够使用它们.
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
希望能让人找到你本地模块的手册页.
DVK*_*DVK 12
http://novosial.org/perl/life-with-cpan/non-root/
两组指令中的主要步骤涉及local :: lib模块
AFAIK,CPAN逻辑包含在Perl模块(CPAN.pm)中,这意味着您也可以像在任何其他Perl模块中一样轻松地在本地目录中安装较新的逻辑.
此外,一旦您将模块安装在非标准位置,请查看从非标准位置加载库的这两个问题(上面的链接中已经提供了一些信息):
Perl程序如何知道在哪里找到包含它使用的Perl模块的文件?
Perl的@INC是如何构建的?(又名影响Perl模块搜索的所有方法是什么?)
为了完整,这是在安装过程中cpanm对OSX,如果你想保持你的perl5下~/Library.
curl -L http://cpanmin.us | perl - -l ~/Library/perl5 App::cpanminus local::lib
eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`
echo 'eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40030 次 |
| 最近记录: |