5.6. 检查 RPM 是否有常见错误


创建软件包后,您可能想要检查软件包的质量。检查软件包质量的主要工具是 rpmlint

使用 rpmlint 工具,您可以执行以下操作:

  • 提高 RPM 可维护性。
  • 通过执行对 RPM 的静态分析来启用内容验证。
  • 通过执行对 RPM 的静态分析来启用错误检查。

您可以使用 rpmlint 检查二进制 RPM、源 RPM (SRPM)和 spec 文件。因此,这个工具对打包的所有阶段都很有用。

请注意,rpmlint 有严格的准则。因此,有时跳过一些错误和警告是可以接受的,如以下部分中所示。

注意

在以下部分中描述的示例中,rpmlint 会不带任何选项运行,这会产生一个非详细的输出。有关每个错误或警告的详细说明,请运行 rpmlint -i

5.6.1. 检查 Bash 程序示例是否有常见错误

在以下部分中,调查在检查 bello spec 文件、bello SRPM 和 bello 二进制 RPM 示例中可能出现的警告和错误。

5.6.1.1. 检查 bello spec 文件是否有常见错误

检查以下示例的输出,以了解如何检查 bello spec 文件是否有常见错误。

bello spec 文件运行 rpmlint 命令的输出

$ rpmlint bello.spec
bello.spec: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.
Copy to Clipboard Toggle word wrap

对于 bello.spec,只有一个 invalid-url Source0 警告。这个警告表示 Source0 指令中列出的 URL 不可访问。这是正常的,因为指定的 example.com URL 不存在。假设此 URL 在以后将有效,您可以忽略此警告。

5.6.1.2. 检查 bello SRPM 是否有常见错误

检查以下示例的输出,以了解如何检查 bello 源 RPM (SRPM)是否有常见错误。

bello SRPM 运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/SRPMS/bello-0.1-1.el9.src.rpm
bello.src: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.src: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.
Copy to Clipboard Toggle word wrap

对于 bello SRPM,有 invalid-url URL 警告,表示 URL 指令中指定的 URL 不可访问。假设此 URL 在以后将有效,您可以忽略此警告。

5.6.1.3. 检查 bello 二进制 RPM 是否有常见错误

在检查二进制 RPM 时,rpmlint 命令会检查以下项目:

  • Documentation
  • man page
  • 致地使用文件系统层次结构标准

检查以下示例的输出,以了解如何检查 bello 二进制 RPM 是否有常见错误。

bello 二进制 RPM 运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/RPMS/noarch/bello-0.1-1.el9.noarch.rpm
bello.noarch: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.noarch: W: no-documentation
bello.noarch: W: no-manual-page-for-binary bello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.
Copy to Clipboard Toggle word wrap

no-documentationno-manual-page-for-binary 警告意味着 RPM 没有文档或手册页,因为您没有提供。除了输出警告,RPM 通过了 rpmlint 检查。

5.6.2. 检查 Python 程序示例是否有常见错误

在以下部分中,调查在检查 RPM 以获取 pello spec 文件、pello SRPM 和 pello 二进制 RPM 示例上常见错误时可能会出现的警告和错误。

5.6.2.1. 检查 pello spec 文件是否有常见错误

检查以下示例的输出,以了解如何检查 pello spec 文件是否有常见错误。

pello spec 文件运行 rpmlint 命令的输出

$ rpmlint python-pello.spec
0 packages and 1 specfiles checked; 0 errors, 0 warnings.
Copy to Clipboard Toggle word wrap

对于 python-pello spec 文件,rpmlint 工具检测到零错误或警告,这意味着该文件被正确组成。

重要

对于进入生产环境的软件包,请确保正确检查 spec 文件是否有错误和警告。

5.6.2.2. 检查 pello SRPM 是否有常见错误

检查以下示例的输出,以了解如何检查 pello 源 RPM (SRPM)是否有常见错误。

在 SRPM for pello 上运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/SRPMS/python-pello-1.0.2-1.el9.src.rpm
python-pello.src: E: description-line-too-long C Pello is an example package with an executable that prints Hello World! on the command line.
1 packages and 0 specfiles checked; 1 errors, 0 warnings.
Copy to Clipboard Toggle word wrap

description-line-too-long 错误表示您提供的描述超过允许的字符数。

除了输出错误外,SRPM 传递 rpmlint 检查。

5.6.2.3. 检查 pello 二进制 RPM 是否有常见错误

在检查二进制 RPM 时,rpmlint 命令会检查以下项目:

  • Documentation
  • man page
  • 致地使用文件系统层次结构标准

检查以下示例的输出,以了解如何检查 pello 二进制 RPM 是否有常见错误。

pello 二进制 RPM 运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/RPMS/noarch/python3.12-pello-1.0.2-1.el9.noarch.rpm
pello-1.0.2-1.el9.noarch.rpm
python3.12-pello.noarch: E: description-line-too-long C Pello is an example package with an executable that prints Hello World! on the command line.
python3.12-pello.noarch: W: no-manual-page-for-binary pello_greeting
1 packages and 0 specfiles checked; 2 errors, 1 warnings.
Copy to Clipboard Toggle word wrap

  • no-manual-page-for-binary 警告表示 RPM 没有 man page,因为您没有提供任何 man page。
  • description-line-too-long 错误表示您提供的描述超过允许的字符数。

除了输出警告和错误,RPM 通过了 rpmlint 检查。

5.6.3. 检查示例 C 程序是否有常见错误

在以下部分中,调查在检查 RPM 以获取 cello spec 文件、cello SRPM 和 cello 二进制 RPM 示例时可能出现的警告和错误。

5.6.3.1. 检查 cello spec 文件是否有常见错误

检查以下示例的输出,以了解如何检查 cello spec 文件是否有常见错误。

cello spec 文件运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/SPECS/cello.spec
/home/admiller/rpmbuild/SPECS/cello.spec: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.
Copy to Clipboard Toggle word wrap

对于 cello.spec,只有一个 invalid-url Source0 警告。这个警告表示 Source0 指令中列出的 URL 不可访问。这是预期的,因为指定的 example.com URL 不存在。假设此 URL 在以后将有效,您可以忽略此警告。

5.6.3.2. 检查 cello SRPM 是否有常见错误

检查以下示例的输出,以了解如何检查 cello 源 RPM (SRPM)是否有常见错误。

cello SRPM 运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/SRPMS/cello-1.0-1.el9.src.rpm
cello.src: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.src: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.
Copy to Clipboard Toggle word wrap

对于 cello SRPM,有 invalid-url URL 警告。此警告意味着 URL 指令中指定的 URL 不可访问。假设此 URL 在以后将有效,您可以忽略此警告。

5.6.3.3. 检查 cello 二进制 RPM 是否有常见错误

在检查二进制 RPM 时,rpmlint 命令会检查以下项目:

  • 文档
  • 手册页
  • 致地使用文件系统层次结构标准

检查以下示例的输出,以了解如何检查 cello 二进制 RPM 是否有常见错误。

cello 二进制 RPM 运行 rpmlint 命令的输出

$ rpmlint ~/rpmbuild/RPMS/x86_64/cello-1.0-1.el9.x86_64.rpm
cello.x86_64: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.x86_64: W: no-documentation
cello.x86_64: W: no-manual-page-for-binary cello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.
Copy to Clipboard Toggle word wrap

no-documentationno-manual-page-for-binary 警告表示 RPM 没有文档或手册页,因为您没有提供。

除了输出警告,RPM 通过了 rpmlint 检查。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat