如何判断机器上特定Perl安装最初提供的模块?
(这是不的副本: How can I tell if a Perl module is core or part of the standard install? (“如何判断Perl模块是核心还是标准安装的一部分?”) - 它实际上是一个衍生问题)
我正在寻找安装最初附带的内容,作为该安装的一部分提供了哪些模块,内置了什么。不是从那以后安装的。
我希望这可以与任何 Perl版本一起使用。
我希望能够做到这一点:
我想这样做的原因是:
我之所以提出这个问题是因为,对于任何Perl版本,似乎没有一种自动方式来找出整体标准安装,这些安装定义了您的机器上的默认安装中可能出现的模块 - 看问题: How can I tell if a Perl module is core or part of the standard install? (“如何判断Perl模块是核心还是标准安装的一部分?”)
不能依赖Perl版本来告诉您哪些模块存在与否。当然,可能有在线文档告诉你。但我需要一个自动方式在我下载/安装的版本上执行此操作。即使是不同Linux / Unix发行版上的相同Perl版本也可能不同。
答案 0 :(得分:6)
对于Debian或Ubuntu,您可以使用
$ dpkg --listfiles perl | grep '\.pm$'
对于Redhat:
$ rpm -ql perl | grep '\.pm$'
答案 1 :(得分:6)
一般情况下你不能。如果您接受并从不同的角度处理问题,那么您将获得更少的挫败感。 Module::CoreList提供了应该包含在所有安装中的列表,但是供应商不需要遵守这些列表,并且大多数发行版都包含许多不属于核心。除非建立自己的数据库,包括每个发行版的哪个版本 - 这是一项艰巨的任务 - 没有太多希望。请注意,即使对于随发行版附带的模块,安装的版本也可能不同。
我可以看到几种不同的方法来解决这个问题:
requires
部分。 cpan shell可以关注并解决
自动依赖。答案 2 :(得分:0)
我正在寻找附带的东西 最初安装,什么模块 是作为其中一部分提供的 安装,什么是内置的。不 从那以后安装了什么。
对于非核心模块,您可以解析perllocal.pod,根据日期分离与Perl安装本身一起安装的初始批量模块。您正在寻找以下行:
=head2 Wed Apr 30 15:40:38 2008: C<Module> L<URI|URI>
所以前几个可能是那些与Perl本身安装并且应该具有相同日期的那些(当然不是同一时间)。那些安装了24小时或更长时间的人将是你想要的。
不确定核心模块,因为在我看来,你在上一个问题中得到的答案是令人满意的,但显然你并不这么认为。可能我错过了一些东西:)
干杯, 报价