Perl 我如何知道是谁安装了哪个CPAN模块以及何时安装在Centos 6上?

Perl 我如何知道是谁安装了哪个CPAN模块以及何时安装在Centos 6上?,perl,centos6,cpan,Perl,Centos6,Cpan,在CentOS 6.8机器上,我看到CGI版本更新到v4.51时出现了一些问题。我可以使用以下方法检查CGI的版本: perl -MCGI -e 'print $CGI::VERSION ."\n";' 但是,我更感兴趣的是知道它是什么时候更新的,由谁更新的,因为系统上禁用了模块的自动更新。可能还有其他Perl模块或CentOS库也会受到影响。我怎样才能知道发生了什么,什么时候发生的,是谁发生的?除了查看文件属性,cpan客户端没有做任何事情来记录它是如何做的,什么时候做的

在CentOS 6.8机器上,我看到CGI版本更新到v4.51时出现了一些问题。我可以使用以下方法检查CGI的版本:

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

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

除了查看文件属性,cpan客户端没有做任何事情来记录它是如何做的,什么时候做的

这就是我鼓励人们为CPAN模块保留项目目录的原因之一(可能使用local::lib),这样他们就可以在不干扰其他项目的情况下控制所依赖模块的版本。还有其他的解决方案,比如Pinto,也试图管理这一点


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

请尝试perl-MData::Dumper-MCGI-e'say Dumper\%INC',它可能有助于确定加载模块的位置。也可能有帮助:cpan在/root/.cpan/build中留下一些文件,您可以查找CGI-4.51-xxx目录,然后查找具有类似时间戳的其他目录。您可能会发现它被更新为某个其他模块的依赖项,这至少会给您一些问题。如果“cpan客户端不需要做任何事情来记录何时如何做了什么”,则有
perldoc perllocal
。如果模块是由*安装的,安装将附加到
perllocal.pod
。它会说模块是什么时候安装的,但不会说是谁安装的。(*我假设EU::MM和M::B都这样做。)当然,如果使用系统的包管理器而不是
cpan
/
cpanm
安装模块,则不会有此日志。但我想在某个地方会有这样的记录。。。?