Bug#676496: dpkg: premature removal of "Multi-arch:" leads to all dpkg commands failing

June 07th, 2012 - 06:50 am ET by Adam Borowski | Report spam
Package: dpkg
Version: 1.16.3
Severity: grave
Justification: renders package unusable

After an interrupted dpkg run, any subsequent invocation fails with:

dpkg: error: libc6-dev:armel <none> (Multi-Arch: no) is not co-installable
with libc6-dev which has multiple installed instances

This affects not only -i, --purge, --unpack but even -l or dpkg-query.

The last two relevant entries of dpkg/updates (there's over a hundred
entries after that, none mentioning libc6-dev) are:
,--=[ /var/lib/dpkg/updates/0005
Package: libc6-dev
Status: purge ok config-files
Priority: optional
Section: libdevel
Installed-Size: 8531
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Architecture: armel
Multi-Arch: same
Source: eglibc
Version: 2.13-33
Provides: libc-dev
Depends: libc6 (= 2.13-33), libc-dev-bin (= 2.13-33), linux-libc-dev
Recommends: gcc | c-compiler
Suggests: glibc-doc, manpages-dev
Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<< 4.6.0-12), libhwloc-dev (<< 1.2-3), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), make (<< 3.81-8.1), pkg-config (<< 0.26-1)
Conflicts: libc0.1-dev, libc0.3-dev, libc6.1-dev
Description: Embedded GNU C Library: Development Libraries and Header Files
Contains the symlinks, headers, and object files needed to compile
and link programs which use the standard C library.
Homepage: http://www.eglibc.org
`-

,--=[ /var/lib/dpkg/updates/0006
Package: libc6-dev
Status: unknown ok not-installed
Priority: optional
Section: libdevel
Architecture: armel
`-

/var/lib/dpkg/status includes:
,-
Package: libc6-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 10558
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Architecture: amd64
Multi-Arch: same
Source: eglibc
Version: 2.13-33
Provides: libc-dev
Depends: libc6 (= 2.13-33), libc-dev-bin (= 2.13-33), linux-libc-dev
Recommends: gcc | c-compiler
Suggests: glibc-doc, manpages-dev
Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<<
2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<<
4.6.0-12), libhwloc-dev (<< 1.2-3), libjna-java (<< 3.2.7-4), liblouis-dev
(<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), make (<< 3.81-8.1), pkg-config
(<< 0.26-1)
Conflicts: libc0.1-dev, libc0.3-dev, libc6.1-dev
Description: Embedded GNU C Library: Development Libraries and Header Files
Contains the symlinks, headers, and object files needed to compile
and link programs which use the standard C library.
Homepage: http://www.eglibc.org

Package: libc6-dev
Status: deinstall ok installed
Priority: optional
Section: libdevel
Installed-Size: 8531
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Architecture: armel
Multi-Arch: same
Source: eglibc
Version: 2.13-33
Provides: libc-dev
Depends: libc6 (= 2.13-33), libc-dev-bin (= 2.13-33), linux-libc-dev
Recommends: gcc | c-compiler
Suggests: glibc-doc, manpages-dev
Breaks: binutils (<< 2.20.1-1), binutils-gold (<< 2.20.1-11), cmake (<<
2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<<
4.6.0-12), libhwloc-dev (<< 1.2-3), libjna-java (<< 3.2.7-4), liblouis-dev
(<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), make (<< 3.81-8.1), pkg-config
(<< 0.26-1)
Conflicts: libc0.1-dev, libc0.3-dev, libc6.1-dev
Description: Embedded GNU C Library: Development Libraries and Header Files
Contains the symlinks, headers, and object files needed to compile
and link programs which use the standard C library.
Homepage: http://www.eglibc.org
`-

After manually appending "Multi-Arch: same" to the file in dpkg/updates (for
libc6-dev:armel and for another package from the same run), dpkg let me proceed.
This suggests a fix: don't remove the field until possibly some time later.

(I have a btrfs snapshot of the system, in case more information is needed.)


Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (150, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
armel

Kernel: Linux 3.3.0-trunk-amd64 (SMP w/6 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash



To UNSUBSCRIBE, email to debian-bugs-dist-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
email Follow the discussionReplies 1 replyReplies Make a reply

Similar topics

Replies

#1 Guillem Jover
June 07th, 2012 - 12:40 pm ET | Report spam
Hi!

On Thu, 2012-06-07 at 12:40:59 +0200, Adam Borowski wrote:
Package: dpkg
Version: 1.16.3
Severity: grave
Justification: renders package unusable

After an interrupted dpkg run, any subsequent invocation fails with:

dpkg: error: libc6-dev:armel <none> (Multi-Arch: no) is not co-installable
with libc6-dev which has multiple installed instances

This affects not only -i, --purge, --unpack but even -l or dpkg-query.

The last two relevant entries of dpkg/updates (there's over a hundred
entries after that, none mentioning libc6-dev) are:

,--=[ /var/lib/dpkg/updates/0006
Package: libc6-dev
Status: unknown ok not-installed
Priority: optional
Section: libdevel
Architecture: armel
`-

After manually appending "Multi-Arch: same" to the file in dpkg/updates (for
libc6-dev:armel and for another package from the same run), dpkg let me proceed.
This suggests a fix: don't remove the field until possibly some time later.



Hrm, I thought I had handled that case in the code correctly, but
apparently not. :/ It's really a problem that the update log is only
ever used on some interrupted runs, as that makes reliably testing it
quite difficult, I should add a way to test it in the future.

(I have a btrfs snapshot of the system, in case more information is needed.)



No need, and thanks for the report, will be fixed in 1.16.4, being
finished right now.

thanks,
guillem



To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
email Follow the discussion Replies Reply to this message
Help Create a new topicReplies Make a reply
Search Make your own search