Red Hat Training

A Red Hat training course is available for RHEL 8

5.8. 如何使用 Perls 脚本处理 RPM 软件包

从 RHEL 8 开始,默认 buildroot 中不包含 Perl 编程语言。因此,包含 Perl 脚本的 RPM 软件包必须使用 RPM SPEC 文件中的 BuildRequires: 指令明确指明 Perl 的依赖项。

5.8.2. 使用特定的 Perl 模块

如果构建时需要特定的 Perl 模块,请使用以下步骤:

流程

  • 在您的 RPM SPEC 文件中应用以下语法:

    BuildRequires: perl(MODULE)
    注意

    另外,将此语法应用到 Perl 核心模块,因为它们可能会随时间推移和移出 perl 软件包。

5.8.3. 将软件包限制为特定的 Perl 版本

要将软件包限制为特定的 Perl 版本,请按照以下步骤执行:

流程

  • 使用 RPM SPEC 文件中的 perl(:VERSION) 依赖项与所需的版本约束:

    例如,要将软件包限制为 Perl 版本 5.22 及更新的版本,请使用:

    BuildRequires: perl(:VERSION) >= 5.22
警告

不要使用与 perl 软件包版本的比较,因为它会包括 epoch 号。

5.8.4. 确保软件包使用正确的 Perl 解释器

红帽提供了多个 Perl 解释器,它们不完全兼容。因此,任何提供 Perl 模块的软件包都必须在运行时使用在构建时所用的 Perl 解释器。

要确定这一点,请按照以下步骤执行:

流程

  • 对于提供 Perl 模块的任何软件包,在 RPM SPEC 文件中包括版本化的 MODULE_COMPAT Requires:

    Requires:  perl(:MODULE_COMPAT_%(eval `perl -V:version`; echo $version))