微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何判断机器上特定Perl安装最初提供的模块?

如何判断机器上特定Perl安装最初提供的模块?

(这不是重复的:
How can I tell if a Perl module is core or part of the standard install?
(“如何判断Perl模块是核心还是标准安装的一部分?”)
– 它实际上是一个衍生问题来自它)

我正在寻找最初安装的内容,作为安装的一部分提供了哪些模块,内置的内容.不是从那以后安装的.

我希望这适用于任何Perl版本.

我希望能够这样做:

>在具有安装的计算机上使用Perl程序本身/命令中的脚本.因此,我将依靠安装以某种形式记录它最初的内容.
>在我安装之前,在下载的软件包上.问它有什么模块.

我想这样做的原因是:

>我想知道在编写使用Perl安装的机器上运行的软件时我可以期望哪些模块是认模块,以及我需要添加哪些模块不是认模块
>如果我保留原始安装程序映像/包或者知道如何在线再次获取确切的东西,那么我可以为多台机器安装可重复的一致Perl,了解将出现哪些模块以及哪些模块不会出现.
>我的Perl软件将有一个定义明确的部署程序,因为很容易准确定义软件所需的内容
>由于我的组织中存在的策略,我可能无法轻松更新/升级Perl版本(这就是它的方式,我不想对此进行侧面讨论).这样的政策是合理的,因为总是有风险升级到可以超过收益的新软件.因此,开发人员需要知道他们可以获得什么.

我之所以提出这个问题,是因为,对于任何Perl版本,似乎没有一种自动方式来查找整体标准安装,从而定义您的机器上的认安装中可能存在哪些模块 – 请参阅问题:
How can I tell if a Perl module is core or part of the standard install?
(“如何判断Perl模块是核心还是标准安装的一部分?”)

不能依赖Perl版本来告诉您哪些模块存在与否.当然,可能有在线文档告诉你.但是我需要在我下载/安装的版本上自动执行此操作.即使是不同Linux / Unix发行版上的相同Perl版本也可能不同.

解决方法

一般来说,你不能.如果您接受并从不同的角度处理问题,那么您将获得更少的挫败感. Module::CoreList提供了所有安装中应包含的内容的列表,但是供应商不需要遵守该列表,并且大多数发行版包括许多不属于核心的模块.除非建立自己的数据库,包括每个发行版的哪个版本 – 这是一项艰巨的任务 – 没有太多希望.请注意,即使对于随发行版附带的模块,安装的版本也可能不同.

我可以看到几种不同的方法解决这个问题:

>如果您在开发时知道目标(例如具体的目标)
您可以根据这个做出决定的ActivePerl版本.
>对于一般情况,像模块一样部署应用程序并指定
依赖.例如使用Module::Build并列出的先决条件
需要Build.pl脚本的一部分. cpan shell可以关注并解决
依赖自动.
>如果您想完全回避问题,请使用PARPar::Packer创建自包含的部署包.

原文地址:https://www.jb51.cc/Perl/171355.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐