perl 依赖管理 extUtils::Installed 列表到容器中

问题描述

在 python 中,我们有 pip install -r requirements.txt。 perl 中是否有类似的东西?

我如何从这个 ExtUtils::Installed 列表开始,首先安装给定的 perl,然后安装正确的版本模块?

./installed.pl 
DBD::sqlite - 1.66
DBI - 1.643
Perl - 5.26.1

Extutils 适用于目录路径和 .packlists

解决方法

听起来像 cpanfilecpanm 很适合这里。

您的容器应该首先安装正确的 perl(比如 perlbrew),然后是 App::cpanminus。之后,一个名为 cpanfile 的文件对应于上面的 requirements.txt 或 .packlist,看起来像

requires 'DBI' => '1.643';
requires 'DBD::SQLite' => '1.66';

您使用 cpanm --installdeps . 安装的将安装其余部分。

该文件格式指定了这些模块的最低版本,隐式 >=。如果您需要固定特定版本,请使用 == 或避免使用带有 != 的版本。

cpanfile 格式很灵活,允许您使用 --with-develop 标志等有条件地安装模块

编辑:有些人更喜欢 cpm 的速度而不是 cpanm 来安装大量模块。它需要一些捷径(默认跳过测试),在稳定的环境中不会产生影响。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...