Details
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