Package: geneweb
Version: 5.02~cvs20091031-3
Severity: serious
Tags: patch
Justification: broken upgrades from earlier versions
If one of the databases in /var/lib/geneweb has spaces in its name,
the package's postinst script will fail.
The attached postinst file fixes that problem. Until I update packages
in lenny, users affectedd by this bug can just replace
/var/lib/dpkg/info/geneweb.postinst by it and run dpkg-reconfigure to
complete the installation.
This bug was fixed in 5.02~cvs20091031-4. I open it lately so that
there is a reference to it in the BTS. I will try to upload a fixed
package to stable-proposed-updates in order to fix lenny.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.30-2-686 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages geneweb depends on:
ii adduser 3.111 add and remove users and groups
ii cdebconf [debconf-2.0] 0.145 Debian Configuration Management Sy
ii debconf [debconf-2.0] 1.5.28 Debian configuration management sy
ii iso-codes 3.12-1 ISO language, territory, currency,
ii isoquery 0.18-1 Search and display various ISO cod
ii libc6 2.10.2-2 GNU C Library: Shared libraries
ii lsb-base 3.2-23 Linux Standard Base 3.2 init scrip
ii perl-base [perl5-base] 5.10.1-8 minimal Perl system
geneweb recommends no packages.
Versions of packages geneweb suggests:
pn gwsetup <none> (no description available)
pn gwtp <none> (no description available)
ii iceweasel [www-browser] 3.5.6-1 lightweight web browser based on M
ii konqueror [www-browser] 4:4.3.4-1 KDE 4's advanced file manager, web
ii lynx 2.8.8dev.2-1 Text-mode WWW Browser (transitiona
ii lynx-cur [www-browser] 2.8.8dev.2-1 Text-mode WWW Browser with NLS sup
ii menu 2.1.42 generates programs menu for all me
ii w3m [www-browser] 0.5.2-2.1 WWW browsable pager with excellent
-- debconf information excluded
#! /bin/sh
# postinst script for GeneWeb
#
# see: dh_installdeb(1)
set -e
# Needs Depends: iso-codes, isoquery
ISOQUERY=/usr/bin/isoquery
# These will be used here and there below
SERVICES=/etc/services
OLDRCFILE=/etc/geneweb/genewebrc
NEWRCFILE=/etc/default/geneweb
INITFILE=/etc/init.d/geneweb
GENEWEBUSER=geneweb
# We we'll need some variables defined there
# We first define some defaults values...just in case
GENEWEBDB=/var/lib/geneweb
USERS_GROUP=geneweb
LOGFILE=/var/log/geneweb.log
# Default settings
DEFAULTLNG="en"
DEFAULTFULLLNG="English"
DEFAULTPORT=2317
DEFAULTRUNMODE="Always on"
DEFAULTREMOVE=false
DEFAULTOPTIONS=""
# Reads config file (will override defaults above)
[ -r $NEWRCFILE ] && . $NEWRCFILE
. /usr/share/debconf/confmodule
db_version 2.0
write_rcfile() {
cat >$NEWRCFILE <<EOF
#
# GeneWeb Configuration Data
#
# This file may be changed manually, or by running "dpkg-reconfigure geneweb"
# The port which the daemon listens to
PORT="${PORT}"
# The default language
# Look at Geneweb documentation for valid values
# Versions prior to 4.10-9 used LANG which could mix up with
# the system's localisation settings
LNG="${LNG}"
# The run mode
# Two possible values: "Always on" or "Manual"
# You need to use quotes
RUN_MODE="${RUN_MODE}"
# Additionnal options for gwd
# Example: OPTIONS="-a 192.168.1.1" for binding the daemon to a given address
# This setting is not handled by debconf
OPTIONS="${OPTIONS}"
EOF
}
get_debconf() {
db_get geneweb/port
PORT=$RET
# If not present, use default
if [ "$PORT" = "" ]
then
PORT=$DEFAULTPORT
fi
db_get geneweb/lang
FULLLNG=$RET
# If not present, use default
if [ "$FULLLNG" = "" ]
then
FULLLNG=$DEFAULTFULLLNG
fi
# Find the two letter code for language
# LNG=`echo $FULLLNG | cut -f 2 -d "(" | cut -f 1 -d ")"`
LNG=`$ISOQUERY --iso=639 | grep "${FULLLNG}\$" | cut -f3`
db_get geneweb/run_mode
RUN_MODE="$RET"
# If not present, use default
if [ "$RUN_MODE" = "" ]
then
RUN_MODE="$DEFAULTRUNMODE"
fi
}
case "$1" in
configure)
# NEWRCFILE has to be world-readable if we want the entry menu to work
[ -f $NEWRCFILE ] && chmod g+r,a+r $NEWRCFILE
[ -f $INITFILE ] && chmod a+rx $INITFILE
if [ -d "/usr/share/doc/geneweb/$LNG" ]; then
ln -sf /usr/share/doc/geneweb/$LNG /usr/share/doc/geneweb/doc_choice
else
ln -sf /usr/share/doc/geneweb/en /usr/share/doc/geneweb/doc_choice
fi
if [ ! -x `which addgroup` ]; then
echo "addgroup(8) from the \'adduser\' package is needed...";
exit 1;
fi
# Make sure user group is available
if ! getent group ${USERS_GROUP} >/dev/null
then
echo "Adding $USERS_GROUP group ... "
addgroup --quiet --force-badname $USERS_GROUP
fi
if [ ! -x `which adduser` ]; then
echo "adduser(8) from the \'adduser\' package is needed...";
exit 1;
fi
# Make sure geneweb user exists
if ! getent passwd ${GENEWEBUSER} >/dev/null
then
echo "Adding $GENEWEBUSER user ... "
adduser --quiet --system --home /var/lib/geneweb --no-create-home --ingroup $USERS_GROUP $GENEWEBUSER
fi
# Permissions and groups changes come back
# to the configure stage again.
# Problems may remains if users previously messed up
# the permissions...but more huge problems will
# occur if this stage occurs _before_ the geneweb
# group creation (was bug 171570 on 4.07-3 release)
if [ ! -f $LOGFILE ]
then
touch $LOGFILE
fi
# Thus all files created there will have geneweb as group
chown root:$USERS_GROUP $GENEWEBDB $GENEWEBDB/images $GENEWEBDB/cnt $GENEWEBDB/etc
# The database directory is writable by geneweb group
chmod ug+rwx,o-rwx $GENEWEBDB $GENEWEBDB/images $GENEWEBDB/cnt $GENEWEBDB/etc
# SetGID bit on the database directory owned by geneweb group
chmod g+s $GENEWEBDB $GENEWEBDB/images $GENEWEBDB/cnt $GENEWEBDB/etc
# The log file is written by gwd running as the geneweb user
# Make it readable/writable by this user only
chown $GENEWEBUSER:$USERS_GROUP $LOGFILE
chmod 600 $LOGFILE
# Fix incorrect database and images directories permissions
# These directories have to be group-writable
# as the daemon now runs with an unprivileged UID
#
# Thanks to Russell Sutherland for pointing this to me
# Bug: 179918
#
# Deal properly with database names that contain spaces
OLDIFS=${IFS}
IFS='
'
for base in `find $GENEWEBDB -type d -name \*.gwb`
do
chgrp $USERS_GROUP "$base"
chmod g+w,g+s "$base"
# Fix files permissions. See #219779
for file in `find $base -type f`
do
chgrp $USERS_GROUP "$file"
chmod g+w "$file"
done
done
for imagedir in `find $GENEWEBDB/images -type d`
do
chgrp $USERS_GROUP "$imagedir"
chmod g+w,g+s "$imagedir"
done
IFS=${OLDIFS}
# Values are read from debconf
# to update variables
get_debconf
# The settings file is written
# Moved to postinst
write_rcfile
;;
*)
;;
esac
# Transition of init scripts links: we don't want them in runlevels
# 0 and 6 anymore
if dpkg --compare-versions "$2" lt "5.01-4"; then
update-rc.d -f geneweb remove
fi
# Automatically added by dh_installmenu
if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then
update-menus
fi
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/geneweb" ]; then
update-rc.d geneweb start 20 2 3 4 5 . stop 20 1 . >/dev/null
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d geneweb start || exit $?
else
/etc/init.d/geneweb start || exit $?
fi
fi
# End automatically added section