【问题标题】:How to specify which version of perl to use on CentOS如何指定在 CentOS 上使用哪个版本的 perl
【发布时间】:2011-06-13 10:28:55
【问题描述】:

我正在运行 CentOS 5.4,默认情况下只有 5.8 版的 perl 可用,并且我有一个需要 perl 5.10 的程序,所以我在 CentOS 上编译了 perl 5.10。由于 perl 命令默认使用 5.8,如何指定要使用哪个 perl 运行程序。

【问题讨论】:

  • 谨防使用较新版本破坏您的供应商/发行版提供的 Perl - 有时系统工具是为它们附带的版本编写的,您可能会导致依赖性问题。

标签: linux perl version centos5


【解决方案1】:

程序文件的第一行应该引用您希望使用的 perl 二进制文件: 例如

#!/usr/bin/perl

您可能还想更改 PATH 变量,以便在 5.8 二进制目录之前列出您的 perl 5.10 二进制文件所在的目录。 例如

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

【讨论】:

    【解决方案2】:

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

     export PATH=/newpath/perl:$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
      

      【讨论】:

        【解决方案4】:

        有一个名为替代品的工具旨在有效地处理这类问题。它基本上为您提供了一种通过操纵符号链接在不同版本的应用程序之间切换的简单方法,例如你的 bin 目录。

        在终端中说“man Alternatives”(或 yum install Alternatives,如果您没有安装它)。

        【讨论】:

          【解决方案5】:

          我强烈建议不要搞乱系统 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
          

          【讨论】:

          • 使用 perlbrew 连接到 5.10 并不能很好地与 Apache 一起工作,尤其是在您使用 mod_perl 时。您可以获得一个 Apache 启动的脚本来通过 perlbrew 运行,但它不是很有效。最有效的方法是通过 mod_perl 钩子,但是 perlbrew 不会有帮助。并行安装 5.10 会更好,并更新 Apache/mod_perl 以使用 5.10 安装 v. 系统 5.8。
          【解决方案6】:

          顺便说一句,perlbrew 软件包可从 CentOS 5.x 的 EPEL 存储库安装。我最初尝试只安装这个 rpm,但它有许多依赖项,所以我选择将 EPEL 存储库添加到我的盒子上的 yum 存储库列表中。

          【讨论】:

            【解决方案7】:

            解决方案有两个部分...首先编辑需要特定版本的 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 脚本

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-26
              • 2011-10-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-22
              相关资源
              最近更新 更多