123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #!/bin/sh -e
- # This script can be called in the following ways:
- #
- # After the package was installed:
- # <postinst> configure <old-version>
- #
- #
- # If prerm fails during upgrade or fails on failed upgrade:
- # <old-postinst> abort-upgrade <new-version>
- #
- # If prerm fails during deconfiguration of a package:
- # <postinst> abort-deconfigure in-favour <new-package> <version>
- # removing <old-package> <version>
- #
- # If prerm fails during replacement due to conflict:
- # <postinst> abort-remove in-favour <new-package> <version>
- # Create the database files if they don't already exist
- create_database() {
- admindir=/var/lib/dpkg
- for file in diversions statoverride status; do
- if [ ! -f "$admindir/$file" ]; then
- touch "$admindir/$file"
- fi
- done
- }
- # Move the info directory from /usr/info to /usr/share/info
- move_info_directory() {
- if [ -d /usr/info ] && [ ! -L /usr/info ] \
- && [ -f /usr/info/dir ] && [ ! -L /usr/info/dir ]
- then
- echo "Moving /usr/info/dir to /usr/share/info/dir ..."
- mv /usr/info/dir /usr/share/info/dir
- if [ -f /usr/info/dir.old ]; then
- mv /usr/info/dir.old /usr/share/info/dir.old
- fi
- fi
- }
- # Remove the /usr/info symlinks we used to generate
- remove_info_symlink() {
- if [ -L /usr/info ]; then
- echo "Removing /usr/info symlink ..."
- rm /usr/info
- elif [ -L /usr/info/dir ]; then
- echo "Removing /usr/info/dir symlink ..."
- rm /usr/info/dir
- fi
- }
- # Repair damage to /usr/info caused by broken install-info
- fix_damaged_info() {
- echo -n "
- The version of dpkg you're upgrading from had a problem with the
- install-info program used to maintain the /usr/info/dir file. It may
- have corrupted the file, for example by placing new entries for the
- menu in it before the \`* Menu' line (thus making them ineffective) or
- by creating several identical sections.
- I can try to sort these problems out, but beware that this process is
- not guaranteed not to mess up a dir file which has things that look
- like menu entries in the introductory paragraphs. The distributed dir
- files do not do this, so if you haven't edited /usr/info/dir it's
- almost certainly safe to say \"yes\" to the next question.
- If you say \"no\" you may wish to check and/or edit /usr/info/dir yourself.
- Try to check/repair /usr/info/dir automatically ? [y/n] "
- read response
- case "$response" in
- [yY]*|"")
- echo "Checking/repairing /usr/info/dir ..."
- cleanup-info --unsafe
- ;;
- *)
- echo "OK, leaving it alone."
- ;;
- esac
- }
- # Remove stop links from runlevels which also have start links
- # Dates back to the days when update-rc.d was part of dpkg.
- remove_duplicate_daemons() {
- for lvl in 0 1 2 3 4 5 6; do
- cd /etc/rc$lvl.d
- for kill in K[0-9][0-9]*; do
- if [ -n "`echo \"x$kill\" | tr -d 0-9A-Za-z_-`" ]; then
- continue
- fi
- start="`echo $kill | sed -e 's/^K/S/'`"
- if ! [ -L $start ] && [ -L $kill ] \
- || [ "`ls -Li $kill 2>/dev/null | awk '{print $1}'`" != \
- "`ls -Li $start 2>/dev/null | awk '{print $1}'`" ]
- then
- continue
- fi
- removes="$removes rc$lvl.d/$kill"
- done
- done
- if [ -n "$removes" ]; then
- echo -n "
- Some daemons and similar services whose scripts have links in the
- /etc/rcN.d directories have both start (S) and stop (K) links in
- some runlevels. Thus these services get stopped and immediately
- restarted at some runlevel changes, which is probably not what
- you want.
- I can remove these probably-spurious K links if you like:
- $removes
- If you're not sure what to do, say \"no\", and then run delete them
- by hand later.
- Shall I remove these links ? [y/n] "
- read response
- case "$response" in
- [yY]*|"")
- echo "Removing duplicate K links ..."
- cd /etc
- rm $removes
- ;;
- *)
- echo "OK, leaving them."
- ;;
- esac
- fi
- }
- case "$1" in
- configure)
- case "$2" in
- 0.* | 1.0.* | 1.1.0 | 1.1.0[^0-9]* | '' )
- remove_duplicate_daemons
- ;;
- 1.1.6 | 1.1.6elf | 1.2.[0123] | 1.2.[0123]elf)
- fix_damaged_info
- ;;
- esac
- create_database
- move_info_directory
- remove_info_symlink
- ;;
- abort-upgrade|abort-deconfigure|abort-remove)
- ;;
- *)
- echo "$0 called with unknown argument \`$1'" 1>&2
- exit 1
- ;;
- esac
- #DEBHELPER#
- exit 0
|