This is a tool to create a profile of all of the packages installed to a particular system and then use that profile to validate that other OS's are providing that level of functionality.
A design decision is that more functionality is allowed, but not less. This means that the system being tested is only looking for what the profile has defined and will warn if that particular feature is not present.
The idea is to ensure that a downstream Enterprise Linux derivitive is providinging AT LEAST the same functionality as what upstream provides which will help with standardization and extreme compatibility.
There are several major tests that are performed...
- Requires: Ensure that all needed requirements are present
- Provides: Ensure that each package provides the needed requirements
- Files: Ensure that all needed files are present
- Size: Ensure that packages are not differing in sizes by greater than a given percent
- Version: This is an additional check, just to show what packages have a different NVRA
This is written in GoLang, so you will need to do the standard Go build process:
$ make all
You will first need to generate a profile (or use one of the few that are provided as examples) by doing the following:
$ ./elprofile -g > /tmp/local.profile
To test another system you can copy the file /tmp/local.profile to another system and
run the following command:
$ ./elprofile -aq /tmp/local.profile
Comparing against template: /tmp/local.profile
gnupg2-2.3.3.x86_64 MISSING REQUIRES: liblber-2.4.so.2()(64bit)
gnupg2-2.3.3.x86_64 MISSING REQUIRES: libldap_r-2.4.so.2()(64bit)
gnutls-3.7.6.x86_64 MISSING FILES: /usr/lib64/.libgnutls.so.30.33.1.hmac
gnutls-3.7.6.x86_64 MISSING FILES: /usr/lib64/.libgnutls.so.30.hmac
libdnf-0.67.0.x86_64 MISSING REQUIRES: librhsm.so.0()(64bit)
The example above is using a profile generated by the RHEL UBI 9.1 container image, and tested
against a Rocky Linux 9.1 system. The results show an expected failure on librhsm.so.0 on the
libdnf package (as we are not linking that against Red Hat's Subscription manager). The HMAC
files not being included have been fixed, and the gnupg2 and OpenLDAP bug is being
tracked here: https://bugs.rockylinux.org/view.php?id=3964