#! /bin/sh # -*- Mode: Sh -*- # postinst --- # Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) # Created On : Fri Nov 14 11:25:07 2003 # Created On Node : glaurung.green-gryphon.com # Last Modified By : Manoj Srivastava # Last Modified On : Mon Dec 1 21:50:09 2003 # Last Machine Used: glaurung.green-gryphon.com # Update Count : 27 # Status : Unknown, Use with caution! # HISTORY : # Description : # # arch-tag: 5401e9ef-39cc-4aee-96a4-61dfb8f32cf7 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Abort if any command returns an error value set -e package_name=dist; if [ -z "$package_name" ]; then print >&2 "Internal Error. Please report a bug." exit 1; fi # This script is called as the last step of the installation of the # package. All the package's files are in place, dpkg has already done # its automatic conffile handling, and all the packages we depend of # are already fully installed and configured. # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package # # quoting from the policy: # Any necessary prompting should almost always be confined to the # post-installation script, and should be protected with a conditional # so that unnecessary prompting doesn't happen if a package's # installation fails and the `postinst' is called with `abort-upgrade', # `abort-remove' or `abort-deconfigure'. # The following idempotent stuff doesn't generally need protecting # against being run in the abort-* cases. # Install info files into the dir file ##: install-info --quiet --section "section pattern" "Section Title" \ ##: --description="Name of the document" /usr/info/${package_name}.info # Create stub directories under /usr/local ##: if test ! -d /usr/local/lib/${package_name}; then ##: if test ! -d /usr/local/lib; then ##: if mkdir /usr/local/lib; then ##: chown root.staff /usr/local/lib || true ##: chmod 2775 /usr/local/lib || true ##: fi ##: fi ##: if mkdir /usr/local/lib/${package_name}; then ##: chown root.staff /usr/local/lib/${package_name} || true ##: chmod 2775 /usr/local/lib/${package_name} || true ##: fi ##: fi # Ensure the menu system is updated ##: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus # Arrange for a daemon to be started at system boot time ##: update-rc.d ${package_name} default >/dev/null ask_organization () { if [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule db_capb ok='' # See if the old shared question still exists. if db_get share/news/organization; then if [ "X$RET" != "X" ]; then orgname="$RET" db_fget share/news/organization seen if [ "$RET" = true ]; then if [ "$orgname" = "--none--" ]; then orgname="" fi else orgname="" fi # I no longer claim this question. db_unregister share/news/organization fi else # Good. The old question is gone. if ! db_get shared/news/organization; then while [ ! "$ok" ]; do retval=$(db_input low shared/news/organization) || true if [ "$retval" = "30 question skipped" ]; then ok=1 fi db_go || true db_get shared/news/organization if [ "X$RET" != "X" ]; then ok=1 break fi done fi db_fget shared/news/organization seen if [ "$RET" = true ]; then # The user saw and answered the question using debconf. db_get shared/news/organization if [ "$RET" = "--none--" ]; then orgname="" else orgname="$RET" fi else # Debconf did not display the question to the user. orgname="" fi fi else # Debconf is not available so ask the question by hand. echo "" /bin/cat << 'EOH' Please type the name of your organization as you want it to appear on the Organization line of outgoing articles/patches. This information is stored in the configuration file /etc/news/organization. (It is nice if this also specifies your location. Your city name is probably sufficient if well known.) For example: University of Southern North Dakota, Hoople type in "--none--" if you do not want to specify one. However, you shall be asked again on the next upgrade if /etc/news/organization does not exist. EOH orgname="" while test "X$orgname" = "X"; do rp='Organization:' xxxm=$dflt case "$xxxm" in '') echo -n "$rp " ;; *) case "$rp" in '') echo -n "[$xxxm] ";; *) if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then echo "$rp" echo -n "[$xxxm] " else echo -n "$rp [$xxxm] " fi ;; esac;; esac ans='!' while expr "X$ans" : "X!" >/dev/null; do read answ set x $xxxm shift aok=''; eval "ans=\"$answ\"" && aok=y case "$answ" in "$ans") case "$ans" in "!") sh echo " " case "$xxxm" in '') echo -n "$rp " ;; *) case "$rp" in '') echo -n "[$xxxm] ";; *) if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then echo "$rp" echo -n "[$xxxm] " else echo -n "$rp [$xxxm] " fi ;; esac;; esac ;; !*) set x `expr "X$ans" : "X!\(.*\)$"` shift sh -c "$*" echo " " case "$xxxm" in '') echo -n "$rp ";; *) case "$rp" in '') echo -n "[$xxxm] ";; *) if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then echo "$rp" echo -n "[$xxxm] " else echo -n "$rp [$xxxm] " fi ;; esac;; esac ;; esac;; *) case "$aok" in y) echo "*** Substitution done -- please confirm." xxxm="$ans" ans=`echo -n "$ans" | tr '\012' ' '` xxxm="$ans" ans=! ;; *) echo "*** Error -- try again." ans=! ;; esac case "$xxxm" in '') echo -n "$rp " ;; *) case "$rp" in '') echo -n "[$xxxm] ";; *) if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then echo "$rp" echo -n "[$xxxm] " else echo -n "$rp [$xxxm] " fi ;; esac;; esac ;; esac case "$ans$xxxm$nostick" in '') ans=! case "$xxxm" in '') echo -n "$rp " ;; *) case "$rp" in '') echo -n "[$xxxm] ";; *) if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then echo "$rp" echo -n "[$xxxm] " else echo -n "$rp [$xxxm] " fi ;; esac;; esac ;; esac done case "$ans" in '') ans="$xxxm";; esac orgname="$ans" done if [ "$ans" = "--none--" ]; then orgname="" fi fi } set_org_perms () { chown root /etc/news/organization if grep news /etc/group > /dev/null 2>&1 ; then chgrp news /etc/news/organization else chgrp root /etc/news/organization fi chmod 0644 /etc/news/organization } case "$1" in configure) # Configure this package. If the package must prompt the user for # information, do it here. # Install emacs lisp files ##:if [ -x /usr/lib/emacsen-common/emacs-package-install ]; then ##: /usr/lib/emacsen-common/emacs-package-install $package_name ##:fi # Activate menu-methods script ##: chmod a+x /etc/menu-methods/${package_name} # Update ld.so cache ##: ldconfig # Make our version of a program available ##: update-alternatives \ ##: --install /usr/bin/program program /usr/bin/alternative 50 \ ##: --slave /usr/man/man1/program.1.gz program.1.gz \ ##: /usr/man/man1/alternative.1.gz # Tell ucf that the file in /usr/share/foo is the latest # maintainer version, and let it handle how to manage the real # confuguration file in /etc. This is how a static configuration # file can be handled: ##:if which ucf >/dev/null 2>&1; then ##: ucf /usr/share/${package_name}/configuration /etc/${package_name}.conf ##:fi ### We could also do this on the fly. The following is from Tore ### Anderson: if [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule fi ### find out what the user answered. # db_get foo/run_on_boot # run_on_boot=$RET # db_stop ### safely create a temporary file to generate our suggested ### configuration file. # tempfile=`tempfile` # cat << _eof > $tempfile ### Configuration file for Foo. ### this was answered by you, the user in a debconf dialogue # RUNONBOOT=$run_on_boot ### this was not, as it has a sane default value. # COLOUROFSKY=blue #_eof ### Note that some versions of debconf do not release stdin, so ### the following invocation of ucf may not work, since the stdin ### is never coneected to ucfr. ### now, invoke ucf, which will take care of the rest, and ask ### the user if he wants to update his file, if it is modified. #ucf $tempfile /etc/foo.conf ### done! now we'll just clear up our cruft. #rm -f $tempfile # There are three sub-cases: if test "${2+set}" != set; then # We're being installed by an ancient dpkg which doesn't remember # which version was most recently configured, or even whether # there is a most recently configured version. : elif test -z "$2" || test "$2" = ""; then # The package has not ever been configured on this system, or was # purged since it was last configured. : else # Version $2 is the most recently configured version of this # package. : fi if [ ! -f /etc/news/organization ]; then echo "" echo "Hmmm.. You don't seem to have an /etc/news/organization file." echo "Ususally that contains the name of your organization as " echo "you want it to appear on the Organization line of outgoing" echo "articles/patches." echo "" : echo create directory if test ! -d /etc/news ; then mkdir /etc/news chown root /etc/news if grep news /etc/group > /dev/null 2>&1 ; then chgrp news /etc/news else echo "darn, you do not have news in /etc/group" chgrp root /etc/news fi chmod 2755 /etc/news fi # if the organization stuff exists, then copy that over if test -f /etc/organization ; then echo "But you do have /etc/organization. I'll Use that." echo "If that is not right, just edit the /etc/news/organization " echo "after the setup is done. (/etc/organization is deprecated. You" echo "might consider removing it if nothing else uses it)." echo "" cp /etc/organization /etc/news/organization set_org_perms else : echo get organization name ask_organization if [ "X$orgname" != "X" ]; then echo "$orgname" > /etc/news/organization set_org_perms fi fi fi ;; abort-upgrade) # Back out of an attempt to upgrade this package FROM THIS VERSION # to version $2. Undo the effects of "prerm upgrade $2". : ;; abort-remove) if test "$2" != in-favour; then echo "$0: undocumented call to \`postinst $*'" 1>&2 exit 0 fi # Back out of an attempt to remove this package, which was due to # a conflict with package $3 (version $4). Undo the effects of # "prerm remove in-favour $3 $4". : ;; abort-deconfigure) if test "$2" != in-favour || test "$5" != removing; then echo "$0: undocumented call to \`postinst $*'" 1>&2 exit 0 fi # Back out of an attempt to deconfigure this package, which was # due to package $6 (version $7) which we depend on being removed # to make way for package $3 (version $4). Undo the effects of # "prerm deconfigure in-favour $3 $4 removing $6 $7". : ;; *) echo "$0: didn't understand being called with \`$1'" 1>&2 exit 0;; esac # Install doc base documentation ##:if which install-docs >/dev/null 2>&1; then ##: if [ -e /usr/share/doc-base/${package_name} ]; then ##: install-docs -i /usr/share/doc-base/${package_name} ##: fi ##:fi #DEBHELPER# exit 0