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

Posted

技术标签:

【中文标题】我如何知道谁在 Centos 6 上安装了哪个 CPAN 模块以及何时安装?【英文标题】:How can I tell who installed which CPAN module and when on Centos 6? 【发布时间】: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' 它可能有助于找出加载模块的位置。也可能有所帮助:***.com/questions/2526804/… cpan 在 /root/.cpan/build 中留下了一些文件,您可以查找 CGI-4.51-xxx 目录,然后查找具有类似时间戳的其他目录。您可能会发现它已作为某个其他模块的依赖项进行了更新,这至少会给您一些问题。 【参考方案1】:

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

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

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

【讨论】:

Re "cpan 客户端没有做任何事情来记录什么时候做了什么。",有perldoc perllocal。如果模块是由 * 安装的,则安装附加到 perllocal.pod。它会说模块是什么时候安装的,而不是由谁安装的。 (* 我假设 EU::MM 和 M::B 都这样做。)当然,如果模块是使用系统的包管理器而不是 cpan/cpanm 安装的,则不会有此日志。但我希望某处会有这样的日志......?

以上是关于我如何知道谁在 Centos 6 上安装了哪个 CPAN 模块以及何时安装?的主要内容,如果未能解决你的问题,请参考以下文章

在 centos 6 中安装编译器 gfortran

centos7如何知道jdk的在哪个目录

如何给CentOS安装字体库?

我的CentOS6.0已经安装了php 5.3.2 ,怎么给它加上php-fpm呢

在CentOS上安装Java 1.6 Update 141

你如何知道 Ubuntu 上安装了哪个版本的 GTK+?