在我尝试的大多数Linux发行版中,一些Perl模块可以通过包管理器获得.其他人当然不是.很长一段时间,每当我需要安装一些CPAN模块以确定软件包是否可用时,我会使用我的软件包管理器,并在需要时安装它.
显而易见的优点是,只要有新版本的软件包,就可以更新模块.
但是,如果模块没有预先打包的形式,并且该模块存在依赖关系,则会遇到麻烦.每次cpan shell询问是否应该遵循依赖关系时,启动你的包管理器都会非常累人.
通常,另一个缺点是预封装模块的版本.如果您正在运行Debian或Ubuntu,您很快就会发现,您将无法像最近的CPAN模块作者那样生活在最前沿.
Linux上的其他Perl人如何处理这个问题?你只是忽略你的包经理提供的东西吗?是否有任何工具可以使apt(例如)和cpan更好的队友?或者你只是不通过cpan shell安装任何东西?
我想安装,从源代码,Perl的版本5.005,v5.6,v5.8,v5.10
现在我安装了'v5.10.0'.
/opt/perl/bin /opt/perl/html /opt/perl/lib /opt/perl/man /opt/perl/lib/5.10.0 /opt/perl/lib/site_perl /opt/perl/lib/site_perl/5.10.0
如果我全部安装它们会有任何问题/opt/perl吗?
或者我应该将它们分成他们自己的,特定于版本的目录?喜欢/opt/perl-5.10.0/
我正在使用SGE(Sun Grid Engine)向网格提交作业.我还perlbrew用来管理我安装的Perl版本.我写了一些简短的sh脚本,用于运行perl脚本,需要特定的Perl版本(5.12.2),如下所示:
#!/bin/bash
#$-S /bin/bash
source /home/dave/.bash_profile
/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2
/home/dave/scripts/proc_12.pl --in=/home/dave/in/in.store --dir=/home/dave/in/dir2 --params=/home/dave/in/params.p
Run Code Online (Sandbox Code Playgroud)
现在,当我提交单个作业时,一切正常,但是当我提交很多时,我开始收到perlbrew相关的错误消息,例如:
ln: creating symbolic link `current' to `perl-5.12.2': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan2dist' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan2dist': File exists
ln: cannot remove `/home/dave/perl5/perlbrew/bin/cpanp': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/enc2xs': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/find2perl': No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以我猜这/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2 …