This file is indexed.

preinst is in mariadb-server-10.1 1:10.1.29-6.

This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#!/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

# Just kill the invalid insserv.conf.d directory without fallback
if [ -d "/etc/insserv.conf.d/mariadb/" ]; then
    rm -rf "/etc/insserv.conf.d/mariadb/"
fi

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

################################ main() ##########################

this_version=10.1
max_upgradeable_version=5.6

# 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.1/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

# 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



exit 0