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
$ 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.
对于 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
$ 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.
对于 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
$ 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.
no-documentation
和 no-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
$ rpmlint python-pello.spec
0 packages and 1 specfiles checked; 0 errors, 0 warnings.
对于 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
$ 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.
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
$ 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.
-
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
$ 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.
对于 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
$ 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.
对于 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
$ 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.
no-documentation
和 no-manual-page-for-binary
警告表示 RPM 没有文档或手册页,因为您没有提供。
除了输出警告,RPM 通过了 rpmlint
检查。