On 2015-06-15 11:09, Robie Basak wrote:
> The new mysql-common replaces the /etc/mysql/my.cnf conffile with a
> non-conffile maintainer-script-manager symlink (via
> update-alternatives). It is in VCS, though I want to fix a separate bug
> before I upload to minimise the impact on users of unstable and testing
> who will transition from 5.5 to 5.6 as soon as I upload.
as I promised here is a review:
a few comments from just looking at the commit 61e2b53
* mysql-common.postinst:
- why is the fallback alternative being installed before #DEBHELPER#?
won't that confuse dpkg-maintscript-helper?
at least comment on it, the explanation below is very nice
* mysql-common.postrm:
- upon purge, delete /etc/mysql/my.cnf.migrated
- do not use update-alternatives --remove-all, remove only the
alternatives (possibly) installed by this package (ordered lowest
to highest priority)
update-alternatives --remove is a silent no-op if the alternative
does not exist
- rmdir /etc/mysql should be the last step for purge, not the first
How does the migration work if the mariadb-common mishandling of my.cnf has
been performed?
from mariadb-common.postinst:
configure)
# New packaging paradigm for my.cnf as of Dec-2014 for sharing mysql
# variants in Ubuntu. If the new mysql-common package does not provide
# the update-alternatives facility, fall back to creating a symlink
if [ -f /usr/share/mysql-common/configure-symlinks ]
then
/usr/share/mysql-common/configure-symlinks install mariadb
"/etc/mysql/mariadb.cnf"
else
# As configure can be called many times, don't re-create the symlink
# if it is there already
if [ ! -L /etc/mysql/my.cnf ]
then
echo "Notice: configure-symlinks trigger could not be called."
echo "Creating /etc/mysql/my.cnf as a symlink that points to
mariadb.cnf."
mv -f /etc/mysql/my.cnf /etc/mysql/my.cnf.old
ln -sf mariadb.cnf /etc/mysql/my.cnf
fi
fi
;;
how does dpkg-maintscript-helper rm_conffile cope with the conffile being
replaced with a symlink to a different file?
I expect you want to use my.cnf.old as my.cnf.migrated if and only if it was
modified
and you never want to use (a symlink to) mariadb.cnf as my.cnf.migrated
mysql-common needs to Breaks: mariadb-common (<<
version-where-that-mess-was-removed-again~)
and mysql-common.preinst may have to undo this before #DEBHELPER#
(mariadb-common may have been removed but not purged before the new
mysql-common gets installed)
(or it may have been purged as well ... probably leaving my.cnf.old
(note: the mariadb.cnf alternative for my.cnf will be reinstalled correctly
once the fixed mariadb-common gets configured (and that happens after
mysql-common got configured)
it should be easy to detect:
if [ -L /etc/mysql/my.cnf ] && [ "$(readlink /etc/mysql/my.cnf)" =
"mariadb.cnf" ] ; then ...
The important part is that dpkg cleanly forgets everything about the old
conffile my.cnf,
otherwise tools like debsums will spew errors since the remembered md5sum does
not match
Andreas
PS: so far I didn't test anything, just looked at commits (and
mariadb-common.postinst)
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]