【问题标题】:How can I tell who installed which CPAN module and when on Centos 6?我如何知道谁在 Centos 6 上安装了哪个 CPAN 模块以及何时安装?
【发布时间】:2021-06-08 09:43:23
【问题描述】:

我在 CentOS 6.8 机器上看到 CGI 版本更新到 v4.51 的一些问题。我可以使用以下命令检查 CGI 的版本:

perl -MCGI -e 'print $CGI::VERSION ."\n";'

但是,我更想知道它何时更新以及由谁更新,因为系统上禁用了模块的自动更新。可能还有其他 Perl 模块或 CentOS 库也可能受到影响。我怎样才能知道发生了什么,发生在什么时候,由谁来做?

【问题讨论】:

  • try perl -MData::Dumper -MCGI -e 'say Dumper \%INC' 它可能有助于找出加载模块的位置。也可能有所帮助:stackoverflow.com/questions/2526804/…
  • cpan 在 /root/.cpan/build 中留下了一些文件,您可以查找 CGI-4.51-xxx 目录,然后查找具有类似时间戳的其他目录。您可能会发现它已作为某个其他模块的依赖项进行了更新,这至少会给您一些问题。

标签: perl centos6 cpan


【解决方案1】:

除了查看文件属性之外,cpan 客户端不会做任何事情来记录它在什么时候做了什么。

这是我鼓励人们为 CPAN 模块(可能带有 local::lib)保留项目目录的原因之一,这样他们就可以控制他们所依赖的模块的版本,而不会干扰其他项目。还有其他解决方案,例如 Pinto,也试图解决这个问题。

评论已经指出,cpan 客户端会将模块及其依赖项更新为 CPAN 上的最新版本。如果 CGI 是另一个更新的依赖项,它可能已被隐式更新。

【讨论】:

  • Re "cpan 客户端没有做任何事情来记录什么时候做了什么。",有perldoc perllocal。如果模块是由 * 安装的,则安装附加到 perllocal.pod。它会说模块是什么时候安装的,而不是由谁安装的。 (* 我假设 EU::MM 和 M::B 都这样做。)当然,如果模块是使用系统的包管理器而不是 cpan/cpanm 安装的,则不会有此日志。但我希望某处会有这样的日志......?
猜你喜欢
  • 1970-01-01
  • 2018-03-28
  • 2013-09-24
  • 2011-05-17
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
相关资源
最近更新 更多