Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-21437

MariaDB's SUSE/SLES packages don't "provide" all of the same capabilities as the platform's default packages

    XMLWordPrintable

    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

        Attachments

          Activity

            People

            Assignee:
            serg Sergei Golubchik
            Reporter:
            GeoffMontee Geoff Montee
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: