我昨天升级到 Ubuntu Intrepid Ibex,突然我安装的一些 Perl 模块(在 Hardy Heron 上)都不见了!
我收到通常的“无法在@INC 中找到模块”错误。是否有任何 CPAN 存储库发生了变化或 Intrepid 发生了什么变化?谷歌根本没有帮助。
提前致谢。
标准解决方案是在升级 Perl之前使用 CPAN.pm 生成一个“自动捆绑” 。搜索autobundle 会产生一些现有 SO 问题的链接,这些问题讨论 Perl 模块管理,还有一些看起来应该提供更多信息。CPAN.pm 手册涉及自动捆绑,但没有包含太多细节。
由于您已经升级了 Perl,因此安装模块的一种解决方案是生成一个自动捆绑文件,并使用生成文件中的条目作为指南来编写包含模块条目的自定义自动捆绑文件(仅)。自动捆绑文件格式只是POD,所以这应该很容易做到。
将来您可能应该养成在升级 Perl 之前生成自动捆绑包的习惯。这不是一个完美的解决方案,autobundle 将包含核心模块的条目,在实际构建之前必须删除这些条目,但至少您将拥有已安装 Perl 模块的快照,以便您可以修复 Perl 安装升级后。
您的 Perl 安装已从版本 5.8 更改为 5.10。cpan
由于您需要的许多模块都位于特定于 perl 版本的目录中,因此您可能需要使用 CPAN 工具(例如命令)重新安装。
但是由于您使用的是 Ubuntu,请记住许多 CPAN 库也通过 Ubuntu 包管理器分发,并且 CPAN 包安装到与 Ubuntu 安装它们不同的位置(这对用户是透明的,因为两者都是在@INC
路径中)。
我建议在 Ubuntu 软件包可用时使用它们,因为当中央软件包服务器上发布新软件包时,它们将由软件包管理器 (APT) 更新。名称格式略有不同。以下是从不同来源安装相同软件包的两种方法:
$ cpan List::MoreUtils # installs latest from CPAN
$ sudo apt-get install liblist-moreutils-perl # installs latest from Ubuntu universe
后者的优点是它会被更新sudo apt-get update
。
Perl 在 Intrepid 上发生了变化。
在升级之前,您有 Perl 5.8,现在您有 5.10。
可能使用 /usr/lib/perl5/5.10.* 而不是 /usr/lib/perl5/5.8.8,因为 Perl 版本已更改