See also default-mysql-* scheme
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:
and in x-client packages:
(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:
virtual-mysql-client-core virtual-mysql-client virtual-mysql-server-core virtual-mysql-server virtual-mysql-testsuite
It is acceptable for a package to Provide/Break/Replace multiple virtual-mysql-*'s; not all packages have exactly the same binary package structure.