diff options
Diffstat (limited to 'debian/mariadb-server-10.3.preinst')
-rw-r--r-- | debian/mariadb-server-10.3.preinst | 212 |
1 files changed, 0 insertions, 212 deletions
diff --git a/debian/mariadb-server-10.3.preinst b/debian/mariadb-server-10.3.preinst deleted file mode 100644 index cbfc4640c41..00000000000 --- a/debian/mariadb-server-10.3.preinst +++ /dev/null @@ -1,212 +0,0 @@ -#!/bin/bash -e -# -# summary of how this script can be called: -# * <new-preinst> install -# * <new-preinst> install <old-version> -# * <new-preinst> upgrade <old-version> -# * <old-preinst> abort-upgrade <new-version> -# - -. /usr/share/debconf/confmodule - -if [ -n "$DEBIAN_SCRIPT_DEBUG" ]; then set -v -x; DEBIAN_SCRIPT_TRACE=1; fi -${DEBIAN_SCRIPT_TRACE:+ echo "#42#DEBUG# RUNNING $0 $*" 1>&2 } - -export PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin -MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" -mysql_datadir=/var/lib/mysql -mysql_upgradedir=/var/lib/mysql-upgrade - -# Try to stop the server in a sane way. If it does not success let the admin -# do it himself. No database directories should be removed while the server -# is running! Another mysqld in e.g. a different chroot is fine for us. -stop_server() { - if [ ! -x /etc/init.d/mysql ]; then return; fi - - # Return immediately if there are no mysql processes running - # as there is no point in trying to shutdown in that case. - if ! pgrep mysqld > /dev/null; then return; fi - - set +e - if [ -x /usr/sbin/invoke-rc.d ]; then - cmd="invoke-rc.d mysql stop" - else - cmd="/etc/init.d/mysql stop" - fi - $cmd - errno=$? - set -e - - # 0=ok, 100=no init script (fresh install) - if [ "$errno" != 0 -a "$errno" != 100 ]; then - echo "${cmd/ */} returned $errno" 1>&2 - echo "There is a MySQL server running, but we failed in our attempts to stop it." 1>&2 - echo "Stop it yourself and try again!" 1>&2 - db_stop - exit 1 - fi -} - -################################ main() ########################## - -this_version=10.3 -max_upgradeable_version=5.7 - -# Check if a flag file is found that indicates a previous MariaDB or MySQL -# version was installed. If multiple flags are found, check which one was -# the biggest version number. -for flag in $mysql_datadir/debian-*.flag -do - - # The for loop leaves $flag as the query string if there are no results, - # so the check below is needed to stop further processing when there are - # no real results. - if [ $flag = "$mysql_datadir/debian-*.flag" ] - then - break - fi - - flag_version=`echo $flag | sed 's/.*debian-\([0-9\.]\+\).flag/\1/'` - - # Initialize value if empty - if [ -z "$found_version" ] - then - found_version=$flag_version - fi - - # Update value if now bigger then before - if dpkg --compare-versions "$flag_version" '>>' "$found_version" - then - found_version=$flag_version - fi - -done - - -# If an upgrade is detected, proceed with it automatically without -# requiring any user interaction. -# -# However, if the user attempts to downgrade, warn about the incompatibility. -# Downgrade is detected if the flag version is bigger than $this_version -# (e.g. 10.1 > 10.0) or the flag version is smaller than 10.0 but bigger -# than $max_upgradeable_version. -if [ ! -z "$found_version" ] -then - - echo "$mysql_datadir: found previous version $found_version" - - if dpkg --compare-versions "$found_version" '>>' "$this_version" - then - downgrade_detected=true - fi - - if dpkg --compare-versions "$found_version" '>>' "$max_upgradeable_version" \ - && dpkg --compare-versions "$found_version" '<<' "10.0" - then - downgrade_detected=true - fi - -fi - - -# Don't abort dpkg if downgrade is detected (as was done previously). -# Instead simply move the old datadir and create a new for this_version. -if [ ! -z "$downgrade_detected" ] -then - db_input critical mariadb-server-10.3/old_data_directory_saved || true - db_go - echo "The file $mysql_datadir/debian-$found_version.flag indicates a" 1>&2 - echo "version that cannot automatically be upgraded. Therefore the" 1>&2 - echo "previous data directory will be renamed to $mysql_datadir-$found_version and" 1>&2 - echo "a new data directory will be initialized at $mysql_datadir." 1>&2 - echo "Please manually export/import your data (e.g. with mysqldump) if needed." 1>&2 - mv -f $mysql_datadir $mysql_datadir-$found_version - # Also move away the old debian.cnf file that included credentials that are - # no longer valid - mv -f /etc/mysql/debian.cnf /etc/mysql/debian.cnf-$found_version -fi - -# to be sure -stop_server - -# If we use NIS then errors should be tolerated. It's up to the -# user to ensure that the mysql user is correctly setup. -# Beware that there are two ypwhich one of them needs the 2>/dev/null! -if test -n "`which ypwhich 2>/dev/null`" && ypwhich >/dev/null 2>&1; then - set +e -fi - -# -# Now we have to ensure the following state: -# /etc/passwd: mysql:x:100:101:MySQL Server:/nonexistent:/bin/false -# /etc/group: mysql:x:101: -# -# Sadly there could any state be present on the system so we have to -# modify everything carefully i.e. not doing a chown before creating -# the user etc... -# - -# creating mysql group if he isn't already there -if ! getent group mysql >/dev/null; then - # Adding system group: mysql. - addgroup --system mysql >/dev/null -fi - -# creating mysql user if he isn't already there -if ! getent passwd mysql >/dev/null; then - # Adding system user: mysql. - adduser \ - --system \ - --disabled-login \ - --ingroup mysql \ - --no-create-home \ - --home /nonexistent \ - --gecos "MySQL Server" \ - --shell /bin/false \ - mysql >/dev/null -fi - -# end of NIS tolerance zone -set -e - -# if there's a symlink, let's store where it's pointing, because otherwise -# it's going to be lost in some situations -for dir in DATADIR LOGDIR; do - checkdir=`eval echo "$"$dir` - if [ -L "$checkdir" ]; then - mkdir -p "$mysql_upgradedir" - cp -dT "$checkdir" "$mysql_upgradedir/$dir.link" - fi -done - -# creating mysql home directory -if [ ! -d $mysql_datadir -a ! -L $mysql_datadir ]; then - mkdir $mysql_datadir -fi - -# checking disc space -if LC_ALL=C BLOCKSIZE= df --portability $mysql_datadir/. | tail -n 1 | awk '{ exit ($4>1000) }'; then - echo "ERROR: There's not enough space in $mysql_datadir/" 1>&2 - db_stop - exit 1 -fi - -# Since the home directory was created before putting the user into -# the mysql group and moreover we cannot guarantee that the -# permissions were correctly *before* calling this script, we fix them now. -# In case we use NIS and no mysql user is present then this script should -# better fail now than later.. -# The "set +e" is necessary as e.g. a ".journal" of a ext3 partition is -# not chgrp'able (#318435). -set +e -find $mysql_datadir ! -uid $(id -u mysql) -print0 | xargs -0 -r chown mysql -find $mysql_datadir -follow -not -group mysql -print0 2>/dev/null \ - | xargs -0 --no-run-if-empty chgrp mysql -set -e - - -db_stop - -#DEBHELPER# - -exit 0 |