我正在运行 CentOS 5.4,默认情况下只有 5.8 版的 perl 可用,并且我有一个需要 perl 5.10 的程序,所以我在 CentOS 上编译了 perl 5.10。由于 perl 命令默认使用 5.8,我如何指定要使用哪个 perl 运行程序。
7 回答
我加入了我的声音,建议完全不要弄乱系统 perl。
还没有人提到App::perlbrew。它允许您拥有多个 Perl 版本并在它们之间轻松切换。当然,这可以手动完成,但使用此工具为您完成此操作要容易得多;来自 Pod——</p>
# 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
程序文件的第一行应该引用您希望使用的 perl 二进制文件:例如
#!/usr/bin/perl
您可能还想更改 PATH 变量,以便在 5.8 二进制目录之前列出您的 perl 5.10 二进制文件所在的目录。例如
export PATH=/path/to/perl/5.10:$PATH
我喜欢在以下位置创建指向我的不同 perl 可执行文件的符号链接/usr/local/bin
:
$ [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
有一种称为替代品的工具旨在有效地处理这类问题。它基本上为您提供了一种在不同版本的应用程序之间切换的简单方法,方法是在您的 bin 目录中操作符号链接。
在终端中说“man Alternatives”(或 yum install Alternatives,如果您没有安装它)。
将您的 PATH 环境变量设置为指向您的新 perl 可执行文件。例如
export PATH=/newpath/perl:$PATH
顺便说一句,perlbrew 软件包可从CentOS 5.x的EPEL存储库安装。我最初尝试只安装这个 rpm,但它有许多依赖项,所以我选择将 EPEL 存储库添加到我的盒子上的 yum 存储库列表中。
解决方案有两个部分...首先编辑需要特定版本的 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 脚本