Hi!

On Thu, 2014-08-21 at 11:18:46 +0200, Andreas Cadhalpun wrote:
> Package: dpkg
> Version: 1.17.13
> Severity: serious
> Justification: makes packages uninstallable/unremovable
> Affects: autoconf-archive

> the changelog for 1.17.13 contains:
>  * Fix dpkg-maintscript-helper symlink_to_dir to assure absolute
>    pathnames arguments.
> 
> The problem is that now the following happens, if one tries to install
> autoconf-archive:
> 
> # dpkg -i autoconf-archive_20140228-1_all.deb
> Selecting previously unselected package autoconf-archive.
> (Reading database ... 11973 files and directories currently installed.)
> Preparing to unpack autoconf-archive_20140228-1_all.deb ...
> dpkg-maintscript-helper: error: original symlink target is not an absolute
> path
> dpkg: error processing archive autoconf-archive_20140228-1_all.deb
> (--install):
>  subprocess new pre-installation script returned error exit status 1
> dpkg-maintscript-helper: error: original symlink target is not an absolute
> path
> dpkg: error while cleaning up:
>  subprocess new post-removal script returned error exit status 1
> Errors were encountered while processing:
>  autoconf-archive_20140228-1_all.deb
> 
> It can't even be removed with normal means:
> 
> # dpkg --purge autoconf-archive
> dpkg: error processing package autoconf-archive (--purge):
>  package is in a very bad inconsistent state; you should
>  reinstall it before attempting a removal
> Errors were encountered while processing:
>  autoconf-archive

When a package contains a broken maintainer script, the way to allow
again its removal is to reinstall a fixed version, as hinted in the
error message, which in this case would need to be created and
uploaded, but all the same.

> One has to force the removal:
> 
> # dpkg --purge --force-remove-reinstreq autoconf-archive
> dpkg: warning: overriding problem because --force enabled:
> dpkg: warning: package is in a very bad inconsistent state; you should
>  reinstall it before attempting a removal
> (Reading database ... 11973 files and directories currently installed.)
> Removing autoconf-archive (20140228-1) ...
> 
> I'm not sure why dpkg-maintscript-helper was changed to fail when a
> non-absolute symlink was used, but this change should not make it into
> testing, unless all packages doing so have been fixed.

This and any other such package (although we did a quick check over
codesearch.d.o, but I guess missed this one due to the line breaks)
were broken already, and not performing the symlink to dir switch
anyway because the code is checking if the parameter matches the
canonicalized form («readlink -f»), which it will not.

This can make dpkg lose track, remove or overwrite unintended file,
as they might end up installed in a (real) path that does not match
with the one listed in the package metadata.

I think that for this reason dpkg needs to make those break explicitly,
and that having such version in testing is more valuable than trying to
avoid those packages to explicitly break, instead of allowing the
possibly silent breakage.

I'm thus probably just going to either close or reassign this bug
report to the affected package(s).

Thanks,
Guillem


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to