See also default-mysql-* scheme

See new wiki page at

Note that since July 2016 a new scheme has been introduced: default-mysql-*

The old (but not obsolete) way to mark dependency on the mysql-* packages

All packages that at the moment depend directly on mysql-server or mysql-client should instead have something like:

 Depends: mariadb-server | virtual-mysql-server

(or Suggests or Recommends)

Since late 2013, all variants (Oracle MySQL, MariaDB, Percona) have hade provides like this in th x-server package:

 Provides: virtual-mysql-server

and in x-client packages:

 Provides: virtual-mysql-client

(Side note: Drizzle is a MySQL fork but is not an drop-in-replacement and thus does not have this provides.)

As of March 2016 the Debian release team decided, that in Debian the default database option should be MariaDB. The primary dependency should therefore be on the MariaDB package but the virtual-mysql-x should be kept as an alternative dependency to satisfy installation of other variants if users explicitly want so.

Switching in/out MySQL alternatives

The virtual-mysql-* approach is also used for switching in/out alternative MySQL implementations.

Each binary package should declare (for example):

Provides: virtual-mysql-server
Breaks: virtual-mysql-server, ...
Replaces: virtual-mysql-server, ...

Currently recognised virtual-mysql-* packages are:


It is acceptable for a package to Provide/Break/Replace multiple virtual-mysql-*'s; not all packages have exactly the same binary package structure.