3

我想在我的 Perl 5.8.9 中安装 File::Fetch,它是 Perl 5.12 中的核心模块。一般来说,我想在过时的 Perl 中编译和安装过时的模块,因为我无法升级我的 Perl。

所以我下载了模块及其依赖项。遵循依赖树非常痛苦,但我更担心其中一些是核心模块这一事实。如果我安装这些,我的 Perl 5.8.9 核心将有来自 5.12 的补丁。

我的问题是我如何知道我是否可以安全地安装未来的模块,尤其是核心模块。是否有用于在 Perl 中测试向后兼容性的教程?

编辑:
我的模块是双重生命的,但我无法使用 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
4

2 回答 2

8

如果模块是单独可用的(即“双生命”),作为独立发行版和内部核心 Perl,那么独立版本可以安全地安装在早期的 Perl 上,假设它的 Makefile 允许它。也就是说,如果你能做到cpan <Module>并且它可以毫无错误地构建和测试,那么你就很好。

唯一的问题是,如果一个模块不是双生命的,我在这个问题中对此提出了意见——这就是你可能会遇到的问题

于 2010-10-24T16:04:00.560 回答
5

如果一个 perl 核心模块也可以单独使用,这意味着它打算在较旧的 perls 上工作(除非它明确需要某些版本的 perl),如果不是,那就是一个错误。

也就是说,5.10 是在大约三年前发布的,您将开始看到越来越多的新模块与旧版本的 perl 一起使用。

cpan 或 cpanplus 将为您处理依赖项。

于 2010-10-24T16:31:19.337 回答