given a foreign architecture of i386 on amd64 machine, and an outdated libc, apt tries to remove libc-bin
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Release Notes for Ubuntu |
Fix Released
|
High
|
Unassigned | ||
apt (Ubuntu) |
Fix Released
|
High
|
Michael Vogt | ||
Oneiric |
Fix Released
|
High
|
Steve Langasek | ||
Precise |
Fix Released
|
High
|
Michael Vogt |
Bug Description
SRU justification: a bug in apt's resolver causes apt to select pathological upgrade solutions when foreign-arch packages are installed. This affects a substantial proportion of amd64 users, who will have multiarch enabled (e.g., for ia32-libs or for skype). This fix allows apt to calculate the upgrade correctly, preferring native packages over foreign ones whenever possible.
TEST CASE:
1) on an oneiric amd64 system, install the skype:i386 package from the Canonical Partner repository.
2) attempt a release upgrade to precise with update-manager -d.
3) verify that the release upgrade failed, with errors in apt.log indicating involvement of :i386 packages
4) install the apt from oneiric-proposed
5) attempt the release upgrade a second time
6) verify that the release upgrade completes successfully.
RELEASE NOTES: although users will generally have -updates installed already before they begin the upgrade, this particular issue has enough of an impact on the upgrade for amd64 desktop users that I think it's worth singling out in the release notes telling users that they need to use the apt from -updates. (I'm assuming here that we won't have time to enforce this through update-manager prior to release.)
This reproducer was verified to work in the live system of current precise-dailies. It doesn't work on an installed system where libc6:i386 is already installed!
1. Drop libc6-dev:
sudo dpkg -P libc6-dev
2. Downgrade to a previous libc:
wget https:/
sudo dpkg -i libc*.bin
3. Ensure apt is consistent:
sudo apt-get install -f
should not complain about anything.
4. Install i386 package:
sudo apt-get install cpp:i386
This will propose to remove libc-bin and install the newer version of libc-bin:i386 instead.
It seems that apt prefers install the foreign arch libc6-bin:i386 over upgrading the native arch libc6-bin to the current version?
WORKAROUND
If you get this bug with Precise Alpha1 you can workaround by:
* Keeping 'install 3rd party software' _unchecked_ in the Prepare step of Ubiquity
or
* Disconnecting the system from the network before starting the installation
----
Original bug report:
Today I added i386 as a foreign architecture and then tried to install something with apt, but was presented with a very bad plan:
$ sudo apt-get install skype:i386
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
gcc-4.6-base:i386 libasound2:i386 libaudio2:i386 libavahi-
libavahi-
libcups2:i386 libdbus-1-3:i386 libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
libgcrypt11:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386 libgssapi-
libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0
libpcre3:i386 libpng12-0:i386 libqt4-dbus libqt4-dbus:i386 libqt4-declarative libqt4-
libqt4-network libqt4-network:i386 libqt4-opengl libqt4-script libqt4-script:i386 libqt4-sql libqt4-sql:i386
libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-xml libqt4-xml:i386 libqt4-xmlpatterns
libqt4-
libstdc++6:i386 libtasn1-3:i386 libtiff4:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386
libxext6:i386 libxi6:i386 libxrender1:i386 libxss1:i386 libxt6:i386 libxv1:i386 qdbus zlib1g:i386
Suggested packages:
libasound2-
rng-tools:i386 gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 liblcms-utils:i386 libqt4-
libqt4-
libqt4-
libqt4-
Recommended packages:
libqt4-
The following packages will be REMOVED:
libc-bin
The following NEW packages will be installed:
gcc-4.6-base:i386 libasound2:i386 libaudio2:i386 libavahi-
libavahi-
libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libgcrypt11:i386 libglib2.0-0:i386
libgnutls26:i386 libgpg-error0:i386 libgssapi-
libkeyutils1:i386 libkrb5-3:i386 libkrb5support0
libqt4-dbus:i386 libqt4-
libqt4-
libtasn1-3:i386 libtiff4:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386
libxi6:i386 libxrender1:i386 libxss1:i386 libxt6:i386 libxv1:i386 skype:i386 zlib1g:i386
The following packages will be upgraded:
libc-dev-bin libc6 libc6-dbg libc6-dev libc6-i386 libqt4-dbus libqt4-declarative libqt4-network libqt4-opengl
libqt4-script libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-xml libqt4-xmlpatterns libqtcore4
libqtgui4 qdbus
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
libc-bin
19 upgraded, 58 newly installed, 1 to remove and 274 not upgraded.
Need to get 71.5 MB of archives.
After this operation, 96.3 MB of additional disk space will be used.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] ^C
To fix this, on slangasek's advice, I did
$ sudo apt-get install skype:i386 libc-bin
This upgraded libc-bin instead of removing it.
$ sudo apt-get install skype:i386 libc-bin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
gcc-4.6-base:i386 libasound2:i386 libaudio2:i386 libavahi-
libavahi-
libdbus-1-3:i386 libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libgcrypt11:i386
libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386 libgssapi-
libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0
libpng12-0:i386 libqt4-dbus libqt4-dbus:i386 libqt4-declarative libqt4-
libqt4-
libqt4-sql-sqlite libqt4-svg libqt4-xml libqt4-xml:i386 libqt4-xmlpatterns libqt4-
libqtcore4:i386 libqtgui4 libqtgui4:i386 libselinux1:i386 libsm6:i386 libstdc++6:i386 libtasn1-3:i386
libtiff4:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxi6:i386
libxrender1:i386 libxss1:i386 libxt6:i386 libxv1:i386 qdbus zlib1g:i386
Suggested packages:
libasound2-
rng-tools:i386 gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 liblcms-utils:i386 libqt4-
libqt4-
libqt4-
libqt4-
Recommended packages:
libqt4-
The following NEW packages will be installed:
gcc-4.6-base:i386 libasound2:i386 libaudio2:i386 libavahi-
libavahi-
libfontconfig
libgpg-
libkrb5-3:i386 libkrb5support0
libqt4-
libqt4-
libtasn1-3:i386 libtiff4:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386
libxi6:i386 libxrender1:i386 libxss1:i386 libxt6:i386 libxv1:i386 skype:i386 zlib1g:i386
The following packages will be upgraded:
libc-bin libc-dev-bin libc6 libc6-dbg libc6-dev libc6-i386 libqt4-dbus libqt4-declarative libqt4-network
libqt4-opengl libqt4-script libqt4-sql libqt4-sql-mysql libqt4-sql-sqlite libqt4-svg libqt4-xml libqt4-xmlpatterns
libqtcore4 libqtgui4 qdbus
20 upgraded, 57 newly installed, 0 to remove and 274 not upgraded.
Need to get 43.7 MB/71.6 MB of archives.
After this operation, 96.5 MB of additional disk space will be used.
Do you want to continue [Y/n]?
libc-bin was version 2.13-17ubuntu2 at the time, and updated to 2.13-20ubuntu2
ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: apt 0.8.16~exp5ubuntu6
ProcVersionSign
Uname: Linux 3.0.0-9-generic x86_64
NonfreeKernelMo
ApportVersion: 1.22.1-0ubuntu2
Architecture: amd64
Date: Wed Sep 14 11:43:35 2011
InstallationMedia: Xubuntu 10.10 "Maverick Meerkat" - Release amd64 (20101008.1)
ProcEnviron:
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: apt
UpgradeStatus: Upgraded to oneiric on 2011-07-14 (61 days ago)
tags: | added: multiarch |
Changed in apt (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → High |
Changed in apt (Ubuntu Precise): | |
milestone: | none → precise-alpha-2 |
assignee: | nobody → Martin Pitt (pitti) |
tags: | added: rls-mgr-p-tracking |
tags: | added: iso-testing |
description: | updated |
Changed in apt (Ubuntu Precise): | |
assignee: | Martin Pitt (pitti) → Michael Vogt (mvo) |
tags: |
added: rls-p-tracking removed: rls-mgr-p-tracking |
tags: | added: rls-mgr-p-tracking |
description: | updated |
Changed in ubuntu-release-notes: | |
importance: | Undecided → High |
There's several reports of this, I think. Many of them with the multiarch tag.