Chapter 6. Software management

6.1. Notable changes to the YUM stack

On Red Hat Enterprise Linux (RHEL) 8, installing software is ensured by the new version of the YUM tool, which is based on the DNF technology (YUM v4).

6.1.1. Advantages of YUM v4 over YUM v3

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.

6.1.2. 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 on Installing software with yum.

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.3. Availability of YUM configuration file options

This section summarizes changes in configuration file options between RHEL 7 and RHEL 8 for the /etc/yum.conf and /etc/yum.repos.d/*.repo files.

Table 6.1. Changes in configuration file options for the /etc/yum.conf file

RHEL 7 optionRHEL 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 optionRHEL 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.4. 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.4.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:

[…​]
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
[…​]

6.1.5. Changes in the transaction history log files

This section summarizes changes in the transaction history log files between RHEL 7 and RHEL 8.

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.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:

    rpm {--reinstall} [install-options] PACKAGE_FILE

    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.