Your message dated Mon, 24 Jul 2006 15:32:13 -0700
with message-id <[EMAIL PROTECTED]>
and subject line Bug#231470: fixed in debian-goodies 0.24
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: apt
Version: 0.6.18
Severity: wishlist
Tags: patch

I have frequently been in a situation where a program I use suddenly
breaks after an apt-get upgrade, but I'm not sure why.  Was it a new
version of the package?  Perhaps I don't recall what version I was
using before the breakage, or when I might have upgraded.  Was it some
package that the program I'm using depends on?  Maybe, but I'm not
really sure of EVERYTHING the package in question (recursively)
depends on or when I upgraded.

So I wrote a short python script to help with this problem.  The
script prints out a list of the named package and all its dependencies
sorted by the time they were installed on the system (as determined
from /var/lib/dpkg/info/*.list mtime).  This gives me information to
help correlate my apt-get runs with observed package breakage to try
to find the culprit.

For example, if aptitude stops working properly,

serrano> ~/what-broke aptitude
Package <libapt-pkg-libc6.3-5-3.3> has no install time info
libdb1-compat                                          Fri Aug  8 03:02:11 2003
libsigc++-1.2-5c102                                    Fri Aug  8 05:15:58 2003
aptitude                                               Sun Jan 11 17:38:06 2004
libncurses5                                            Sun Jan 18 08:11:05 2004
libc6                                                  Thu Jan 22 07:55:10 2004
libgcc1                                                Tue Jan 27 07:37:22 2004
gcc-3.3-base                                           Tue Jan 27 07:37:31 2004
libstdc++5                                             Tue Jan 27 07:37:32 2004

So depending on exactly when I started seeing the misbehavior, there
may be a reason to point the finger at a more-recently updated library
like libstdc++ or libncurses, which are more-recently installed than
aptitude itself.

I have put this script in the public domain and I am including it with
this bug report in case it might by useful in a future version of apt.
I guess it would have to be recoded in C/C++ to be part of apt so I
don't expect that it will be used as-is, but I thought it might be
nice as a concrete example of what I'm talking about.

Script pasted below.  Enjoy!

#! /usr/bin/python
#  what-broke: help find offending packages when something breaks
#  Placed in the public domain by Bill Gribble <[EMAIL PROTECTED]>

import sys
import os
import popen2
import time 
from string import *
from stat import *

def pkgdeps(pkg):
    outstr, instr = popen2.popen4("apt-cache depends %s" % pkg)
    deps = [] 
    myline = outstr.readline()
    while(myline != ''):
        elts = map(strip, myline.split(':'))
        if len(elts) == 2:
            how, pkg = elts
            if how == 'Depends':
                deps.append(pkg)
        myline = outstr.readline()
    return deps

def alldeps(pkg, ignore):
    deps = {}
    imm_deps = pkgdeps(pkg)
    for i in imm_deps:
        if ignore.get(i) is None:
            deps[i] = 1
            ignore[i] = 1
            childeps = alldeps(i, ignore)
            for c in childeps:
                deps[c] = 1
                ignore[i] = 1

    dlist = deps.keys()
    return dlist
    
def pkginstalltime(pkg):
    listfile = '/var/lib/dpkg/info/' + pkg + '.list'
    try:
        return os.stat(listfile)[ST_MTIME]
    except:
        print "Package", pkg, "has no install time info"
        return None
    
def what_broke(pname):
    def sortfun(a, b):
        return cmp(a[1], b[1])
    
    pkgs = [ pname ]
    pkgs.extend(alldeps(sys.argv[1], {}))

    itimes = [] 
    for p in pkgs:
        itimes.append([p, pkginstalltime(p)])
    itimes.sort(sortfun)
    for i in itimes:
        p, t = i
        if t is not None:
            print ljust(p, 54), time.asctime(time.localtime(float(t)))

if (len(sys.argv) != 2 or sys.argv[1][0] == '-'):
    print "Usage: what-broke <pkg-name>"
    sys.exit(-1)
else:
    what_broke(sys.argv[1])
    sys.exit(0)



-- Package-specific info:

-- (/etc/apt/preferences present, but not submitted) --


-- (/etc/apt/sources.list present, but not submitted) --


-- System Information:
Debian Release: testing/unstable
  APT prefers experimental
  APT policy: (900, 'experimental'), (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.1
Locale: LANG=C, LC_CTYPE=C

Versions of packages apt depends on:
ii  libc6                      2.3.2.ds1-11  GNU C Library: Shared libraries an
ii  libgcc1                    1:3.3.3-0pre3 GCC support library
ii  libstdc++5                 1:3.3.3-0pre3 The GNU Standard C++ Library v3

-- no debconf information



--- End Message ---
--- Begin Message ---
Source: debian-goodies
Source-Version: 0.24

We believe that the bug you reported is fixed in the latest version of
debian-goodies, which is due to be installed in the Debian FTP archive:

debian-goodies_0.24.dsc
  to pool/main/d/debian-goodies/debian-goodies_0.24.dsc
debian-goodies_0.24.tar.gz
  to pool/main/d/debian-goodies/debian-goodies_0.24.tar.gz
debian-goodies_0.24_all.deb
  to pool/main/d/debian-goodies/debian-goodies_0.24_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [EMAIL PROTECTED],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Javier Fernandez-Sanguino Pen~a <[EMAIL PROTECTED]> (supplier of updated 
debian-goodies package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [EMAIL PROTECTED])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Sun, 23 Jul 2006 21:42:54 +0200
Source: debian-goodies
Binary: debian-goodies
Architecture: source all
Version: 0.24
Distribution: unstable
Urgency: low
Maintainer: Javier Fernandez-Sanguino Pen~a <[EMAIL PROTECTED]>
Changed-By: Javier Fernandez-Sanguino Pen~a <[EMAIL PROTECTED]>
Description: 
 debian-goodies - Small toolbox-style utilities for Debian systems
Closes: 224857 231470 249818 251353 263471 283401 292585 307694 329723 368227 
369494 369762
Changes: 
 debian-goodies (0.24) unstable; urgency=low
 .
   * Taking up this package as new maintainer, after talking with Matt
     on private mail.
   * Fix Frank Lichtenheld's mail in all manpages (Closes: #249818)
   * Changes to debget:
     - debget --help (or -h) now works as expected. Introduce usage
       in the tool to warn on errors when calling it (Closes: #251353)
     - Any other options are rejected (as they would be passed on to apt)
     - Additional error checking in debget to prevent it from going ahead
       when something goes wrong, this includes checking first if the
       apt-get dependencies are right and that the package the user asked
       us to retrieve exists (Closes: #283401)
     - Use apt-cache instead of apt-get to get the version as
       'apt-get -q2 -s --reinstall install' requires, for some reason,
       super cower powers. This makes it possible to download packages
       without satisfying dependencies (Closes: #369494)
     - Document the fact that downloading packages from the package cache
       is not supported both in the manpage and in the program's output
       (Closes: #224857)
   * Fix manpage dglob typos as well as the header of the documentation
     generated by pod2man (Closes #228302, #305802)
   * Have debman use bash as a shell (Closes: #369762)
   * Set LC_NUMERIC to 'C' in dpigs as suggested by Bill Allombert (Closes:
     #368227)
   * Move checkrestart to /usr/sbin (Closes: #329723)
   * Have dglob exit with a '1' exit status if no packages match the globbing
     pattern (Closes: #292585)
   * Make popbugs properly extract the file provided by the user instead of
     /var/log/popularity-contest, if requested to (Closes: #263471)
   * Fix typo in popbugs.1 manpage (AUTOR -> AUTHOR)
   * Include which-pkg-broke Python script contributed by Bill Gribble and
     wrote its associated manpage (Closes: #231470)
   * Include network-test shell script contributed by myself and
     wrote its associated manpage (Closes: #307694)
   * Use debhelper compatibility version 4
Files: 
 31a5dbae1f0210ed4dfc3abc1f1a8fe7 650 utils optional debian-goodies_0.24.dsc
 a1446610e694653c43be714591ae7fdf 23447 utils optional 
debian-goodies_0.24.tar.gz
 6bdf1d7a421505c434458a11cc226325 30696 utils optional 
debian-goodies_0.24_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iQCVAwUBRMVIIvtEPvakNq0lAQJtBgP9GntORq/cJklOP5GnXnyhAVQsBeMxykCG
6aiGIAnHDrIByVHG48OqltL207bwM+o40Ndll9tmlVL875kKiJdqIAbgplo8WzUE
BG+TVafWj1d2JR9+/YjBwMgF2zJJ6AdbbPP71IUnmrcP0AmCamKMQjdpQ2cbiDZf
tuIJljN8t8E=
=xZ0T
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to