如何在CentOS上指定使用哪个版本的Perl

8

我正在运行CentOS 5.4,该系统默认只提供Perl 5.8版本。但是,我有一个需要Perl 5.10版本的程序,因此我在CentOS上编译了Perl 5.10。现在问题是如何指定要使用哪个版本的Perl来运行程序,因为默认情况下perl命令使用的是5.8版本。


4
注意不要用新版本覆盖供应商/发行版提供的Perl版本——有时系统工具是为其原始版本编写的,你可能会引起依赖性问题。 - Nathan
7个回答

14

我强烈建议不要去搞系统Perl。

还没有人提到过App::perlbrew。它可以让你拥有多个Perl版本并且轻松地在它们之间切换。当然也可以手动完成,但使用这个工具更加容易;来自Pod的描述:

# Install some Perls
perlbrew install perl-5.12.2
perlbrew install perl-5.8.1
perlbrew install perl-5.13.6

# See what were installed
perlbrew list

# Switch perl in the $PATH
perlbrew switch perl-5.12.2
perl -v

# Switch to another version
perlbrew switch perl-5.8.1
perl -v

# Switch to a certain perl executable not managed by perlbrew.
perlbrew switch /usr/bin/perl

# Or turn it off completely. Useful when you messed up too deep.
perlbrew off

# Use 'switch' command to turn it back on.
perlbrew switch perl-5.12.2

1
使用perlbrew来连接5.10版本的Apache并不是很好,特别是当你在使用mod_perl时。你可以通过perlbrew让Apache启动脚本运行,但效率并不高。最有效的方法是通过mod_perl钩子,但这时perlbrew就没有用处了。进行一个5.10版本的并行安装会更好,并更新Apache/mod_perl以使用5.10版本而不是系统自带的5.8版本。 - Lance Cleveland

6
程序文件的第一行应该引用你希望使用的perl二进制文件: 例如:
#!/usr/bin/perl

您可能还希望更改PATH变量,以使包含perl 5.10二进制文件的目录在5.8二进制文件目录之前列出。

例如:

export PATH=/path/to/perl/5.10:$PATH

3

我喜欢在/usr/local/bin中制作不同的perl可执行文件的符号链接:

$ [sudo] ln -s /path/to/perl5.10.1.exe /usr/local/bin/perl510
$ [sudo] ln -s /path/to/perl5.13.8.exe /usr/local/bin/perl513
$ ... etc. ...
$ # and just for completeness
$ ln -s /usr/bin/perl /usr/local/bin/perl58

然后只需调用:

$ perl510 script_to_use_with_v5.10.pl

1
有一个叫做“alternatives”的工具,旨在有效地处理这种问题。它基本上通过操作符号链接(例如你的bin目录中的符号链接),为你提供了一种轻松切换不同应用程序版本的方法。
在终端中输入“man alternatives”(如果没有安装该工具,则输入“yum install alternatives”)。

0

将您的PATH环境变量设置为指向您的新perl可执行文件。例如

 export PATH=/newpath/perl:$PATH

0

解决方案有两个部分...首先编辑需要特定版本的myscript.pl

old
#!/usr/bin/perl

new
#!/usr/bin/env perl

以上对脚本的正常执行没有影响...当您想要让myscript.pl使用特定的perl版本时,请创建一个包含以下内容的包装脚本

export PATH=/cool/new/version/perl:$PATH
#  now execute script on following line
/path/to/myscript.pl

这样其他脚本的调用保持不变,它们仍然使用默认的 Perl,而启动器包装脚本则使用选择的 Perl 版本执行相同的 myscript.pl 脚本。


0

顺便说一下,perlbrew包可以从EPEL存储库中安装到CentOS 5.x。我最初尝试仅安装此rpm,但它有许多依赖项,因此我选择将EPEL存储库添加到我的yum repos列表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接