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: