Как можно безопасно скомпилировать модуль Perl 5.12 для Perl 5.8.9? - PullRequest
3 голосов
/ 24 октября 2010

Я хочу установить File :: Fetch, который является основным модулем в Perl 5.12, в моем Perl 5.8.9. В общем, я хочу скомпилировать и установить будущие модули в моем Perl с устаревшей версией, потому что я не могу обновить свой Perl.

Итак, я скачал модуль, а также его зависимости. После дерева зависимостей довольно больно, но меня больше беспокоит тот факт, что некоторые из них являются основными модулями. Если я установлю их, мое ядро ​​Perl 5.8.9 будет иметь исправления от 5.12.

Мой вопрос заключается в том, как я могу узнать, могу ли я безопасно установить будущие модули, особенно модули ядра. Существует ли учебное пособие для проверки обратной совместимости в Perl?

EDIT:
Мой модуль работает дважды, но я не могу скомпилировать его с помощью cpan. Он сказал, что мой FTPsite.yaml имеет плохой элемент. Однако я следовал за зависимостями в файлах META модулей и мог скомпилировать модуль. Это один из странных битов с cpan? Спасибо.

Я не могу воссоздать проблему после того, как установил все эти зависимости вручную. Но вот ошибка:

cpan[5]> install File::Fetch
Running install for module 'File::Fetch'
Running make for B/BI/BINGOS/File-Fetch-0.24.tar.gz
CPAN: Digest::SHA loaded ok (v5.48)
CPAN: Time::HiRes loaded ok (v1.9715)
CPAN: YAML loaded ok (v0.72)
Alert: While trying to 'parse' YAML file
 '/Users/martin/.cpan/FTPstats.yml'
with 'YAML' the following error was encountered:
  YAML Error: Invalid element in map
   Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT
   Line: 3
   Document: 1
 at /opt/local/lib/perl5/site_perl/5.8.9/YAML.pm line 36

Ответы [ 2 ]

8 голосов
/ 24 октября 2010

Если модуль доступен отдельно (т. Е. «С двойным сроком действия»), как в виде автономного дистрибутива, так и внутри ядра Perl, тогда автономная версия безопасна для установки на более раннем Perl, если это позволяет его Makefile.То есть, если вы можете выполнить cpan <Module>, и он собирает и тестирует без ошибок, тогда у вас все хорошо.

Единственная проблема в том, что модуль не имеет двойной жизни, о чем я говорил в этот вопрос - где вы, скорее всего, SOL

5 голосов
/ 24 октября 2010

Если модуль ядра Perl также доступен отдельно, это означает, что он предназначен для работы на старых версиях Perl (если явно не требуется какая-то версия Perl), а если нет, то это ошибка.

Тем не менее, 5.10 был выпущен почти три года назад, и вы начнете видеть все больше и больше проблем, используя новые модули с более старыми версиями perl.

cpan или cpanplus будут обрабатывать зависимости для вас.

...