我想在这一点我没有root访问权限的共享服务器上安装Perl模块。 我怎样才能做到这一点? 他们似乎也有CPAN(运行命令时就抱怨说),是否有可能更新从我的帐户被使用CPAN命令,无需root访问的是旧版本?
Answer 1:
到目前为止,我已经找到了最简单的方法是说
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
这是假设你的个人资料被命名为.profile
,你可能需要改变,要成为.bash_profile
, .bashrc
,等以后你可以这样安装模块
cpanm Module::Name
并简单地使用它们,你会如果被安装在根目录下以同样的方式。
下面是什么上面的命令做了简要说明。
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`
设置使用本地模块所需要的环境变量,然后
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
以确保我们将能够使用它们,我们下次登录的时间。
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
将有望使男人找到你的本地模块的手册页。
Answer 2:
http://web.archive.org/web/20120427144232/http://perl.jonallen.info/writing/articles/install-perl-modules-without-root
http://novosial.org/perl/life-with-cpan/non-root/
在这两个指令集的主要步骤包括本地:: lib模块也
据我所知,CPAN逻辑包含在Perl模块(CPAN.pm),这意味着,你也可以轻松,你会与任何其他的Perl模块安装较新的一个在本地目录。
此外,一旦你安装你的模块在非标准位置,请从非标准位置上装载库这两个问题(有些信息是已经可以在上面的链接):
如何做一个Perl程序知道在哪里可以找到含有它使用Perl模块的文件吗?
Perl的@INC是如何构建的? (又名什么在哪里Perl模块中搜索的影响的所有方式?)
Answer 3:
为了完整,这是安装过程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
Answer 4:
如果您希望能够阅读的cpanminus安装的模块的手册页为好,你也应该确保所选择的库路径的正确子目录中MANPATH。 所以表示cpanm的安装过程中上述解决方案需要以下附加命令:
export MANPATH=$HOME/Library/perl5/man:$MANPATH' >> ~/.bash_profile