File: /var/lib/dpkg/info/libc6:amd64.postinst
#!/bin/sh
set -e
type=$1
preversion=$2
checkpkgver () {
local status pkg
pkg=$1
status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
fi
}
if [ "$type" = configure ]
then
# Load debconf module if available
if [ -f /usr/share/debconf/confmodule ] ; then
. /usr/share/debconf/confmodule
fi
# Only change LC_ALL after loading debconf to ensure the debconf templates
# are properly localized.
export LC_ALL=C
if [ -n "$preversion" ] && [ -x "$(command -v ischroot)" ] && ! ischroot; then
if dpkg --compare-versions "$preversion" lt 2.41; then
check="apache2.2-common apache apache-ssl apache-perl autofs at"
check="$check boa cucipop courier-authdaemon cron cups exim"
check="$check exim4-base dovecot-common cucipop incron lprng lpr"
check="$check lpr-ppd mysql-server nis openbsd-inetd"
check="$check openldapd openssh-server postgresql-common proftpd"
check="$check postfix postfix-tls rsync samba sasl2-bin slapd"
check="$check smail sendmail snmpd spamassassin vsftpd"
check="$check wu-ftpd wu-ftpd-academ wwwoffle"
check="$check webmin dropbear gdm"
# NSS services check:
echo -n "Checking for services that may need to be restarted..."
# Only get the ones that are installed, of the same architecture
# as libc (or arch all) and configured. Restart openssh-server even
# if only half-configured to continue accepting new connections
# during the upgrade.
check=$(dpkg-query -W -f='${binary:Package} ${Status} ${Architecture}\n' $check 2> /dev/null | \
grep -E "(^openssh-server .* unpacked|installed) (all|${DPKG_MAINTSCRIPT_ARCH})$" | sed 's/[: ].*//')
# some init scripts don't match the package names
check=$(echo $check | \
sed -e's/\bapache2.2-common\b/apache2/g' \
-e's/\bat\b/atd/g' \
-e's/\bdovecot-common\b/dovecot/g' \
-e's/\bexim4-base\b/exim4/g' \
-e's/\blpr\b/lpd/g' \
-e's/\blpr-ppd\b/lpd-ppd/g' \
-e's/\bmysql-server\b/mysql/g' \
-e's/\bopenssh-server\b/ssh/g' \
-e's/\bsasl2-bin\b/saslauthd/g' \
-e's/\bsamba\b/smbd/g' \
-e's/\bpostgresql-common\b/postgresql/g' \
)
echo
echo "Checking init scripts..."
for service in $check; do
invoke-rc.d ${service} status >/dev/null 2>/dev/null && status=0 || status=$?
if [ "$status" = "0" ] || [ "$status" = "2" ] ; then
services="$service $services"
elif [ "$status" = "100" ] ; then
echo "WARNING: init script for $service not found."
fi
done
if [ -n "$services" ]; then
if [ -f /usr/share/debconf/confmodule ] ; then
db_version 2.0
db_input critical libraries/restart-without-asking || true
db_go || true
db_get libraries/restart-without-asking
if [ "$RET" != true ]; then
db_reset glibc/restart-services
db_set glibc/restart-services "$services"
db_input critical glibc/restart-services || true
db_go || true
db_get glibc/restart-services
if [ "x$RET" != "x" ]
then
services="$RET"
else
services=""
fi
fi
else
echo
echo "Name Service Switch update in the C Library: post-installation question."
echo
echo "Running services and programs that are using NSS need to be restarted,"
echo "otherwise they might not be able to do lookup or authentication any more"
echo "(for services such as ssh, this can affect your ability to login)."
echo "Note: restarting sshd/telnetd should not affect any existing connections."
echo
echo "The services detected are: "
echo " $services"
echo
echo "If other services have begun to fail mysteriously after this upgrade, it is"
echo "probably necessary to restart them too. We recommend that you reboot your"
echo "machine after the upgrade to avoid NSS-related troubles."
echo
frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'`
if [ "$frontend" = noninteractive ]; then
echo "Non-interactive mode, restarting services"
answer=yes
else
echo -n "Do you wish to restart services? [Y/n] "
read answer
case $answer in
N*|n*) services="" ;;
*) ;;
esac
fi
fi
echo
if [ "$services" != "" ]; then
echo "Restarting services possibly affected by the upgrade:"
failed=""
for service in $services; do
case "$service" in
gdm)
echo -n " $service: reloading..."
if invoke-rc.d ${service} reload > /dev/null 2>&1; then
echo "done."
else
echo "FAILED! ($?)"
failed="$service $failed"
fi
;;
*)
echo -n " $service: restarting..."
if invoke-rc.d ${service} restart > /dev/null 2>&1; then
echo "done."
else
echo "FAILED! ($?)"
failed="$service $failed"
fi
;;
esac
done
echo
if [ -n "$failed" ]; then
if [ -f /usr/share/debconf/confmodule ] ; then
db_fset glibc/restart-failed seen false
db_subst glibc/restart-failed services "$failed"
db_input critical glibc/restart-failed || true
db_go || true
else
echo "The following services failed to start: $failed"
echo
echo "You will need to start these manually by running \`invoke-rc.d <service> start'"
echo "If the service still fails to start, you may need to file a bug on"
echo "${DPKG_MAINTSCRIPT_PACKAGE}:${DPKG_MAINTSCRIPT_ARCH} or the service involved."
frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'`
if [ "$frontend" != noninteractive ]; then
echo
echo -n "Press ENTER to continue: "
read foo
fi
fi
else
echo "Services restarted successfully."
fi
fi
# Shut down the frontend, to make sure none of the
# restarted services keep a connection open to it
if [ -f /usr/share/debconf/confmodule ] ; then
db_stop
fi
else
echo "Nothing to restart."
fi
fi # end upgrading and $preversion lt 2.41
fi # Upgrading
# begin-remove-after: released:trixie
# Restart systemd. Starting with trixie, inits restart themselves via
# dpkg-triggers. For inits other than systemd, versioned Breaks have been
# declared, but doing so for systemd would create a cycle.
if ! command -v systemd >/dev/null; then
: # The systemd binary has been moved out of $PATH in trixie.
# systemd's trigger interest or its postinst will handle reexecuting.
elif [ -n "${DPKG_ROOT:-}" ] || ischroot 2>/dev/null; then
: # Do not re-exec init if we are operating on a chroot.
elif [ -d /run/systemd/system ]; then
# Restart systemd on upgrade, but carefully.
# The restart is wanted because of LP: #1942276 and Bug: #993821
# The care is needed because of https://bugs.debian.org/753725
# (if systemd --help fails the system might still be quite broken but
# that seems better than the kernel panic that results if systemd
# cannot reexec itself).
if systemd --help >/dev/null 2>/dev/null; then
systemctl daemon-reexec
else
echo "Error: Could not restart systemd, systemd binary not working" >&2
fi
fi
# end-remove-after
# Emit triggers to allow depending packages to restart themselves if
# needed. The triggers are called with "--no-await", as packages with the
# triggers-awaited state do not satisfy dependencies.
dpkg-trigger --no-await libc-upgrade
if [ -n "$preversion" ] && dpkg --compare-versions "$preversion" lt 2.41; then
dpkg-trigger --no-await libc-major-upgrade
fi
fi
exit 0