This is complicated by the fact that the postrm script currently runs
remove-shell even during an upgrade. So we cannot tell during an
upgrade whether bash was removed from /etc/shells by the user or by the
old postrm script.
The following patch should improve later upgrades, however. It changes
postrm to run remove-shell only on purge (or disappear), and postinst to
run add-shell on initial installation or upgrade from a version that
runs remove-shell when being upgraded.
This would mean that bash would still be left in /etc/shells if it is
removed but not purged, though this is a non-issue so long as bash is
essential.
Ben.
diff -u bash-3.2/debian/bash.postrm bash-3.2/debian/bash.postrm
--- bash-3.2/debian/bash.postrm
+++ bash-3.2/debian/bash.postrm
@@ -3,7 +3,14 @@
set -e
case $1 in
-purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+remove|upgrade|failed-upgrade|abort-install|abort-upgrade)
+ ;;
+
+purge|disappear)
+ if [ -x /usr/sbin/remove-shell ] [ -f /etc/shells ]; then
+ /usr/sbin/remove-shell /bin/bash
+ /usr/sbin/remove-shell /bin/rbash
+ fi
;;
*)
@@ -12,11 +19,6 @@
;;
esac
-if [ -x /usr/sbin/remove-shell ] [ -f /etc/shells ]; then
-/usr/sbin/remove-shell /bin/bash
-/usr/sbin/remove-shell /bin/rbash
-fi
-
#DEBHELPER#
exit 0
diff -u bash-3.2/debian/bash.postinst bash-3.2/debian/bash.postinst
--- bash-3.2/debian/bash.postinst
+++ bash-3.2/debian/bash.postinst
@@ -14,7 +14,8 @@
10 \
|| true
-if [ -x /usr/sbin/add-shell ]; then
+if [ $1 = configure ] dpkg --compare-versions $2 le 3.2-2 \
+ [ -x /usr/sbin/add-shell ]; then
/usr/sbin/add-shell /bin/bash
/usr/sbin/add-shell /bin/rbash
fi
--- END ---
--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
signature.asc
Description: This is a digitally signed message part