3.20. Checking pello for sanity
This section shows possible warnings and errors that can occur when checking RPM sanity on the example of the pello SPEC file and pello binary RPM.
3.20.1. Checking the pello SPEC File
Exemple 3.5. Output of running the rpmlint
command on the SPEC file for pello
$ rpmlint pello.spec pello.spec:30: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name} pello.spec:34: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.pyc pello.spec:39: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}/ pello.spec:43: E: hardcoded-library-path in /usr/lib/%{name}/ pello.spec:45: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.py* pello.spec: W: invalid-url Source0: https://www.example.com/pello/releases/pello-0.1.2.tar.gz HTTP Error 404: Not Found 0 packages and 1 specfiles checked; 5 errors, 1 warnings.
The invalid-url Source0
warning says that the URL listed in the Source0
directive is unreachable. This is expected, because the specified example.com
URL does not exist. Presuming that this URL will work in the future, you can ignore this warning.
The hardcoded-library-path
errors suggest to use the %{_libdir}
macro instead of hard-coding the library path. For the sake of this example, you can safely ignore these errors. However, for packages going into production make sure to check all errors carefully.
Exemple 3.6. Output of running the rpmlint
command on the SRPM for pello
$ rpmlint ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm pello.src: W: invalid-url URL: https://www.example.com/pello HTTP Error 404: Not Found pello.src:30: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name} pello.src:34: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.pyc pello.src:39: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}/ pello.src:43: E: hardcoded-library-path in /usr/lib/%{name}/ pello.src:45: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.py* pello.src: W: invalid-url Source0: https://www.example.com/pello/releases/pello-0.1.2.tar.gz HTTP Error 404: Not Found 1 packages and 0 specfiles checked; 5 errors, 2 warnings.
The new invalid-url URL
error here is about the URL
directive, which is unreachable. Assuming that the URL will be valid in the future, you can safely ignore this error.
3.20.2. Checking the pello binary RPM
When checking binary RPMs, rpmlint
checks for the following items:
- Documentation
- Manual pages
- Consistent use of the Filesystem Hierarchy Standard
Exemple 3.7. Output of running the rpmlint
command on the binary RPM for pello
$ rpmlint ~/rpmbuild/RPMS/noarch/pello-0.1.2-1.el8.noarch.rpm pello.noarch: W: invalid-url URL: https://www.example.com/pello HTTP Error 404: Not Found pello.noarch: W: only-non-binary-in-usr-lib pello.noarch: W: no-documentation pello.noarch: E: non-executable-script /usr/lib/pello/pello.py 0644L /usr/bin/env pello.noarch: W: no-manual-page-for-binary pello 1 packages and 0 specfiles checked; 1 errors, 4 warnings.
The no-documentation
and no-manual-page-for-binary
warnings say that the RPM has no documentation or manual pages, because you did not provide any.
The only-non-binary-in-usr-lib
warning says that you provided only non-binary artifacts in /usr/lib/
. This directory is normally reserved for shared object files, which are binary files. Therefore, rpmlint
expects at least one or more files in /usr/lib/
directory to be binary.
This is an example of an rpmlint
check for compliance with Filesystem Hierarchy Standard. Normally, use RPM macros to ensure the correct placement of files. For the sake of this example, you can safely ignore this warning.
The non-executable-script
error warns that the /usr/lib/pello/pello.py
file has no execute permissions. The rpmlint
tool expects the file to be executable, because the file contains the shebang. For the purpose of this example, you can leave this file without execute permissions and ignore this error.
Apart from the above warnings and errors, the RPM passed rpmlint
checks.