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

LP:587850 - Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:

      Description

      Background:
      Packages built by MariaDB buildbot system can be seen here: http://ftp.rediris.es/mirror/MariaDB/mariadb-5.1.44b/kvm-deb-debian5-amd64/debs/binary/
      Packages from OurDelta are here: http://nerdvana.us.mirror.ourdelta.org/deb/dists/lenny/mariadb-ourdelta/

      MariaDB deb packages contain packages "mysql-common" and "libmysqlclient16". OurDelta additionally ships a "libmysqlclient15off" package.

      This issue was in fact reported once, but we decided to ignore it then: https://bugs.launchpad.net/maria/+bug/481298

      Problem:
      Since this is the exact name of a package that already exists in Debian (the original mysql-common from MySQL) then this prevents MariaDB from being in a Debian repository.

      The current package naming seems to have been chosen as a work around to solve some behavior where APT would prefer to install a MySQL package instead of an Ourdelta package (and this is inherited in current MariaDB packaging). (I will post in a comment an IRC discussion of the details with more info.)

      Solution:
      MariaDB must have unique package names and use Provides: and Conflicts: to properly replace existing MySQL packages. It is not a correct solution to produce packages that have the identical same name as the MySQL package.

      There could be many different solutions. At the moment it is unclear why apt-get proposes to install a package that shouldn't even be considered since it "Conflict:"s with a package being installed instead. If this is true, it may be considered a bug in apt-get. (This needs to be re-verified as a first step of fixing this bug.)

      Alternatively: for "mysql-common" we could decide that on Debian platforms we in fact "Depend:" on the original MySQL package and then provide additions in a "mariadb-common" package that installs additional configurations in /etc/mysql/conf.d/ and similarly we could omit to provide a libmysqlclient16 package at all.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            henrikingo Henrik Ingo added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            IRC log of discussing this
            https://lists.launchpad.net/maria-developers/msg03207.html

            Show
            henrikingo Henrik Ingo added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository IRC log of discussing this https://lists.launchpad.net/maria-developers/msg03207.html
            Hide
            henrikingo Henrik Ingo added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            I added 5.2 into tags: If we need to change details of the packaging, such as package names, this should be done before 5.2 RC.

            Show
            henrikingo Henrik Ingo added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository I added 5.2 into tags: If we need to change details of the packaging, such as package names, this should be done before 5.2 RC.
            Hide
            henrikingo Henrik Ingo added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            [13:05:22] <serg> so, mysql-client-5.1 depends on libmysqlclient16 (>= 5.1.43-1) and libdbd-mysql-perl (>= 1.2202)
            [13:05:50] <serg> libdbd-mysql-perl (>= 1.2202) in turn depends on libmysqlclient16 (>= 5.1.21-1)
            [13:06:39] <serg> that is, we need to provide libmysqlclient16 to satisfy libdbd-mysql-perl dependencies

            Show
            henrikingo Henrik Ingo added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository [13:05:22] <serg> so, mysql-client-5.1 depends on libmysqlclient16 (>= 5.1.43-1) and libdbd-mysql-perl (>= 1.2202) [13:05:50] <serg> libdbd-mysql-perl (>= 1.2202) in turn depends on libmysqlclient16 (>= 5.1.21-1) [13:06:39] <serg> that is, we need to provide libmysqlclient16 to satisfy libdbd-mysql-perl dependencies
            Hide
            knielsen Kristian Nielsen added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            Apart from libdbd-mysql-perl, another important thing to check is that libmyodbc works correctly. We had a bug where it did not work with MariaDB client library, as it uses internal stuff (the actual culprit was fastmutexes calls).

            A full list of packages that depend on libmysqlclient can be obtained from

            apt-cache rdepends libmysqlclient15off

            The mysql-common package contains /etc/mysql/my.cnf. It seems to me that mariadb and mysql has to use the same my.cnf, since they use the same data directory /var/lib/mysql. Otherwise a user switching from mysql to mariadb or vice versa could experience all kinds of problems when the my.cnf suddenly changes server configuration.

            Show
            knielsen Kristian Nielsen added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository Apart from libdbd-mysql-perl, another important thing to check is that libmyodbc works correctly. We had a bug where it did not work with MariaDB client library, as it uses internal stuff (the actual culprit was fastmutexes calls). A full list of packages that depend on libmysqlclient can be obtained from apt-cache rdepends libmysqlclient15off The mysql-common package contains /etc/mysql/my.cnf. It seems to me that mariadb and mysql has to use the same my.cnf, since they use the same data directory /var/lib/mysql. Otherwise a user switching from mysql to mariadb or vice versa could experience all kinds of problems when the my.cnf suddenly changes server configuration.
            Hide
            serg Sergei Golubchik added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            see also https://bugs.launchpad.net/maria/+bug/509535

            Show
            serg Sergei Golubchik added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository see also https://bugs.launchpad.net/maria/+bug/509535
            Hide
            knielsen Kristian Nielsen added a comment -

            Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository
            In MariaDB 5.5, there is no longer a conflict on package mysql-common. We do

            provide a mysql-common package in the MariaDB repo for completeness, but it is

            perfectly possible to use MariaDB with the standard mysql-common package from

            the main repos. MariaDB-specific config is done through a separate package

            mariadb-common.

            As for package libmysqlclient16 - this is an empty package that depends on

            libmariadbclient16. This is necessary as long as MariaDB is maintained in a

            3rd-party repository. There are other packages with versioned dependencies on

            libmysqlclient16. To replace libmysqlclient.so with the MariaDB version, we

            need to provide a real libmysqlclient package to satisfy these dependencies.

            But when/if MariaDB is integrated into the main repositories, this can be

            handled with the alternatives system. Eg. main libmysqlclient16 package can be

            a virtual package that depends: on libmariadbclient16 |

            libmysqlclient16-oracle.

            So this should be fixed now.

            Show
            knielsen Kristian Nielsen added a comment - Re: Using "mysql-common" as a package name for a MariaDB package is showstopper for adding us into any Debian repository In MariaDB 5.5, there is no longer a conflict on package mysql-common. We do provide a mysql-common package in the MariaDB repo for completeness, but it is perfectly possible to use MariaDB with the standard mysql-common package from the main repos. MariaDB-specific config is done through a separate package mariadb-common. As for package libmysqlclient16 - this is an empty package that depends on libmariadbclient16. This is necessary as long as MariaDB is maintained in a 3rd-party repository. There are other packages with versioned dependencies on libmysqlclient16. To replace libmysqlclient.so with the MariaDB version, we need to provide a real libmysqlclient package to satisfy these dependencies. But when/if MariaDB is integrated into the main repositories, this can be handled with the alternatives system. Eg. main libmysqlclient16 package can be a virtual package that depends: on libmariadbclient16 | libmysqlclient16-oracle. So this should be fixed now.
            Hide
            ratzpo Rasmus Johansson added a comment -

            Launchpad bug id: 587850

            Show
            ratzpo Rasmus Johansson added a comment - Launchpad bug id: 587850

              People

              • Assignee:
                knielsen Kristian Nielsen
                Reporter:
                henrikingo Henrik Ingo
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: