Chapter 6. Software management 6.1. Notable changes to the YUM stack 6.1.1. Package management with YUM/DNF 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 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 . 6.1.2. Advantages of YUM v4 over YUM v3 YUM v4 has the following advantages over the 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 version YUM v3 from RHEL 7, see Changes in DNF CLI compared to YUM . 6.1.3. How to use YUM v4 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. 6.1.4. Availability of YUM configuration file options 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. Table 6.1. Changes in configuration file options for the /etc/yum.conf file 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 Table 6.2. Changes in configuration file options for the /etc/yum.repos.d/*.repo file 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 6.1.5. YUM v4 features behaving differently 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? 6.1.5.1. yum list presents duplicate entries 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: By contrast, the legacy YUM v3 command filtered out such duplicates so that only one instance was shown: 6.1.6. Changes in the transaction history log files 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. 6.1.7. The deltarpm functionality is no longer supported 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. 6.2. Notable RPM features and changes 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 --nopretrans and --noposttrans switches to disable the execution of the %pretrans and %posttrans scriptlets respectively. New --noplugins switch to disable loading and execution of all RPM plug-ins. New syslog plug-in for logging any RPM activity by the System Logging protocol (syslog). The rpmbuild command can now do all build steps from a source package directly. This is possible if rpmbuild is used with any of the -r[abpcils] options. Support for the reinstall mode. This is ensured by the new --reinstall option. To reinstall a previously installed package, use the syntax below: 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_writes macro, which is available in the /usr/lib/rpm/macros file. The macro is by default set to 0. To minimize writing to SSD disks, set %_minimize_writes to 1. New rpm2archive utility 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 -p option to query an uninstalled PACKAGE_FILE is now optional. For this use case, the rpm command now returns the same result with or without the -p option. The only use case where the -p option is necessary is to verify that the file name does not match any Provides in the rpmdb database. Additions and deprecations in macros The %makeinstall macro has been deprecated. To install a program, use the %make_install macro instead. The rpmbuild --sign command has been deprecated. Note that using the --sign option with the rpmbuild command has been deprecated. To add a signature to an already existing package, use rpm --addsign instead.

Commands:
[... ] package-1.2 repo1 package-1.2 repo2 [... ]
[... ] package-1.2 repo1 [... ]
{--reinstall} [install-options] PACKAGE_FILE