[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Introducing default-mysql-* metapackages



Hello maintainers of packages that depend in MySQL/MariaDB!

TL;DR;

Please update packages that depend on MySQL or MariaDB as follows:

BEFORE: Build-Depends: libmysqlclient-dev
AFTER: Build-Depends: default-libmysqlclient-dev

BEFORE: Depends: mysql-server | virtual-mysql-server
OR Depends: mariadb-server | virtual-mysql-server
AFTER: Depends: default-mysql-server | virtual-mysql-server

BEFORE: Depends: mysql-client | virtual-mysql-client
OR Depends: mariadb-client | virtual-mariadb-client
AFTER: Depends: default-mysql-client | virtual-mysql-client


Details follow:

The release team decided earlier in the spring that MariaDB should be
made the default MySQL variant in Debian. The release team also wished
to have a facility that allows easy switching of the default.

Therefore we have introduced the following metapackages
from the mysql-defaults source package:
- default-mysql-server
- default-mysql-server-core
- default-mysql-client
- default-mysql-client-core
- default-libmysqlclient-dev

All maintainers of packages that currently depend directly on
mysql-server, mariadb-server, or any of the other packages in these
series, shall update the dependencies in their packages to point to
default-mysql-* instead.

Installing the metapackage default-mysql-server will pull in
mariadb-server-10.0. Users who had mysql-server-5.6 will have it
removed and replaced by the MariaDB equivalent on upgrade. Note that
once you have switched to MariaDB, it might not possible to convert
your in-place database files back to MySQL automatically, since Oracle
does not maintain tools to convert possible MariaDB features present
in the binary format. Please back up your data first if you wish to
switch or experiment. Manual dump/import is the most reliable way to
import data from one installation to another.

A virtual package scheme virtual-mysql-* already exists since 2013,
and will continue to exist. All MySQL variants in Debian (and outside
in 3rd party repositories too) have Provides for these virtual-mysql-*
packages. Maintainers can must use "Depends: default-mysql-server |
virtual-mysql-server" if their package can be satisfied by any MySQL
variant (Oracle, MariaDB, Percona, mysql-wsrep).

The first dependency should be default-mysql-*, which is a
metapackage, that in turn depends on exactly one option, which for now
is MariaDB.

If a maintainer knows that his/her package only works with one
variant, then the package can depend directly on that package and not
use the default-mysql-* (matches one) or virtual-mysql-* (matches any)
schemes. Please get in touch if this applies to you. At the moment
there should be no such packages, but in the future cases like this
can arise when MySQL and MariaDB develop diverging feature sets.

Packages built against default-mysqlclient-dev and link using
"-lmysqlclient" will end up with a shared library dependency on either
libmysqlclient.so.X or libmariadbclient.so.X depending on the default
defined by the release team at build time. These will be provided by
the libmysqlclient18 (soon to be libmysqlclient20) and
libmariadbclient18 packages, which will be co-installable. Packages
which require particular functionality available from only one of the
forks may Build-Depend directly on libmysqlclient-dev or
libmariadbclient-dev and then link using "-lmysqlclient" or
"-lmariadbclient" respectively. Again, please get in touch if this
applies to you.

Users that want to rebuild packages against a different variant of
lib*client-dev for experimenting and testing locally should prefer
using a locally modified default-libmysqlclient-dev over modifying
each client application source package individually.

The default-mysql-* metapackages have been available in experimental
since July, and since also in unstable and testing, and we are
confident there are no regressions. If you however do encounter
problems, please report to pkg-mysql-maint@.


On behalf ot the pkg-mysql team,

- Otto

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: