Как да премина към perl 5.10.1?

Сблъсквам се с много проблеми с 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)

Инсталираната perl версия е 5.16.3, OS е 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 и ето съответния раздел от репо файл:

[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

Изглежда, че версията в репо е 0.14, а най-новата е 0.24 (опитах се да го инсталирам ръчно, но не се получи и в никакъв случай не искам да инсталирам ръчно за всички пакети)


person Fluffy    schedule 08.04.2014    source източник
comment
Откъде ги взимате тези пакети?   -  person Richard Huxton    schedule 08.04.2014
comment
Най-доброто нещо вероятно е просто да добавите нова инсталация на Perl на 5.10.1, вместо да понижавате (което би било объркващо). Има много помощ за управление на множество инсталации на Perl. Вижте например perlbrew.pl.   -  person    schedule 08.04.2014
comment
@Richard Huxton, yum install perl-Moose и yum install perl-Net-Amazon-EC2 се провалят поради това.   -  person Fluffy    schedule 08.04.2014
comment
Тогава или опаковката за Amazon Linux е повредена, или вие сте нарушили конфигурацията на опаковката. Това не изглежда да са грешки на Perl - предполагам, че е yum оплакване, че новият пакет е грешната версия.   -  person Richard Huxton    schedule 08.04.2014
comment
@Richard Huxton, не съм правил никакви промени в AMI - стартирах от console.aws.amazon.com, ssh'ed в instanse, стартирах yum install, получих грешка.   -  person Fluffy    schedule 08.04.2014
comment
@dan111, Re Вероятно най-доброто нещо е просто да добавите нова инсталация на Perl на 5.10.1, вместо да понижавате, той няма да използва пакетите, така че няма да трябва да инсталира 5.10.1. Ако инсталира свой собствен Perl, трябва да инсталира най-новия.   -  person ikegami    schedule 08.04.2014
comment
@ikegami - може би, но yum се опитва да инсталира Perl 5.10 пакети и неговият perl е 5.16.3 - нещо е счупено.   -  person Richard Huxton    schedule 08.04.2014
comment
Не знам дали можете да добавите някакъв флаг за отстраняване на грешки или подробен флаг към вашите yum извиквания или има някакъв друг начин да разберете откъде идват тези пакети. Въпреки това изглежда много вероятно те идват от грешното хранилище.   -  person Richard Huxton    schedule 08.04.2014
comment
@Richard Huxton, актуализирах въпроса с репо, откъдето идва.   -  person Fluffy    schedule 08.04.2014
comment
@ikegami - да, беше предназначено за теб, но не видях, че отговаряш на dan111. Игнорирайте бърборенето ми.   -  person Richard Huxton    schedule 08.04.2014
comment
Ясно е, че хранилището на epel не трябва да е там. Според aws.amazon.com/amazon-linux-ami/latest -release-notes Perl беше надстроен и вероятно някои настройки на yum не бяха актуализирани. Бих прегледал всички конфигурирани yum repos и просто ще проверя дали всички са правилните.   -  person Richard Huxton    schedule 08.04.2014
comment
@Richard Huxton, с --disablerepo=epel пакетът изобщо няма да се инсталира. Как да проверя коректността на yum repo? Възможно ли е rpm за този модул, поддържащ нещо различно от perl 5.10, никога да не е създаден и избутан в репо?   -  person Fluffy    schedule 08.04.2014
comment
Боя се, че не мога да ти помогна. Ще трябва да се консултирате с документите / поддръжката на Amazon. Аз самият съм Debian човек.   -  person Richard Huxton    schedule 08.04.2014
comment
@ikegami, да, може би предпоставката на въпроса трябва да бъде оспорена. Но предвид предположението, че Perl 5.10 трябва да бъде инсталиран, това е правилният начин.   -  person    schedule 09.04.2014


Отговори (1)


Най-лесното нещо, което можете да направите, е да инсталирате Perlbrew. Той е специфичен за Linux/Unix и използва BASH. Ако използвате Zsh или Kornshell, трябва малко да промените скриптовете. Ако сте на Windows, добре... успех.

Perlbrew ще ви позволи да инсталирате множество версии на Perl като потребителски инсталирани Perls. Не се нуждаете от root разрешение, за да използвате тези различни версии на Perl. Можете също да стартирате CPAN чрез Perlbrew, за да инсталирате модули в различните версии на Perl. Това е чудесен начин да инсталирате няколко версии на Perl за тестови цели. Моят Perl по подразбиране е 5.16, така че инсталирах 5.18, за да получа най-новите, 5.10, 5.12 и 5.8.9, за да съответства възможно най-точно на версията на Perl, която изпълняваме на нашите RHEL сървъри.

За да превключите от една версия на Perl към друга, използвайте тази команда:

$ perlbrew use 5.10   # Use this version in the current shell

or

$ 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. Вече не е задължително да използвате Perl под /usr/bin/perl. Вашата работа във вашите Perl скриптове трябва да бъде:

#! /usr/bin/env perl

Много по-лесно, отколкото да се опитвате да понижите вашия инсталиран по подразбиране Perl.

person David W.    schedule 08.04.2014
comment
Опитах това, но когато се опитам да инсталирам която и да е версия с perlbrew, получих грешката: Page not retrieved; HTTP error code 400 or above. at /usr/share/perl5/vendor_perl/App/perlbrew.pm line 228. - person Fabiotk; 19.06.2017
comment
@Fabiotk, % наличен perlbrew - person Toothrot; 24.07.2017
comment
Трябва да направите две неща, първо да създадете необходимите директории и след това да използвате второстепенната версия, за да направите инсталацията, както в cd ; mkdir perl5/; mkdir perl5/perlbrew/; mkdir perl5/perlbrew/dists и след това perlbrew install perl-5.16.0 - person Paulo Ney; 24.05.2018