Description:
The mysql-common package postinst script unconditionally attempts to register
/etc/mysql/my.cnf.fallback as an alternative without checking if the file exists,
causing installation failures when the file is not present or has been removed.
AFFECTED VERSIONS:
mysql-common package from apt.mysql.com repository. Tested with Ubuntu Noble 24.04
The postinst script in mysql-common contains the following code:
if [ "$1" = "configure" ]; then
# Low priority fallback for client use when no server is installed.
update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/my.cnf.fallback 100
fi
This code does not verify that /etc/mysql/my.cnf.fallback exists before attempting
to register it as an alternative. If the file is missing (e.g., manually removed,
incomplete upgrade, or system inconsistency), the installation fails with:
update-alternatives: error: alternative path /etc/mysql/my.cnf.fallback doesn't exist
dpkg: error processing package mysql-common (--configure):
installed mysql-common package post-installation script subprocess returned error exit status 2
How to repeat:
1. Install mysql-common package
2. Remove /etc/mysql/my.cnf.fallback
3. Attempt to upgrade or reinstall eg. apt install --reinstall mysql-common
Suggested fix:
The official Ubuntu MySQL packages handle this correctly by checking for
file existence:
if [ "$1" = "configure" ] && [ -f /etc/mysql/my.cnf.fallback ]; then
# Low priority fallback for client use when no server is installed.
update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/my.cnf.fallback 100
fi
Description: The mysql-common package postinst script unconditionally attempts to register /etc/mysql/my.cnf.fallback as an alternative without checking if the file exists, causing installation failures when the file is not present or has been removed. AFFECTED VERSIONS: mysql-common package from apt.mysql.com repository. Tested with Ubuntu Noble 24.04 The postinst script in mysql-common contains the following code: if [ "$1" = "configure" ]; then # Low priority fallback for client use when no server is installed. update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/my.cnf.fallback 100 fi This code does not verify that /etc/mysql/my.cnf.fallback exists before attempting to register it as an alternative. If the file is missing (e.g., manually removed, incomplete upgrade, or system inconsistency), the installation fails with: update-alternatives: error: alternative path /etc/mysql/my.cnf.fallback doesn't exist dpkg: error processing package mysql-common (--configure): installed mysql-common package post-installation script subprocess returned error exit status 2 How to repeat: 1. Install mysql-common package 2. Remove /etc/mysql/my.cnf.fallback 3. Attempt to upgrade or reinstall eg. apt install --reinstall mysql-common Suggested fix: The official Ubuntu MySQL packages handle this correctly by checking for file existence: if [ "$1" = "configure" ] && [ -f /etc/mysql/my.cnf.fallback ]; then # Low priority fallback for client use when no server is installed. update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/my.cnf.fallback 100 fi