Chapter 7. Software management
7.1. Notable changes to the YUM stack Copy linkLink copied to clipboard!
7.1.1. Package management with YUM/DNF Copy linkLink copied to clipboard!
On Red Hat Enterprise Linux 8, installing software is ensured by the YUM tool, which is based on the DNF technology (YUM v4). We deliberately adhere to usage of the yum term for consistency with previous major versions of RHEL. However, if you type dnf instead of yum, the command works as expected because yum is an alias to dnf for compatibility.
For more details, see Installing, managing, and removing user-space components.
7.1.2. Advantages of YUM v4 over YUM v3 Copy linkLink copied to clipboard!
YUM v4 has the following advantages over the previous YUM v3 used on RHEL 7:
- Increased performance
- Support for modular content
- Well-designed stable API for integration with tooling
For detailed information about differences between the new YUM v4 tool and the previous version YUM v3 from RHEL 7, see Changes in DNF CLI compared to YUM.
7.1.3. How to use YUM v4 Copy linkLink copied to clipboard!
Installing software
YUM v4 is compatible with YUM v3 when using from the command line, editing or creating configuration files.
For installing software, you can use the yum command and its particular options in the same way as on RHEL 7.
See more detailed information about Installing software packages.
Availability of plug-ins
Legacy YUM v3 plug-ins are incompatible with the new version of YUM v4. Selected yum plug-ins and utilities have been ported to the new DNF back end, and can be installed under the same names as in RHEL 7. They also provide compatibility symlinks, so the binaries, configuration files and directories can be found in usual locations.
In the event that a plug-in is no longer included, or a replacement does not meet a usability need, please reach out to Red Hat Support to request a Feature Enhancement as described in How do I open and manage a support case on the Customer Portal?
For more information, see Plugin Interface.
Availability of APIs
Note that the legacy Python API provided by YUM v3 is no longer available. Users are advised to migrate their plug-ins and scripts to the new API provided by YUM v4 (DNF Python API), which is stable and fully supported. The upstream project documents the new DNF Python API - see the DNF API Reference.
The Libdnf and Hawkey APIs (both C and Python) are to be considered unstable, and will likely change during RHEL 8 life cycle.
7.1.4. Availability of YUM configuration file options Copy linkLink copied to clipboard!
The changes in configuration file options between RHEL 7 and RHEL 8 for the /etc/yum.conf and /etc/yum.repos.d/*.repo files are documented in the following summary.
| RHEL 7 option | RHEL 8 status |
|---|---|
| alwaysprompt | removed |
| assumeno | available |
| assumeyes | available |
| autocheck_running_kernel | available |
| autosavets | removed |
| bandwidth | available |
| bugtracker_url | available |
| cachedir | available |
| check_config_file_age | available |
| clean_requirements_on_remove | available |
| color | available |
| color_list_available_downgrade | available |
| color_list_available_install | available |
| color_list_available_reinstall | available |
| color_list_available_running_kernel | removed |
| color_list_available_upgrade | available |
| color_list_installed_extra | available |
| color_list_installed_newer | available |
| color_list_installed_older | available |
| color_list_installed_reinstall | available |
| color_list_installed_running_kernel | removed |
| color_search_match | available |
| color_update_installed | available |
| color_update_local | available |
| color_update_remote | available |
| commands | removed |
| config_file_path | available |
| debuglevel | available |
| deltarpm | available |
| deltarpm_metadata_percentage | removed |
| deltarpm_percentage | available |
| depsolve_loop_limit | removed |
| disable_excludes | available |
| diskspacecheck | available |
| distroverpkg | removed |
| enable_group_conditionals | removed |
| errorlevel | available |
| exactarchlist | removed |
| exclude | available |
| exit_on_lock | available |
| fssnap_abort_on_errors | removed |
| fssnap_automatic_keep | removed |
| fssnap_automatic_post | removed |
| fssnap_automatic_pre | removed |
| fssnap_devices | removed |
| fssnap_percentage | removed |
| ftp_disable_epsv | removed |
| gpgcheck | available |
| group_command | removed |
| group_package_types | available |
| groupremove_leaf_only | removed |
| history_list_view | available |
| history_record | available |
| history_record_packages | available |
| http_caching | removed |
| include | removed |
| installonly_limit | available |
| installonlypkgs | available |
| installrootkeep | removed |
| ip_resolve | available |
| keepalive | removed |
| keepcache | available |
| kernelpkgnames | removed |
| loadts_ignoremissing | removed |
| loadts_ignorenewrpm | removed |
| loadts_ignorerpm | removed |
| localpkg_gpgcheck | available |
| logfile | removed |
| max_connections | removed |
| mddownloadpolicy | removed |
| mdpolicy | removed |
| metadata_expire | available |
| metadata_expire_filter | removed |
| minrate | available |
| mirrorlist_expire | removed |
| multilib_policy | available |
| obsoletes | available |
| override_install_langs | removed |
| overwrite_groups | removed |
| password | available |
| payload_gpgcheck | removed |
| persistdir | available |
| pluginconfpath | available |
| pluginpath | available |
| plugins | available |
| protected_multilib | removed |
| protected_packages | available |
| proxy | available |
| proxy_password | available |
| proxy_username | available |
| query_install_excludes | removed |
| recent | available |
| recheck_installed_requires | removed |
| remove_leaf_only | removed |
| repo_gpgcheck | available |
| repopkgsremove_leaf_only | removed |
| reposdir | available |
| reset_nice | available |
| retries | available |
| rpmverbosity | available |
| shell_exit_status | removed |
| showdupesfromrepos | available |
| skip_broken | available |
| skip_missing_names_on_install | removed |
| skip_missing_names_on_update | removed |
| ssl_check_cert_permissions | removed |
| sslcacert | available |
| sslclientcert | available |
| sslclientkey | available |
| sslverify | available |
| syslog_device | removed |
| syslog_facility | removed |
| syslog_ident | removed |
| throttle | available |
| timeout | available |
| tolerant | removed |
| tsflags | available |
| ui_repoid_vars | removed |
| upgrade_group_objects_upgrade | available |
| upgrade_requirements_on_install | removed |
| usercache | removed |
| username | available |
| usr_w_check | removed |
| RHEL 7 option | RHEL 8 status |
|---|---|
| async | removed |
| bandwidth | available |
| baseurl | available |
| compare_providers_priority | removed |
| cost | available |
| deltarpm_metadata_percentage | removed |
| deltarpm_percentage | available |
| enabled | available |
| enablegroups | available |
| exclude | available |
| failovermethod | removed |
| ftp_disable_epsv | removed |
| gpgcakey | removed |
| gpgcheck | available |
| gpgkey | available |
| http_caching | removed |
| includepkgs | available |
| ip_resolve | available |
| keepalive | removed |
| metadata_expire | available |
| metadata_expire_filter | removed |
| metalink | available |
| mirrorlist | available |
| mirrorlist_expire | removed |
| name | available |
| password | available |
| proxy | available |
| proxy_password | available |
| proxy_username | available |
| repo_gpgcheck | available |
| repositoryid | removed |
| retries | available |
| skip_if_unavailable | available |
| ssl_check_cert_permissions | removed |
| sslcacert | available |
| sslclientcert | available |
| sslclientkey | available |
| sslverify | available |
| throttle | available |
| timeout | available |
| ui_repoid_vars | removed |
| username | available |
7.1.5. YUM v4 features behaving differently Copy linkLink copied to clipboard!
Some of the YUM v3 features may behave differently in YUM v4. If any such change negatively impacts your workflows, please open a case with Red Hat Support, as described in How do I open and manage a support case on the Customer Portal?
7.1.5.1. yum list presents duplicate entries Copy linkLink copied to clipboard!
When listing packages using the yum list command, duplicate entries may be presented, one for each repository where a package of the same name and version resides.
This is intentional, and it allows the users to distinguish such packages when necessary.
For example, if package-1.2 is available in both repo1 and repo2, YUM v4 will print both instances:
[…] package-1.2 repo1 package-1.2 repo2 […]
[…]
package-1.2 repo1
package-1.2 repo2
[…]
By contrast, the legacy YUM v3 command filtered out such duplicates so that only one instance was shown:
[…] package-1.2 repo1 […]
[…]
package-1.2 repo1
[…]
7.1.6. Changes in the transaction history log files Copy linkLink copied to clipboard!
The changes in the transaction history log files between RHEL 7 and RHEL 8 are documented in the following summary.
In RHEL 7, the /var/log/yum.log file stores:
- Registry of installations, updates, and removals of the software packages
- Transactions from yum and PackageKit
In RHEL 8, there is no direct equivalent to the /var/log/yum.log file. To display the information about the transactions, including the PackageKit and microdnf, use the yum history command.
Alternatively, you can search the /var/log/dnf.rpm.log file, but this log file does not include the transactions from PackageKit and microdnf, and it has a log rotation which provides the periodic removal of the stored information.
7.1.7. The deltarpm functionality is no longer supported Copy linkLink copied to clipboard!
RHEL 8 no longer supports the use of delta rpms. To utilize delta rpms, a user must install the deltarpm package which is no longer available. The deltarpm replacement, drpm, does not provide the same functionality. Thus, the RHEL 8 content is not delivered in the deltarpm format. Note that this functionality will be completely removed in future RHEL releases.
7.2. Notable RPM features and changes Copy linkLink copied to clipboard!
Red Hat Enterprise Linux (RHEL) 8 is distributed with RPM 4.14. This version introduces many enhancements over RPM 4.11, which is available in RHEL 7.
Notable features include:
- The debuginfo packages can be installed in parallel
- Support for weak dependencies
- Support for rich or boolean dependencies
- Support for packaging files above 4 GB in size
- Support for file triggers
-
New
--nopretransand--noposttransswitches to disable the execution of the%pretransand%posttransscriptlets respectively. -
New
--nopluginsswitch to disable loading and execution of all RPM plug-ins. -
New
syslogplug-in for logging any RPM activity by the System Logging protocol (syslog). The
rpmbuildcommand can now do all build steps from a source package directly.This is possible if
rpmbuildis used with any of the-r[abpcils]options.Support for the reinstall mode.
This is ensured by the new
--reinstalloption. To reinstall a previously installed package, use the syntax below:rpm {--reinstall} [install-options] PACKAGE_FILErpm {--reinstall} [install-options] PACKAGE_FILECopy to Clipboard Copied! Toggle word wrap Toggle overflow This option ensures a proper installation of the new package and removal of the old package.
Support for SSD conservation mode.
This is ensured by the new
%_minimize_writesmacro, which is available in the/usr/lib/rpm/macrosfile. The macro is by default set to 0. To minimize writing to SSD disks, set%_minimize_writesto 1.-
New
rpm2archiveutility for converting rpm payload to tar archives
See more information about New RPM features in RHEL 8.
Notable changes include:
- Stricter spec-parser
- Simplified signature checking the output in non-verbose mode
Improved support for reproducible builds (builds that create an identical package):
- Setting build time
- Setting file mtime (file modification time)
- Setting buildhost
-
Using the
-poption to query an uninstalled PACKAGE_FILE is now optional. For this use case, therpmcommand now returns the same result with or without the-poption. The only use case where the-poption is necessary is to verify that the file name does not match anyProvidesin therpmdbdatabase. Additions and deprecations in macros
-
The
%makeinstallmacro has been deprecated. To install a program, use the%make_installmacro instead.
-
The
The
rpmbuild --signcommand has been deprecated.Note that using the
--signoption with therpmbuildcommand has been deprecated. To add a signature to an already existing package, userpm --addsigninstead.