Comment 3 for bug 1490071

Revision history for this message
Otto Kekäläinen (otto) wrote : Re: MariaDB writes to /var/lib/mysql after crossgrade, preventing users from reverting to MySQL

Robie, sorry but you've understood this all wrong. I hope to clarify the status now.

The lines responsible for this downgrade prevention feature are these:

    # Safe the user from stupidities.
    show_downgrade_warning=0
    for i in `ls $DATADIR/debian-*.flag 2>/dev/null`; do
      found_version=`echo $i | sed 's/.*debian-\([0-9\.]\+\).flag/\1/'`
      if dpkg --compare-versions "$this_version" '<<' "$found_version"; then
        show_downgrade_warning=1
        break;
      fi
    done
    if [ "$show_downgrade_warning" = 1 ]; then
      db_fset mysql-server-$this_version/really_downgrade seen false || true
      db_input medium mysql-server-$this_version/really_downgrade || true
      db_go
      db_get mysql-server-$this_version/really_downgrade || true
      if [ "$RET" = "true" ]; then
        rm -f $DATADIR/debian-*.flag
        touch $DATADIR/debian-$this_version.flag
      else
        echo "Aborting downgrade from (at least) $found_version to $this_version." 1>&2
        echo "If are sure you want to downgrade to $this_version, remove the file" 1>&2
        echo "$DATADIR/debian-*.flag and try installing again." 1>&2
        db_stop
        exit 1
      fi
    fi

See source at http://anonscm.debian.org/cgit/pkg-mysql/mysql-5.5.git/tree/debian/mysql-server-5.5.preinst#n67

I am on purpose linking to the mysql-5.5 source to alleviate that this downgrade flag thing is old legacy that has been around for ages. This same code is in MySQL 5.6 packaging. It is completely unfair to blaim MariaDB for any of this.

When you wanted to implement the config file decoupling last year I multiple times asked you to "prove" your point by referencing to actual bug reports where any real users where suffering from something that config file decoupling would be the solution. I don't recall that you managed to do that. Even then all the examples you referenced to were really bugs regarding legacy packaging and for example this flag file thing.

I tried to prioritize fixing this flag time on mailing list and irc many times. For example:

    I'd also like us to review the package install/remove/purge
    pre/post-scripts, as they are the same across all new versions of all
    variants and while doing MariaDB I stumbled across multiple issues,
    which some of I've fixed (and you should copy those commits over to
    the mysql-5.6 git tree), and some of them are still unresolved and we
    need to fix them together. I think this is a high priority since many
    of the install/upgrade/remove errors people report bugs about are due
    the stupid legacy stuff in these scripts, and due to design issues
    like the /var/lib/mysql/*.flag system.

(from http://lists.alioth.debian.org/pipermail/pkg-mysql-maint/2014-November/007237.html)

Please change the title of the bug to something more appropriate and please participate in the discussion at pkg-mysql-maint mailing list about how to redesign this flag thing: http://lists.alioth.debian.org/pipermail/pkg-mysql-maint/2015-September/008128.html