| Current Path : /var/lib/dpkg/info/ |
| Current File : //var/lib/dpkg/info/libc6.postinst |
#!/bin/sh
set -e
export LC_ALL=C
type=$1
preversion=$2
package_name()
{
echo libc6
}
# element() is a helper function for file-rc:
element() {
local element list IFS
element="$1"
[ "$2" = "in" ] && shift
list="$2"
[ "$list" = "-" ] && return 1
[ "$list" = "*" ] && return 0
IFS=","
set -- $list
case $element in
"$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9")
return 0
esac
return 1
}
# filerc (runlevel, service) returns /etc/init.d/service, if service is
# running in $runlevel:
filerc() {
local runlevel basename
runlevel=$1
basename=$2
while read LINE
do
case $LINE in
\#*|"") continue
esac
set -- $LINE
SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4"
[ "$CMD" = "/etc/init.d/$basename" ] || continue
if element "$runlevel" in "$START" || element "S" in "$START"
then
echo "/etc/init.d/$basename"
return 0
fi
done < /etc/runlevel.conf
echo ""
}
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
# Add support for /etc/ld.so.conf.d
if [ -e /etc/ld.so.conf ]; then
[ -z "$(tail -n 1 /etc/ld.so.conf)" ] || echo >> /etc/ld.so.conf
else
touch /etc/ld.so.conf
fi
if ! grep -q '^include /etc/ld.so.conf.d/.*\.conf$' /etc/ld.so.conf ; then
echo 'include /etc/ld.so.conf.d/*.conf' >> /etc/ld.so.conf
fi
# We don't use a registry anymore, remove the old file
rm -f /etc/ld.so.hwcappkgs
# /etc/ld.so.nohwcap code: NOHWCAP
# 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.
# Get the list of optimized packages for a given architecture
# Before removing a package from this list, make sure it appears
# in the Conflicts: line of libc.
case $(dpkg --print-architecture) in
alpha)
hwcappkgs="libc6-alphaev67"
;;
i386)
hwcappkgs="libc6-i686 libc6-xen"
;;
kfreebsd-i386)
hwcappkgs="libc0.1-i686"
;;
sparc)
hwcappkgs="libc6-sparcv9 libc6-sparcv9b"
;;
esac
# We check the version between the current installed libc and
# all optimized packages (on architectures where such packages
# exists).
all_upgraded=yes
if [ -n "$hwcappkgs" ]; then
for pkg in $hwcappkgs ; do
ver=$(dpkg-query -l $pkg 2>/dev/null | sed -e '/^[a-z][a-z]\s/!d;/^.[nc]/d;' -e "s/^..\s\+$pkg\s\+//;s/\s.*//g")
if [ -n "$ver" ] && [ "$ver" != "2.11.3-4" ]; then
all_upgraded=no
fi
done
fi
# 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" ]; then
if [ ! -d /var/mail ] && [ ! -L /var/mail ]; then
ln -sf spool/mail /var/mail
fi
if dpkg --compare-versions "$preversion" lt 2.11-1; 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 proftpd postfix postfix-tls rsync samba"
check="$check sasl2-bin slapd smail sendmail snmpd ssh"
check="$check spamassassin vsftpd wu-ftpd wu-ftpd-academ wwwoffle"
check="$check webmin dropbear gdm"
# NSS services check: NSS_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' \
)
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 [ -n "$services" ]; then
if [ -f /usr/share/debconf/confmodule ] ; then
db_version 2.0
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
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
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
idl="invoke-rc.d ${service}"
elif [ -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
case "$service" in
gdm)
echo -n " $service: reloading..."
if $idl reload > /dev/null 2>&1; then
echo "done."
else
echo "FAILED! ($?)"
failed="$service $failed"
fi
;;
*)
echo -n " $service: restarting..."
if $idl 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 \`/etc/init.d/<service> start'"
echo "If the service still fails to start, you may need to file a bug on"
echo "$(package_name) 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.11-1
fi # Upgrading
# Restart init. If it fails, there is nothing we can do, so
# just ignore the error
telinit u 2> /dev/null || true ; sleep 1
fi
# Automatically added by dh_makeshlibs
if [ "$1" = "configure" ]; then
ldconfig
fi
# End automatically added section
exit 0