Multiarch: dpkg gets confused when installing new packages with the same version
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
dpkg (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
I often install test-build packages locally before uploading to the archive. Then, once they're built in the archive, these packages get replaced by the archive versions. This seems to confuse dpkg's multiarch /usr/share handling - for example:
Selecting previously deselected package libglib2.0-0:i386.
Unpacking libglib2.0-0:i386 (from .../libglib2.
dpkg: error processing /var/cache/
'./usr/
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Preparing to replace libglib2.0-0 2.29.16-0ubuntu2 (using .../libglib2.
Unpacking replacement libglib2.0-0 ...
Selecting previously deselected package libpcre3:i386.
This doesn't occur when upgrading to a different package version.
ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: dpkg 1.16.0.3ubuntu3 [modified: usr/bin/dpkg-deb]
ProcVersionSign
Uname: Linux 3.0.0-8-generic x86_64
Architecture: amd64
Date: Wed Aug 17 21:16:12 2011
EcryptfsInUse: Yes
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Alpha amd64 (20110730)
ProcEnviron:
PATH=(custom, user)
LANG=en_AU.UTF-8
SHELL=/bin/zsh
SourcePackage: dpkg
UpgradeStatus: Upgraded to oneiric on 2011-08-16 (0 days ago)
dpkg isn't actually confused, it knows exactly what it's doing. When you build a package locally without using pkgbinarymangler, you wind up with full package changelogs, various documentation being file copies instead of symlinks, etc. When launchpad builds, it obviously applies all these changes to the package as part of the build.
So the contents of the packages are different between the two archs, and dpkg has no basis for deciding which contents are the "right" ones in a multiarch context. It does the only thing it can do, it refuses to install the new package whose contents differ from the existing ones.