3

Perl5.12のコアモジュールであるFile::FetchをPerl5.8.9にインストールしたいと思います。一般的に、Perlをアップグレードできないため、過去のPerlで将来の日付のモジュールをコンパイルしてインストールしたいと思います。

そこで、モジュールとその依存関係をダウンロードしました。依存関係ツリーをたどるのはかなり苦痛ですが、それらのいくつかがコアモジュールであるという事実についてもっと心配しています。これらをインストールすると、Perl5.8.9コアに5.12からのパッチが適用されます。

私の質問は、将来の日付のモジュール、特にコアモジュールを安全にインストールできるかどうかをどうやって知ることができるかということです。Perlで後方互換性をテストするこの目的のためのチュートリアルはありますか?

編集:
私のモジュールはデュアルライフですが、cpanを使用してコンパイルすることはできません。FTPsite.yamlに悪い要素があるとのことです。ただし、モジュールのMETAファイルの依存関係に従い、モジュールをコンパイルできました。これはcpanの奇妙なビットの1つですか?ありがとうございました。

これらの依存関係をすべて手動でインストールした後、問題を再現できません。しかし、ここにエラーがあります:

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
4

2 に答える 2

8

モジュールがスタンドアロンディストリビューションとコアPerl内の両方として個別に利用できる場合(つまり「デュアルライフ」)、Makefileで許可されていれば、スタンドアロンバージョンを以前のPerlに安全にインストールできます。つまり、実行でき、cpan <Module>エラーなしでビルドおよびテストできる場合は、問題ありません。

唯一の問題は、モジュールが二重寿命ではないかどうかです。これについては、この質問で意見を述べました。これは、おそらくSOLである可能性が高い場所です。

于 2010-10-24T16:04:00.560 に答える
5

perlコアモジュールも個別に利用できる場合、それは古いperlで動作することを意図していることを意味し(明示的にperlのバージョンが必要な場合を除く)、そうでない場合はバグです。

そうは言っても、5.10はほぼ3年前にリリースされており、古いバージョンのperlで新しいモジュールを使用すると、ますます多くの問題が発生するようになります。

cpanまたはcpanplusが依存関係を処理します。

于 2010-10-24T16:31:19.337 に答える