如何降级到perl 5.10.1?

Flu*_*ffy 5 perl downgrade

我遇到了许多perl模块需要解决的问题perl(:MODULE_COMPAT_5.10.1):

Error: Package: perl-Class-MOP-1.12-1.el6.x86_64 (epel)
           Requires: perl(:MODULE_COMPAT_5.10.1)
Error: Package: perl-Moose-1.15-1.el6.x86_64 (epel)
           Requires: perl(:MODULE_COMPAT_5.10.1)
Run Code Online (Sandbox Code Playgroud)

安装的perl版本是5.16.3,操作系统是Amazon Linux AMI版本2014.03,我非常希望降级到perl 5.10.1,以便修复compat问题.我该怎么做呢?

当我尝试安装perl-Net-Amazon-EC2时会发生这种情况,这是yum list shows:

perl-Net-Amazon-EC2.noarch 0.14-2.el6 epel

所以它来自epel,这里是repo文件的相应部分:

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Run Code Online (Sandbox Code Playgroud)

似乎repo中的版本是0.14,最新版本是0.24(我已经尝试手动安装它,但它无法正常工作,我无论如何都不想手动安装所有软件包)

Dav*_* W. 13

最简单的方法是安装Perlbrew.它特定于Linux/Unix,并使用BASH.如果你使用Zsh或Kornshell,你需要让脚本变得简单.如果你在Windows上,那么......祝你好运.

Perlbrew允许您以用户安装的Perls安装多个版本的Perl.您不需要root权限即可使用这些不同版本的Perl您还可以通过Perlbrew运行CPAN以在各种版本的Perl中安装模块.这是安装多个Perl版本以进行测试的好方法.我的默认Perl是5.16,所以我安装了5.18来获取最新的5.10,5.12和5.8.9以尽可能地匹配我们在RHEL服务器上运行的Perl版本.

要从一个版本的Perl切换到另一个版本,请使用以下命令:

$ perlbrew use 5.10   # Use this version in the current shell
Run Code Online (Sandbox Code Playgroud)

要么

$ perlbrew switch 5.10  # This is now your default version of Perl
Run Code Online (Sandbox Code Playgroud)

要安装特定版本的Perl:

$ perlbrew install 5.10  # I'm installing Perl 5.10!
Run Code Online (Sandbox Code Playgroud)

Perlbrew用于$PATH设置你的Perl版本,所以你需要小心你的shebang.你不一定要再运行Perl /usr/bin/perl了.你在Perl脚本中的shebang应该是:

#! /usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)

比尝试降级默认安装的Perl更容易.

  • 我试过这个,但是当我尝试用perlbrew安装任何版本时,我得到了错误:`页面未被检索; HTTP错误代码400或以上.在/usr/share/perl5/vendor_perl/App/perlbrew.pm第228行. (3认同)
  • 您需要做两件事,首先创建必要的目录,然后使用次要版本进行安装,如`cd; mkdir perl5 /; mkdir perl5 / perlbrew /; mkdir perl5 / perlbrew / dists`,然后`perlbrew install perl-5.16.0` (3认同)