streamlined pkg-install and pkg-deinstall, based on mysql and postgresql ports
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Fri, 12 Sep 2008 21:10:49 +0000 (17:10 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Fri, 12 Sep 2008 21:10:49 +0000 (17:10 -0400)
packaging/freebsd/pkg-deinstall
packaging/freebsd/pkg-install

index 84217d57d3e2c165c387c46dbdc13125e1bf6539..03db8e8a6d3c418fdcd10bf95a8ce779b64034b3 100755 (executable)
@@ -8,11 +8,17 @@
 
 # FIXME: is /var/lib/monkeysphere the right place for this stuff on
 # FreeBSD?
-VARLIB="/var/lib/monkeysphere"
+VARLIB="/var/monkeysphere"
 
 
+case $2 in
+POST-DEINSTALL)
 # FIXME: This needs to be filled in!  Under what circumstances do we
-# want to actually purge all of /var/lib/monkeysphere?
+# want to actually purge all of /var/monkeysphere?
 
 # (note: FreeBSD does not seem to want the package-specific user to be
 # purged at package removal)
+       echo "Warning: If you will *NOT* use this package anymore, please remove the monkeysphere user manually."
+       echo "         You may also want to remove the cached authentication data and keyrings in $VARLIB"
+;;
+esac
index c2af9602830ab6fa6d5ca30e38b0e365a8bf1491..dc75cf7b1ded009cc6b0859afc7cac0f13644d57 100755 (executable)
 #!/bin/sh
 
 # an installation script for monkeysphere (borrowing liberally from
-# Wnn6's port and from monkeysphere's debian/monkeysphere.postinst)
+# postgresql and mysql pkg-install scripts, and from monkeysphere's
+# debian/monkeysphere.postinst)
 
 # Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
 # Copyright 2008
 
 # FIXME: is /var/lib/monkeysphere the right place for this stuff on
 # FreeBSD?
-VARLIB="/var/lib/monkeysphere"
 
-check_pw()
-{
-    if which -s pw; then
-       :
-    else
-       cat <<EOF
+# PostgreSQL puts its data in /usr/local/pgsql/data
 
-This system looks like a pre-2.2 version of FreeBSD.  We see that it
-is missing the "pw" utility.  We need this utility.  Please get and
-install it, and try again.  You can get the source from:
+# MySQL puts its data in /var/db/mysql
 
-  ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz
+VARLIB="/var/monkeysphere"
 
+case $2 in
+POST-INSTALL)
+        USER=monkeysphere
+        GROUP=${USER}
+        UID=641
+        GID=${UID}
+
+        if pw group show "${GROUP}" 2>/dev/null; then
+                echo "You already have a group \"${GROUP}\", so I will use it."
+        else
+                if pw groupadd ${GROUP} -g ${GID}; then
+                        echo "Added group \"${GROUP}\"."
+                else
+                        echo "Adding group \"${GROUP}\" failed..."
+                        exit 1
+                fi
+        fi
+
+        if pw user show "${USER}" 2>/dev/null; then
+                echo "You already have a user \"${USER}\", so I will use it."
+        else
+                if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
+                        -d "$VARLIB" -s /sbin/sh -c "monkeysphere authentication user,,,"
+                then
+                        echo "Added user \"${USER}\"."
+                else
+                        echo "Adding user \"${USER}\" failed..."
+                        exit 1
+                fi
+        fi
+
+       ## set up the cache directories:
+
+       install --owner root --group monkeysphere --mode 750 -d "$VARLIB"/gnupg-host
+       cat <<EOF > "$VARLIB"/gnupg-host/gpg.conf
+list-options show-uid-validity
 EOF
-       exit 1
-    fi
-}
-
-ask() {
-    local question default answer
-
-    question=$1
-    default=$2
-    if [ -z "${PACKAGE_BUILDING}" ]; then
-       read -p "${question} (y/n) [${default}]? " answer
-    fi
-    if [ x${answer} = x ]; then
-       answer=${default}
-    fi
-    echo ${answer}
-}
-
-yesno() {
-    local dflt question answer
-
-    question=$1
-    dflt=$2
-    while :; do
-       answer=$(ask "${question}" "${dflt}")
-       case "${answer}" in
-       [Yy]*)          return 0;;
-       [Nn]*)          return 1;;
-       esac
-       echo "Please answer yes or no."
-    done
-}
-
-failure() {
-    local retval badgroups badusers
-    retval=$1
-    badgroups=`getent group monkeysphere 641`
-    badusers=`getent passwd monkeysphere 641`
-
-    if [ X"$badgroups" != X ]; then
-       badgroups="
-Conflicting group(s):
 
-$badgroups"
-    fi
-
-    if [ X"$badusers" != X ]; then
-       badusers="Conflicting user(s):
-
-$badusers"
-    fi
-    
-    cat <<EOF
-
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-This port or package assumes that the ID number of 'monkeysphere' will
-be 641.  But this system has:
-$badgroups
-$badusers
-
-Please correct these conflict(s) and try again.
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+       install --owner monkeysphere --group monkeysphere --mode 700 -d "$VARLIB"/gnupg-authentication
+# install authentication gpg.conf
+       cat <<EOF > "$VARLIB"/gnupg-authentication/gpg.conf
+list-options show-uid-validity
+primary-keyring $VARLIB/gnupg-authentication/pubring.gpg
+keyring $VARLIB/gnupg-host/pubring.gpg
 EOF
-    exit $retval
-}
-
-case $2 in
-POST-INSTALL)
+       chown monkeysphere:monkeysphere "$VARLIB"/gnupg-authentication/gpg.conf
 
-    # make sure that the correct user and group are present:
-    id_monkeysphere=`id -u monkeysphere 2> /dev/null`
-    gid_monkeysphere=`getent group monkeysphere | cut -f3 -d: 2> /dev/null`
-    if [ X"$id_monkeysphere" = X641 ] && [ X"$gid_monkeysphere" = X641 ];then
-       exit 0
-    else
-    # add an account 'monkeysphere' to this system
-       echo ""
-       echo "You need an account 'monkeysphere' whose ID number is 641, with group 'monkeysphere' (GID 641)"
-       if yesno "Would you like to create it automatically?" y; then
-       # We need a command 'pw(8)'
-           check_pw
-           pw groupadd monkeysphere -g 641 || failure $?
-           pw useradd monkeysphere -u 641 -g 641 -h - -d "$VARLIB" \
-               -s /bin/sh -c 'monkeysphere authentication user,,,' || failure $?
-       # FIXME: should we really be using a real shell?  Convention
-       # (/usr/ports/UIDs) seems to indicate /nonexistent is
-       # preferred
-       else
-           echo "Please create it, and try again."
-           exit 1
-       fi
-    fi
-    # FIXME: we should create $VARLIB and chown the relevant subdirs
-    # (see debian/monkeysphere.postinst)
-    
-    ;;
+        ;;
 esac