[MDEV-21437] MariaDB's SUSE/SLES packages don't "provide" all of the same capabilities as the platform's default packages Created: 2020-01-08  Updated: 2020-05-05  Resolved: 2020-05-05

Status: Closed
Project: MariaDB Server
Component/s: Packaging
Affects Version/s: 10.1.43, 10.2.30, 10.3.21, 10.4.11
Fix Version/s: 10.1.45, 10.2.32, 10.3.23, 10.4.13

Type: Bug Priority: Major
Reporter: Geoff Montee (Inactive) Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: None


 Description   

On SLES 15, the following MariaDB package is included by default:

$ sudo zypper info --repo=SLE-Module-Server-Applications15-SP1-Updates mariadb
Refreshing service 'Basesystem_Module_x86_64'.
Refreshing service 'Containers_Module_x86_64'.
Refreshing service 'Desktop_Applications_Module_x86_64'.
Refreshing service 'Development_Tools_Module_x86_64'.
Refreshing service 'Legacy_Module_x86_64'.
Refreshing service 'Public_Cloud_Module_x86_64'.
Refreshing service 'Python_2_Module_x86_64'.
Refreshing service 'SUSE_Cloud_Application_Platform_Tools_Module_x86_64'.
Refreshing service 'SUSE_Linux_Enterprise_Server_x86_64'.
Refreshing service 'Server_Applications_Module_x86_64'.
Refreshing service 'Web_and_Scripting_Module_x86_64'.
Loading repository data...
Reading installed packages...
 
 
Information for package mariadb:
--------------------------------
Repository     : SLE-Module-Server-Applications15-SP1-Updates
Name           : mariadb
Version        : 10.2.29-3.23.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Support Level  : Additional Customer Contract Necessary
Installed Size : 121.7 MiB
Installed      : No
Status         : not installed
Source package : mariadb-10.2.29-3.23.1.src
Summary        : Server part of MariaDB
Description    :
    MariaDB is an open-source, multi-threaded, relational database management
    system. It's a backward compatible, drop-in replacement branch of the
    MySQL Community Server.
 
    This package only contains the server-side programs.

This package "provides" the following capabilities:

$ sudo zypper info --repo=SLE-Module-Server-Applications15-SP1-Updates --provides mariadb
...
Provides       : [12]
    libdaemon_example.so()(64bit)
    config(mariadb) = 10.2.29-3.23.1
    mariadb = 10.2.29-3.23.1
    mariadb(x86-64) = 10.2.29-3.23.1
    mariadb-102 = 10.2.29
    mariadb-102-debug-version = 10.2.29
    mariadb-debug = 10.2.29
    mariadb-debug-version = 10.2.29
    mariadb-server = 10.2.29
    mysql = 10.2.29
    mysql-debug = 10.2.29
    mysql-server = 10.2.29

Now let's compare this to MariaDB's package on SLES 15:

$ rpm -qp --provides ./MariaDB-server-10.4.11-1.x86_64.rpm
warning: ./MariaDB-server-10.4.11-1.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
MariaDB
MariaDB-server = 10.4.11-1
MariaDB-server(x86-64) = 10.4.11-1
MySQL
MySQL-server
config(MariaDB-server) = 10.4.11-1
config(mysql-server) = 10.4.11-1
libmariadbd.so.19()(64bit)
msqlormysql
mysql-server
mysql-server = 10.4.11-1
mysql-server(x86-64) = 10.4.11-1

This has the following problems:

Incorrect Case in "Provides"

First, some of the "provides" have the incorrect case. As the SUSE documentation explains, the "provides" are case-sensitive:

Symbolic names, as used in Requires, Provides and Conflicts are case-sensitive

https://en.opensuse.org/openSUSE:Package_dependencies

The following ones currently have the wrong case for SUSE/SLES:

  • MariaDB
  • MariaDB-server
  • MySQL
  • MySQL-server

Missing Items in "Provides"

Second, the following names are missing from the "provides" in our packages:

  • config(mariadb)
  • mariadb(x86_64)
  • mariadb-VERSION (e.g. mariadb-104, mariadb-103, etc.)

Consequences

The consequences of this problem are that some packages cannot be installed on SUSE/SLES if our MariaDB packages are installed. For example, the rmt-server package cannot be installed if our package is installed, because it depends on the lower-case variant mariadb. See here:

$ sudo zypper install rmt-server
Refreshing service 'Basesystem_Module_x86_64'.
Refreshing service 'Containers_Module_x86_64'.
Refreshing service 'Desktop_Applications_Module_x86_64'.
Refreshing service 'Development_Tools_Module_x86_64'.
Refreshing service 'Legacy_Module_x86_64'.
Refreshing service 'Public_Cloud_Module_x86_64'.
Refreshing service 'Python_2_Module_x86_64'.
Refreshing service 'SUSE_Cloud_Application_Platform_Tools_Module_x86_64'.
Refreshing service 'SUSE_Linux_Enterprise_Server_x86_64'.
Refreshing service 'Server_Applications_Module_x86_64'.
Refreshing service 'Web_and_Scripting_Module_x86_64'.
Loading repository data...
Reading installed packages...
Resolving package dependencies...
 
Problem: rmt-server-2.4.1-3.6.1.x86_64 requires mariadb, but this requirement cannot be provided
  not installable providers: mariadb-10.2.22-3.14.1.x86_64[Server_Applications_Module_x86_64:SLE-Module-Server-Applications15-SP1-Pool]
                   mariadb-10.2.25-3.17.2.x86_64[Server_Applications_Module_x86_64:SLE-Module-Server-Applications15-SP1-Updates]
                   mariadb-10.2.25-3.20.1.x86_64[Server_Applications_Module_x86_64:SLE-Module-Server-Applications15-SP1-Updates]
                   mariadb-10.2.29-3.23.1.x86_64[Server_Applications_Module_x86_64:SLE-Module-Server-Applications15-SP1-Updates]
 Solution 1: Following actions will be done:
  deinstallation of MariaDB-client-10.4.10_4-1.x86_64
  deinstallation of MariaDB-server-10.4.10_4-1.x86_64
 Solution 2: do not install rmt-server-2.4.1-3.6.1.x86_64
 Solution 3: break rmt-server-2.4.1-3.6.1.x86_64 by ignoring some of its dependencies

See the following SUSE bug for a related problem: https://bugzilla.suse.com/show_bug.cgi?id=1159813

Fix

The required "provides" items should be added here:

https://github.com/MariaDB/server/blob/mariadb-10.4.11/cmake/cpack_rpm.cmake#L157


Generated at Thu Feb 08 09:07:08 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.