如何降级到 perl 5.10.1?

Posted

技术标签:

【中文标题】如何降级到 perl 5.10.1?【英文标题】:How to downgrade to perl 5.10.1? 【发布时间】:2014-05-20 23:23:36 【问题描述】:

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

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)

安装的 perl 版本是 5.16.3,操作系统是 Amazon Linux AMI 版本 2014.03,我非常想降级到 perl 5.10.1,以便修复兼容性问题。我该怎么做?

当我尝试安装 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

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

【问题讨论】:

你从哪里得到这些包? 最好的办法可能是添加一个 5.10.1 的新 Perl 安装,而不是降级(这会很麻烦)。对于管理多个 Perl 安装有很多帮助。例如,请参阅perlbrew.pl。 @Richard Huxton、yum install perl-Mooseyum install perl-Net-Amazon-EC2 都因此而失败。 那么要么是 Amazon Linux 的打包损坏,要么是您损坏了打包配置。那些似乎不是 Perl 错误 - 我猜是百胜抱怨新包是错误的版本。 @Richard Huxton,我没有对 AMI 进行任何更改 - 从 console.aws.amazon.com 开始,ssh 进入实例,运行 yum install,出现错误。 【参考方案1】:

最简单的方法是安装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

$ perlbrew switch 5.10  # This is now your default version of Perl

要安装特定版本的 Perl:

$ perlbrew install 5.10  # I'm installing Perl 5.10!

Perlbrew 使用$PATH 来设置你的 Perl 版本,所以你需要小心你的 shebang。您不必再在/usr/bin/perl 下运行Perl。你在 Perl 脚本中的 shebang 应该是:

#! /usr/bin/env perl

比尝试降级默认安装的 Perl 容易得多。

【讨论】:

我试过这个,但是当我尝试使用 perlbrew 安装任何版本时,我得到了错误:Page not retrieved; HTTP error code 400 or above. at /usr/share/perl5/vendor_perl/App/perlbrew.pm line 228. @Fabiotk, % perlbrew 可用 您需要做两件事,首先创建必要的目录,然后使用次要版本进行安装,如cd ; mkdir perl5/; mkdir perl5/perlbrew/; mkdir perl5/perlbrew/dists 然后perlbrew install perl-5.16.0

以上是关于如何降级到 perl 5.10.1?的主要内容,如果未能解决你的问题,请参考以下文章

如何将PHP 5.6降级到PHP 5.3?

如何将 Xcode 从 7.0 版本降级到 6.4?

苹果 4s如何从8.0版本降级到7.12版本?

如何将 C++ Visual Studio 2008 项目降级到 2005

如何将 salt minion 降级到旧版本?

如何将 PHP 5.6 降级到 PHP 5.3?