perl - 为什么我不应该更新所有 CPAN 模块?

标签 perl updates cpan

我认为定期更新计算机上的所有软件通常是个好主意。由于 CPAN 模块不是由我的包管理器管理的,我想我应该偶尔执行一下 cpan -u 。只有在执行此操作后,我才阅读了有关此内容的手册页注释:

-u  Upgrade all installed modules. Blindly doing this can really break
   things, so keep a backup.
  1. 为什么这会破坏任何东西?否则我应该如何使我的 CPAN 模块保持最新状态?我是否需要跟踪所有手动安装的模块(cpan 似乎没有这样做)并且只定期更新这些模块?我手动安装的模块的依赖关系怎么样?
  2. 为什么即使我没有安装单个 CPAN 模块,cpan -u 也要花费大约 15 分钟来升级内容?
  3. 我可以恢复 cpan -u 吗?为此删除 ~/.cpan 就足够了吗?

最佳答案

Why should this break anything?

它不应该,但复杂的系统很复杂,有时事情确实会中断(例如,如果一个模块使用非向后兼容的更改进行更新,或者依赖于一个具有错误的 C 库,这些错误仅在与特定的组合中出现)依赖项)。

And how should I keep my CPAN modules up to date otherwise;

只要保留备份,以防出现问题。

Why did cpan -u upgrade stuff for ~15min even though I haven't installed a single CPAN module?

Perl 的发布号为 large collection of modules ,并且您的发行版可能已经安装了其他模块。

Can I revert the cpan -u?

您可以使用文档建议您进行的备份覆盖它。

Is it enough to delete ~/.cpan for this?

没有。安装程序工具使用该目录来缓存有关可用模块的数据、存储源代码以及保存构建工件。安装的文件会像任何其他库一样写入您的 lib 中。

关于perl - 为什么我不应该更新所有 CPAN 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648746/

相关文章:

regex - 优化一个充满 '?' 的正则表达式

perl - 用 bash/perl 替换一行的一部分

svn - 我通过 CPAN 升级了 SVN::Core,现在 git-svn 无法识别 http://URLs

perl - 如何使用 cpan 工具安装本地模块?

perl - 使用 Perl 在目录中创建文件

perl - 在 Perl 中对巨大的哈希进行排序

ubuntu - 无法在 Ubuntu 14.04 LTS 上获取更新 (Trusty Tahr)

macos - 在 OSX 上更新 emacs

更新 macOS 后 Xcode 更新卡住

linux - 如何修复:安装 XML::Simple 时未安装 'YAML'?