0byt3m1n1
Path:
/
var
/
lib
/
dpkg
/
info
/
[
Home
]
File: libc6:amd64.postinst
#!/bin/sh set -e export LC_ALL=C 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 # We don't use a registry anymore, remove the old file rm -f /etc/ld.so.hwcappkgs # /etc/ld.so.nohwcap code: # Handle upgrades when libc-opt package has been installed. # When a /etc/ld.so.nohwcap file exists, ld.so only use libraries # from /lib, and ignore all optimised libraries. This file is # inconditionaly created in the preinst script of libc. # We check the version between the current installed libc and # all optimized packages. Due to multiarch, this has to be done # independently of the architecture of the package. all_upgraded=yes for pkg in libc6.1-alphaev67 libc6-xen ; do ver=$(dpkg-query -l $pkg 2>/dev/null | sed -e '/^[a-z][a-z]\s/!d;/^.[nc]/d;' -e "s/^..\s\+$pkg[0-9a-z:]*\s\+//;s/\s.*//g") if [ -n "$ver" ] && [ "$ver" != "2.27-3ubuntu1.5" ]; then all_upgraded=no fi done # If the versions of all optimized packages are the same as the libc # one, we could remove /etc/ld.so.nohwcap. Otherwise, it will be removed # when all optimized packages are upgraded or removed. if [ "$all_upgraded" = yes ] ; then rm -f /etc/ld.so.nohwcap fi # Load debconf module if available if [ -f /usr/share/debconf/confmodule ] ; then . /usr/share/debconf/confmodule fi if [ -n "$preversion" ] && [ -x "$(which ischroot)" ] && ! ischroot; then if dpkg --compare-versions "$preversion" lt 2.27; then check="" [ -f /var/run/services.need_restart ] && check=$(cat /var/run/services.need_restart 2>/dev/null) # Change service names back into package names, so that we can # double-check package installation. check=$(echo "$check" | \ sed -e's/\bapache2\b/apache2.2-common/g' \ -e's/\batd\b/at/g' \ -e's/\bdovecot\b/dovecot-common/g' \ -e's/\bexim4\b/exim4-base/g' \ -e's/\blpd\b/lpr/g' \ -e's/\blpd-ppd\b/lpr-ppd/g' \ -e's/\bmysql\b/mysql-server/g' \ -e's/\bsaslauthd\b/sasl2-bin/g' \ ) # Check to see which of the services that were running at unpack # time are still around # the following substitution processes the check variable # and returns results in the services variable # NSS services check: echo -n "Checking for services that may need to be restarted..." # Only get the ones that are installed, and configured check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}') # 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/\bsasl2-bin\b/saslauthd/g' \ -e's/\bsamaba\b/smbd/g' \ -e's/\bpostgresql-common\b/postgresql/g' \ ) echo echo "Checking init scripts..." rl=$(runlevel | sed 's/.*\ //') for service in $check; do if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then 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 else if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then idl=$(filerc $rl $service) else idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1) fi if [ -n "$idl" ] && [ -x $idl ]; then services="$service $services" fi fi done # If there are services that we *stopped* in the preinst, don't # forget to restart them now if [ -e /var/run/services.need_start ]; then services="$(cat /var/run/services.need_start) $services" fi if [ -n "$services" ]; then echo "Restarting services possibly affected by the upgrade:" failed="" for service in $services; do case "$service" in gdm) idlopt="reload" ;; *) idlopt="restart" ;; esac echo -n " $service: restarting..." if invoke-rc.d ${service} $idlopt > /dev/null 2>&1; then echo "done." else echo "FAILED! ($?)" failed="$service $failed" fi 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" if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then db_input medium glibc/restart-failed || true else db_input critical glibc/restart-failed || true fi 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." rm -f /var/run/services.need_start /var/run/services.need_restart 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.27 # give a reboot notification on al upgrades (LP: #1546457) if [ -x /usr/share/update-notifier/notify-reboot-required ]; then /usr/share/update-notifier/notify-reboot-required fi fi # Upgrading # Restart init. Currently handles chroots, systemd and upstart, and # assumes anything else is going to not fail at behaving like # sysvinit: TELINIT=yes if ischroot 2>/dev/null; then # Don't bother trying to re-exec init from a chroot: TELINIT=no elif [ -d /run/systemd/system ]; then # Skip if systemd is the active PID 1, since systemd doesn't # need a reexec for a clean shutdown TELINIT=no elif [ -x "`which initctl`" ]; then UPSTART=$(initctl version 2>/dev/null | awk '/upstart/ {print $3}' | tr -d ')') if dpkg --compare-versions "$UPSTART" lt-nl 1.6.1; then # This is an old upstart that can't re-exec statefully: TELINIT=no touch /var/run/init.upgraded fi fi if [ "$TELINIT" = "yes" ]; then telinit u 2>/dev/null || true ; sleep 1 fi fi exit 0