我认为通常最好定期更新计算机上的所有软件。由于CPAN模块不是由我的包管理器管理的,因此我认为我应该每隔一段时间执行一次cpan -u
。只是在执行此命令后,我才阅读有关此内容的手册页注释:
-u Upgrade all installed modules. Blindly doing this can really break
things, so keep a backup.
cpan
似乎没有执行此操作)并仅定期更新这些模块?手动安装的模块的依赖性如何?cpan -u
仍要升级约15分钟?cpan -u
吗?为此删除~/.cpan
就足够了吗?答案 0 :(得分:13)
为什么这会破坏任何东西?
不应该,但是复杂的系统很复杂,有时候事情确实会中断(例如,如果使用非向后兼容的更改来更新模块,或者依赖于C语言库,该C语言库中的错误仅与特定版本结合显示)依赖项)。
否则我应该如何使我的CPAN模块保持最新状态; </ p>
只要保留备份,以防万一。
为什么即使我未安装单个CPAN模块,cpan -u仍会在15分钟内升级内容?
Perl随large collection of modules一起分发,并且您的分发可能已经安装了其他模块。
我可以还原cpan -u吗?
您可以使用文档建议的备份覆盖它。
为此足以删除〜/ .cpan吗?
不。安装程序工具使用该目录来缓存有关可用模块的数据,存储源代码并保存构建工件。像其他任何库一样,已安装的文件将被写入您的lib
。
答案 1 :(得分:2)
新的或更新的代码是新的或更新的错误。我对昆汀有相反的看法:为什么改变一堆东西不让事情破裂?这就是我对大多数更新的期望。但是,Perl 5搬运工要竭尽全力地针对尽可能多的CPAN测试 perl 发行版。这并不意味着您对模块的特定使用(以及如何解决现有错误)是稳定的。
perl随附的某些模块也在CPAN上。这些是“双重作用”模块,可能会从CPAN更新。
cpan工具不会为您恢复任何内容,但是您有时可以做我想做的事情。使您的安装成为git repo。更改时分支。尝试使用您的代码的分支。如果有任何问题,您可以随时切换回主服务器。您甚至不需要提交更改! Pinto之类的工具可帮助您管理Perl模块集。
还有其他需要考虑的事情。
首先,我建议您不要使用系统 perl 。让系统执行此操作。如果您想自己管理一个较新的 perl ,请安装另一个。为此,您可能会喜欢perlbrew(我不是,但这没什么大不了的。)
您可以随意破坏它,而系统不会开始做奇怪的事情。考虑像removing . from @INC和Deprecating unescaped left braces in regexes这样的主要变化。这些是 perl 中的更改,但它们打破了一些重要的内容。
第二,您可以将cpan配置为安装在系统目录之外的其他位置。 -I
开关将为您使用local::lib。除此之外,您还可以configure it manually。