[pkg-ggz-maintainers] Bug#473350: Reproducible

Neil Williams codehelp at debian.org
Thu Aug 28 17:26:50 UTC 2008


(I'm also looking at #490420 for a single upload to close all RC bugs
for this source package.)

Steps to reproduce (and tentative fix)

$ sudo rm -rf /var/lib/ggzd/ggzdb.ver
$ sudo apt-get install ggzd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libggzdmod6
Suggested packages:
  ggz-game-servers
The following NEW packages will be installed
  ggzd libggzdmod6
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/575kB of archives.
After this operation, 897kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Selecting previously deselected package libggzdmod6.
(Reading database ... 219007 files and directories currently installed.)
Unpacking libggzdmod6 (from .../libggzdmod6_0.0.14.1-1_amd64.deb) ...
Selecting previously deselected package ggzd.
Unpacking ggzd (from .../ggzd_0.0.14.1-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libggzdmod6 (0.0.14.1-1) ...
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd
(<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
                                                          [ ok ]
neil at holly:ggz-server-0.0.14.1$

So without /var/lib/ggzd/ggzdb.ver, the install succeeds and the server
starts, albeit with a warning about a missing configuration file that
was removed to fix a different bug (according to the changelog). See
#454683.

Restart test:

$ sudo apt-get --purge remove ggzd libggzdmod6

Create a copy of the file that existed according to the bug reports:

$ sudo mkdir -p /var/lib/ggzd
$ sudo su -c "echo 0.7 > /var/lib/ggzd/ggzdb.ver"
$ $ sudo apt-get install ggzd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libggzdmod6
Suggested packages:
  ggz-game-servers
The following NEW packages will be installed
  ggzd libggzdmod6
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/575kB of archives.
After this operation, 897kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Selecting previously deselected package libggzdmod6.
(Reading database ... 219007 files and directories currently installed.)
Unpacking libggzdmod6 (from .../libggzdmod6_0.0.14.1-1_amd64.deb) ...
Selecting previously deselected package ggzd.
Unpacking ggzd (from .../ggzd_0.0.14.1-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libggzdmod6 (0.0.14.1-1) ...
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd
<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
/var/lib/ggzd/__db.001: Permission denied
(<errorsys>) db_e->open() failed in _ggzdb_init(/var/lib/ggzd): Permission denied
(<errormsgexit>) *** Database initialization failed
/etc/init.d/ggzd: line 21: 20038 Aborted                 start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --chuid games --startas $DAEMON
                                                                         [fail]
invoke-rc.d: initscript ggzd, action "start" failed.
dpkg: error processing ggzd (--configure):
 subprocess post-installation script returned error exit status 134
Errors were encountered while processing:
 ggzd
E: Sub-process /usr/bin/dpkg returned an error code (1)

Try just an empty file (which is what is installed after ggzd installs
successfully):

$ sudo su -c "echo  > /var/lib/ggzd/ggzdb.ver"
$ sudo dpkg --configure -a
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd                                                                                                                    (<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
Bad db version id, remove or convert db files.
Most likely this means you must upgrade your
database.  It may be possible to automate this;
see http://ggzgamingzone.org.
                                                                                                                                        [fail]
invoke-rc.d: initscript ggzd, action "start" failed.
dpkg: error processing ggzd (--configure):
 subprocess post-installation script returned error exit status 255
Errors were encountered while processing:
 ggzd

So you only get the warning IF the file is empty but you get a fail if
the file exists at all.

Removing the file or the directory *after* the failure doesn't fix the
install - the package needs to be removed, the file removed and then the
package reinstalled.

$ sudo apt-get --purge remove ggzd libggzdmod6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED
  ggzd* libggzdmod6*
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 897kB disk space will be freed.
Do you want to continue [Y/n]? 
(Reading database ... 219037 files and directories currently installed.)
Removing ggzd ...
 * Stopping GGZ server ggzd
[ ok ] 
Purging configuration files for ggzd ...
Removing libggzdmod6 ...
Purging configuration files for libggzdmod6 ...
Processing triggers for man-db ...

$ ls /var/lib/gg*
ls: cannot access /var/lib/gg*: No such file or directory

$ sudo apt-get install ggzd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libggzdmod6
Suggested packages:
  ggz-game-servers
The following NEW packages will be installed
  ggzd libggzdmod6
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/575kB of archives.
After this operation, 897kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Selecting previously deselected package libggzdmod6.
(Reading database ... 219007 files and directories currently installed.)
Unpacking libggzdmod6 (from .../libggzdmod6_0.0.14.1-1_amd64.deb) ...
Selecting previously deselected package ggzd.
Unpacking ggzd (from .../ggzd_0.0.14.1-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libggzdmod6 (0.0.14.1-1) ...
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd
(<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
                                                        [ ok ]

It would seem appropriate to 'rm -rf /var/lib/ggzd/ggzdb.ver' in a
preinst script but that doesn't fix the install either.

However, now I have a different problem.

I can install the packages from /var/cache/apt/archives but I cannot
install the packages that I have just built - either before or after the
preinst was added.

$ sudo dpkg -i ../libggzdmod6_0.0.14.1-1_amd64.deb ../ggzd_0.0.14.1-1_amd64.deb
....
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd                                                                                                                    (<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
/etc/init.d/ggzd: line 21: 22386 Segmentation fault      start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --chuid games --startas $DAEMON
                                                                                                                                        [fail]
invoke-rc.d: initscript ggzd, action "start" failed.
dpkg: error processing ggzd (--install):
 subprocess post-installation script returned error exit status 139
Processing triggers for man-db ...
Errors were encountered while processing:
 ggzd

$ sudo apt-get -y --purge remove ggzd libggzdmod6
$ sudo dpkg -i /var/cache/apt/archives/ggzd_0.0.14.1-1_amd64.deb /var/cache/apt/archives/libggzdmod6_0.0.14.1-1_amd64.deb 
Selecting previously deselected package ggzd.
(Reading database ... 219007 files and directories currently installed.)
Unpacking ggzd (from .../ggzd_0.0.14.1-1_amd64.deb) ...
Selecting previously deselected package libggzdmod6.
Unpacking libggzdmod6 (from .../libggzdmod6_0.0.14.1-1_amd64.deb) ...
Setting up libggzdmod6 (0.0.14.1-1) ...
Setting up ggzd (0.0.14.1-1) ...
 * Starting GGZ server ggzd                                                                                                                    (<errorsys>) Unable to read file /etc/ggzd/ggzd.conf: No such file or directory
(<errormsg>) WARNING:  No configuration file loaded!
                                                                                                                                        [ ok ]
Processing triggers for man-db ...

Hmmmm.

$ sudo apt-get -y --purge remove ggzd libggzdmod6
$ ls /var/lib/gg*
ls: cannot access /var/lib/gg*: No such file or directory

There appears to be more going on here than just /var/lib/ggzd/ggzdb.ver

$ debdiff /var/cache/apt/archives/ggzd_0.0.14.1-1_amd64.deb ../ggzd_0.0.14.1-1_amd64.deb
File lists identical (after any substitutions)

Control files: lines which differ (wdiff format)
------------------------------------------------
Depends: libavahi-client3 (>= [-0.6.13),-] {+0.6.16),+} libavahi-common3
(>= [-0.6.10),-] {+0.6.16),+} libc6 (>= 2.7-1), [-libdb4.6,-] {+libdb4.3
(>= 4.3.28-1),+} libexpat1 (>= 1.95.8), libggz2 (>= 0.0.14.1),
libggzdmod6 (>= 0.0.14.1)

libdb4.6 vs libdb4.3 - Hmmm.

$ debdiff /var/cache/apt/archives/ggzd_0.0.14.1-1_amd64.deb /opt/debian/pbuilder/result/ggzd_0.0.14.1-1.1_amd64.deb 
[The following lists of changes regard files as different if they have
different names, permissions or owners.]

Files in second .deb but not in first
-------------------------------------
-rwxr-xr-x  root/root   DEBIAN/preinst

Control files: lines which differ (wdiff format)
------------------------------------------------
Depends: libavahi-client3 (>= [-0.6.13),-] {+0.6.16),+} libavahi-common3 (>= [-0.6.10),-]
 {+0.6.16),+} libc6 (>= 2.7-1), [-libdb4.6,-] {+libdb4.4,+} libexpat1 (>= 1.95.8), 
libggz2 (>= 0.0.14.1), libggzdmod6 (>= 0.0.14.1)
Installed-Size: [-552-] {+556+}
Version: [-0.0.14.1-1-] {+0.0.14.1-1.1+}


Rebuilding with pbuilder *without* the preinst script does not change
anything.

This is looking like a problem in libdb-dev or how ggzd tries to use it.
(It also makes it look like either ggzd or libdb-dev are not bin-NMU
safe.)

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : http://lists.alioth.debian.org/pipermail/pkg-ggz-maintainers/attachments/20080828/8f1cf129/attachment.pgp 


More information about the pkg-ggz-maintainers mailing list