Hi Andreas

(Cc'in Gregor and Luk who did the last two upload NMU, maybe they have
an idea how to solve this)

It seems that this is due the packaging shipping conffile
/etc/phpgacl/gacl.ini.php:

----cut---------cut---------cut---------cut---------cut---------cut-----

        # configuration
        install -d $(CURDIR)/debian/phpgacl/etc/phpgacl/
        install -m 640 -o root -g www-data $(CURDIR)/gacl.ini.php \             
                                                                                
                    
                $(CURDIR)/debian/phpgacl/etc/phpgacl/
        ln -sf /etc/phpgacl/gacl.ini.php \
                $(CURDIR)/debian/phpgacl/usr/share/phpgacl/

----cut---------cut---------cut---------cut---------cut---------cut-----

... in debian/rules.

But it modifies with maintainer scripts (postinst):

----cut---------cut---------cut---------cut---------cut---------cut-----
case "$1" in
    configure)

        . /etc/dbconfig-common/phpgacl.conf

        if [ "$dbc_install" = "true" ]; then
            
            TMPFILE=`tempfile -p gacl.`
            trap " [ -f \"$TMPFILE\" ] && rm -f -- \"$TMPFILE\"" 1 2 3 13 15

            cp $CONF $TMPFILE

            # default to 'localhost' if a server isn't specified
            if [ -z $dbc_dbserver ] ; then
                dbc_dbserver="localhost"
            fi

            # adodb uses 'postgres' name instead of 'pgsql'
            if [ "$dbc_dbtype" = "pgsql" ]; then
                dbc_dbtype="postgres"
            fi

            cat $CONF | \
                sed -e "s/^db_type.*/db_type = \"$dbc_dbtype\"/" |\
                sed -e "s/^db_name.*/db_name = \"$dbc_dbname\"/" |\
                sed -e "s/^db_host.*/db_host = \"$dbc_dbserver\"/" |\
                sed -e "s/^db_user.*/db_user = \"$dbc_dbuser\"/" |\
                sed -e "s/^db_password.*/db_password = \"$dbc_dbpass\"/" \
                > $TMPFILE

            mv $TMPFILE $CONF

        fi
[...]
----cut---------cut---------cut---------cut---------cut---------cut-----

(however only if "$dbc_install" = "true").

Now phpgacl install a new version of the conffile, but it was
previously modified by the postinst script of the previous package and
dpkg promts.

In case I'm correct the problem is that the package shipped initially
the conffile but modifies it in postinst. Debian policy warns
explicitly about this approach in "E.1 Automatic handling of
configuration files by dpkg":

Note that a package should not modify a dpkg-handled conffile in its
maintainer scripts. Doing this will lead to dpkg giving the user
confusing and possibly dangerous options for conffile update when the
package is upgraded.
 
 [1]: http://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html#sE.1

Regards,
Salvatore

Attachment: signature.asc
Description: Digital signature

Reply via email to