我想在我没有root访问的共享服务器上安装perl模块。我如何做到这一点?他们似乎有一个旧版本的CPAN(运行命令时抱怨),是否可以从我的帐户更新正在使用的CPAN命令,而无需root用户访问?
解决方法
我发现到目前为止最简单的方法是说
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
将希望导致人找到您的本地模块的手册页。