On Feb 26, 2010, at 11:11 AM, Kevin Fenzi wrote: > On Wed, 24 Feb 2010 12:36:31 -0600 > BJ Dierkes <wdierkes@xxxxxxxxxxxxxxxxxxx> wrote: > >> Hello all, >> >> I maintain Multi-Master Replication Manager for MySQL in both Fedora >> and EPEL. With changes from 2.0.11 -> 2.1.0 there was an >> incompatible change in that the daemon scripts were renamed: >> >> mmmd_agent -> mmm_agentd >> mmmd_mon -> mmm_mond >> >> >> Upgrades obviously break because the INIT scripts and configuration >> files reference the path to the files. Would a sufficient >> work-around be a symlink to the old path, or would that not be kosher >> for any reason? >> >> Thank you for your feedback. > > Well, I would suggest if you can get it setup so it continues to work > as expected on upgrade it should be fine. If thats a symlink or > whatever it should be ok. > > Perhaps make and test a version, then post the spec diff for > comment/feedback if you like? > > kevin I have a working upgrade from mysql-mmm-2.0.x -> mysql-mmm-2.1. I verified that all expected changes happen, and that the running processes are gracefully condrestart'd. The changes are pretty straight forward. Because this is the first release of mysql-mmm >= 2.1 I am touching a file at '%{_datadir}/mysql-mmm/.pre-2.1.0-upgrade-check' in the install. From %pre, if this file does *not* exist then the current install is < 2.1 (meaning modifications need to be done for 2.1 compatibility). I then touch '%{_localstatedir}/run/mysql-mmm/.post-2.1.0-upgrade-do_mods' (in %pre) allowing me to verify that modifications are needed in %post. The modifications are simple sed changes for pid/status file and sbin daemon paths. I suppose I'm looking for another set of eyes to point out anything that is not obvious to me. The following are the [snipped] spec changes: # -------------------------------------------------- %install # … snipped # Specific for upgrading from 2.0.x -> 2.1 touch %{buildroot}%{_datadir}/mysql-mmm/.pre-2.1.0-upgrade-check-do-not-delete %pre # This is to facilitate the upgradability of 2.0.x -> 2.1 DO_MOD_CHECK="%{_datadir}/mysql-mmm/.pre-2.1.0-upgrade-check-do-not-delete" DO_MOD_VERIFY="%{_localstatedir}/run/mysql-mmm/.post-2.1.0-upgrade-do_mods" rm -f $DO_MOD_VERIFY 2>/dev/null if [ ! -f "$DO_MOD_CHECK" ]; then # the 'check' file does *not* exist (only installed as of 2.1.0) # modifications are necessary. touch $DO_MOD_VERIFY # copy paths for new configs (if replaced on upgrade) cp -a %{_localstatedir}/run/mysql-mmm/mmmd_mon.pid \ %{_localstatedir}/run/mysql-mmm/mmm_mond.pid 2>/dev/null ||: cp -a %{_localstatedir}/lib/mysql-mmm/mmmd_mon.status \ %{_localstatedir}/lib/mysql-mmm/mmm_mond.status 2>/dev/null ||: cp -a %{_localstatedir}/run/mysql-mmm/mmmd_agent.pid \ %{_localstatedir}/run/mysql-mmm/mmm_agentd.pid 2>/dev/null ||: fi %post # This is to facilitate the upgradability of 2.0.x -> 2.1 DO_MOD_VERIFY="%{_localstatedir}/run/mysql-mmm/.post-2.1.0-upgrade-do_mods" if [ -f "$DO_MOD_VERIFY" ]; then # system was upgraded from < 2.1, need to modify config files/paths if [ -f %{_sysconfdir}/mysql-mmm/mmm_mon.conf ]; then cp -a %{_sysconfdir}/mysql-mmm/mmm_mon.conf %{_sysconfdir}/mysql-mmm/mmm_mon.conf-pre2.1 sed -i "s|/var/run/mysql-mmm/mmmd_mon.pid|/var/run/mysql-mmm/mmm_mond.pid|g" \ %{_sysconfdir}/mysql-mmm/mmm_mon.conf sed -i "s|/var/lib/mysql-mmm/mmmd_mon.status|/var/lib/mysql-mmm/mmm_mond.status|g" \ %{_sysconfdir}/mysql-mmm/mmm_mon.conf fi if [ -f %{_sysconfdir}/mysql-mmm/mmm_common.conf ]; then cp -a %{_sysconfdir}/mysql-mmm/mmm_common.conf %{_sysconfdir}/mysql-mmm/mmm_common.conf-pre2.1 sed -i "s|/var/run/mysql-mmm/mmmd_agent.pid|/var/run/mysql-mmm/mmm_agentd.pid|g" \ %{_sysconfdir}/mysql-mmm/mmm_common.conf fi fi %post agent # … snipped # This is to facilitate the upgradability of 2.0.x -> 2.1 DO_MOD_VERIFY="%{_localstatedir}/run/mysql-mmm/.post-2.1.0-upgrade-do_mods" if [ -f "$DO_MOD_VERIFY" ]; then # remove old files rm -f %{_localstatedir}/run/mysql-mmm/mmmd_agent.pid 2>/dev/null ||: fi %post monitor # … snipped # This is to facilitate the upgradability of 2.0.x -> 2.1 DO_MOD_VERIFY="%{_localstatedir}/run/mysql-mmm/.post-2.1.0-upgrade-do_mods" if [ -f "$DO_MOD_VERIFY" ]; then # remove old files rm -f %{_localstatedir}/run/mysql-mmm/mmmd_mon.pid 2>/dev/null ||: rm -f %{_localstatedir}/lib/mysql-mmm/mmmd_mon.status 2>/dev/null ||: fi # -------------------------------------------------- Thanks. --- derks -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel