a12cbdb6b59eed964b9118741f1303655cf49c66
[openafs.git] / src / packaging / Debian / openafs-client.postinst
1 #! /bin/sh
2 #
3 # Summary of how this script can be called:
4 #
5 #  * <postinst> `configure' <most-recently-configured-version>
6 #  * <old-postinst> `abort-upgrade' <new version>
7 #  * <conflictor's-postinst> `abort-remove' `in-favour' <package>
8 #    <new-version>
9 #  * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
10 #    <failed-install-package> <version> `removing'
11 #    <conflicting-package> <version>
12
13 set -e
14
15 case "$1" in
16 configure)
17     update-alternatives --install /usr/bin/pagsh pagsh \
18         /usr/bin/pagsh.openafs 100  \
19         --slave /usr/share/man/man1/pagsh.1.gz pagsh.1.gz \
20         /usr/share/man/man1/pagsh.openafs.1.gz
21
22     test -d /afs || mkdir /afs
23
24     . /usr/share/debconf/confmodule
25     db_version 2.0
26
27     db_get openafs-client/thiscell
28     echo $RET >/etc/openafs/ThisCell
29     THISCELL=$RET
30
31     if test -f /etc/openafs/CellServDB ; then
32         :
33     else
34         cp /usr/share/openafs/CellServDB /etc/openafs
35     fi
36
37     # If ThisCell is not in CellServDB, we have to prompt the user for the
38     # VLDB servers.  Unfortunately, we can't do this in config because we
39     # need the CellServDB file, which is part of the package.  We have to
40     # override a lintian warning for this since prompts at installation time
41     # are frowned upon.
42     if grep -q -F "$RET" /etc/openafs/CellServDB && [ "x$RET" != "x" ] ; then
43         :
44     else
45         db_input critical openafs-client/cell-info || true
46         db_input high openafs-client/run-client || true
47         db_go
48         db_get openafs-client/cell-info
49         if [ "x$RET" != "x" ] ; then
50             echo \>$THISCELL > /etc/openafs/CellServDB.new
51             perl -MSocket -e 'foreach (@ARGV) {' \
52                 -e '@a=gethostbyname($_) and ' \
53                 -e 'printf("%s\t\t# %s\n",inet_ntoa($a[4]),$a[0]) }' $RET \
54                     >>/etc/openafs/CellServDB.new
55             if [ `wc -l </etc/openafs/CellServDB.new` -eq 1 ] ; then
56                 echo None of the hostnames resolved to an address 2>&1
57                 db_reset openafs-client/cell-info || true
58                 exit 1
59             fi
60             cat /etc/openafs/CellServDB.new /etc/openafs/CellServDB \
61                 >/etc/openafs/CellServDB.tmp
62             mv /etc/openafs/CellServDB.tmp /etc/openafs/CellServDB
63             rm /etc/openafs/CellServDB.new
64         fi
65     fi
66                     
67     db_get openafs-client/cachesize
68     echo /afs:/var/cache/openafs:$RET >/etc/openafs/cacheinfo
69
70     db_get openafs-client/run-client
71     echo AFS_CLIENT=$RET >/etc/openafs/afs.conf.client
72     db_get openafs-client/afsdb
73     echo AFS_AFSDB=$RET >>/etc/openafs/afs.conf.client
74     db_get openafs-client/crypt
75     echo AFS_CRYPT=$RET >>/etc/openafs/afs.conf.client
76     db_get openafs-client/dynroot
77     echo AFS_DYNROOT=$RET >>/etc/openafs/afs.conf.client
78     db_get openafs-client/fakestat
79     echo AFS_FAKESTAT=$RET >>/etc/openafs/afs.conf.client
80     ;;
81
82 abort-upgrade|abort-remove|abort-deconfigure)
83     ;;
84
85 *)
86     echo "postinst called with unknown argument '$1'" >&2
87     exit 0
88     ;;
89 esac
90
91 # dh_installdeb will replace this with shell code automatically
92 # generated by other debhelper scripts.
93
94 #DEBHELPER#
95
96 exit 0