2009-10-09 183 views
4

我的管理给了我须藤权如何使用cpan工具安装本地模块?

cpan 

我还需要安装几个非CPAN模块(Atlassian的人群 - > SVN连接器)全球PERL5LIB。

我依稀记得cpan可以从本地来源安装,而不需要从网络上拉取模块。

任何指针?我可以这样做吗?或者我应该让他以root身份手动安装这些模块(对我来说是一大麻烦)?谢谢!

回答

8

如果你想安装在当前目录中的Perl发行,使用点,而不是一个文件名组成:cpan程序(而不是一个最新版本的

cpan . 

如果您正在使用一个当前带有CPAN.pm),您可以使用-j开关指定一个备用配置文件,您可以在其中设置--install_baseINSTALL_BASE指令,还可以设置connect_to_internet_ok等选项的值。

cpan -j /path/to/Config.pm Foo::Bar 

如果你想修改当前的配置,使您的备用配置文件,使用-J获取文件文本:

cpan -J 

理想的情况下,对代替给你超级priveleges,即系统管理员会为Perl管理员创建了一个组,并为该组拥有的模块安装指定了一个目录,并将您添加到该组。那么你不需要任何特殊的权力。

+0

好.... $ cpan -J 未知选项:J 无法安装! $ cpan -j 未知选项:j 无需安装! 谢谢 – webwesen 2009-10-09 21:40:22

+0

这就是为什么我说你必须得到最新版本。你在使用哪一个? – 2009-10-09 23:27:27

+0

完全同意Brian关于perl组的解决方案 - 这可以避免我在评论中提到的根shell漏洞(现在以一个例子来说)。 – 2009-10-10 12:47:47

1

sudo的权利cpan -i应该做的伎俩:

bash-3.2$ cpan -i Foo::Bar 
CPAN: File::HomeDir loaded ok (v0.80) 
CPAN: Storable loaded ok (v2.18) 
... 

我不熟悉,通过CPAN脚本文件安装。在cpan shell中,您可以将look放入模块目录中,如果需要,可以从那里手动构建/安装,但原始tar文件仍然来自存储库,并且cpan命令行似乎没有该功能(如果确实如此我怀疑这个管理员会拥有sudo权限,因为那时你会拥有一个root shell)。

更新:布赖恩·d FOY表明,我错了关于给sudo来CPAN的命令是一样给人一个root shell - 这里就是为什么我是对的:

bash-3.2# whoami 
aufflick 
bash-3.2# sudo cpan 
cpan[1]> o conf shell bash 
cpan[2]> look Acme::Bleach 
..... downloads and extracts Acme::Bleach ... 
CPAN: File::Temp loaded ok (v0.18) 
Working directory is /Users/aufflick/.cpan/build/Acme-Bleach-1.12-v768Dv 
bash-3.2# whoami 
root 
bash-3.2# 
+0

我应该更清楚。他给了我sudo for cpan和sudo for ./Build - 这让我可以安装到全局PERL5LIB – webwesen 2009-10-09 15:53:51

+0

如果你指定一个模块名称,它总是试图从CPAN镜像中获取它。 – 2009-10-09 19:26:22

+0

没有任何参数,cpan程序会将您放入CPAN.pm shell。不过,这仍然不是root shell。你只能与CPAN.pm交互。 – 2009-10-09 19:27:08

1

你不实际需要您的管理员给予您安装CPAN模块的权利。实际上local::lib由于多种原因是更好的解决方案。

+3

如果您想为所有用户安装模块,local :: lib并不是一个更好的解决方案。 – 2009-10-09 19:14:45

+0

我应该如何继续如果我没有local :: lib在第一位? – Ram 2009-12-07 09:47:40