[RHEL 8] mysql-commercial packages can not be seen or installed when the AppStream repository is enabled

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux 8
  • Red Hat Satellite 6

Issue

  • When we enable repositories MySQL and Appstream at the same time, some packages in the repo Mysql can't be seen:
# yum search mysql | grep mysql-commercial
Last metadata expiration check: 2:57:22 ago on Thu 10 Sep 2020 10:58:48 AM EDT.
mysql-commercial-backup.x86_64 : MySQL Enterprise Backup

Resolution

To access third party mysql packages, you must disable the mysql stream from Red Hat's AppStream repository (rhel-8-for-x86_64-appstream-rpms)

# yum module list mysql
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name              Stream              Profiles                       Summary
mysql             8.0 [d]             client, server [d]             MySQL Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

# yum module disable mysql:8.0 -y

Disabling modules:
mysql

# yum search mysql | grep mysql-commercial
mysql-commercial-backup.x86_64 : MySQL Enterprise Backup
mysql-commercial-test.x86_64 : Test suite for the MySQL database server
mysql-commercial-client.x86_64 : MySQL database client applications and tools
mysql-commercial-libs.x86_64 : Shared libraries for MySQL database client
mysql-commercial-common.x86_64 : MySQL database common files for server and
mysql-commercial-devel.x86_64 : Development header files and libraries for MySQL
mysql-commercial-server.x86_64 : A very fast and reliable SQL database server

Root Cause

Red Hat Enterprise Linux 8 introduces modules into repositories.

Basic Concepts

  • Packages
  • RPM packages are powerful as they are and there is no need to do any changes at this level.
  • Modules
  • Packages are grouped into modules — a representation of an application, a language runtime, or any logical group. That makes the content more granular and easier to navigate.
  • Streams
  • Modules can be available in multiple streams, usually representing a major version of the software they include. Choose the right version of the piece of software you need.

When a module has a default stream, this is the only stream available unless it is disabled, or another stream is enabled.

# yum module list mysql
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name              Stream              Profiles                       Summary
mysql             8.0 [d]             client, server [d]             MySQL Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Because the mysql:8.0 stream is a Default stream, dnf filters your view so you only see the packages provided by this module. The 3rd party mysql-commercial packages are not in a module.

# yum module provides mysql-commercial-client
#

To access non-modular content that is being filtered by a Default/Enabled module, we need to Disable the module.

# yum module disable mysql:8.0 -y
Disabling modules:
mysql

Content from dnf.readthedocs.io is not included.Modularity Package Filtering

Package filtering
Without modules, packages with the highest version are used by default.

Module streams can distribute packages with lower versions than available in the repositories available to the operating system. To make such packages available for installs and upgrades, the non-modular packages are filtered out when they match by name with modular packages from any existing stream.

SBR
Components
Category
Tags

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.