[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#208532: dpkg: dpkg --forget-old-unavail does not work at all



On Wed, Sep 03, 2003 at 02:17:40PM +0200, Martin Haefele wrote:
> Package: dpkg
> Version: 1.10.10
> Severity: normal
> 
> Example (note that the status is: purge ok not-installed)
> hawk:[root]> dpkg -l kernel-image\*
[...]
> un  kernel-image                        <none>      (no description ...
[...]
> hawk:[root]> dpkg --forget-old-unavail
> hawk:[root]> dpkg -l kernel-image\*
[...]
> un  kernel-image                        <none>      (no description ...
[...]
> So NONE of the old kernel images have been removed from the database.

This has been annoying me as well. Running with debugging turned on, I
see this for each package that should be removed:

  D000010: forgetold checking kernel-image-2.6.9-bk1
  D000010: forgetold ... informative installed

After some investigation, I noticed that the Architecture: field for
this purged package is still in /var/lib/dpkg/status. Removing that
causes --forget-old-unavail to forget about the package.

I suggest zeroing pkg->installed.architecture in the want_purge case
near the end of main/remove.c:removal_bulk(). I think it might also be
necessary to zero pkg->installed.origin and pkg->installed.bugs too,
although this only matters for packages that have the Origin: or Bugs:
field in the actual .deb rather than merely in the Packages file.


Of course, many of the "un" entries listed by Martin are there because
they're still mentioned in a dependency field, not because
--forget-old-unavail is buggy. There's nothing much to be done about
this.

Cheers,

-- 
Colin Watson                                       [cjwatson@debian.org]



Reply to: