Thanks, this looks good! Pushed to oneiric-proposed. ** Description changed:
+ 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://launchpad.net/ubuntu/+source/eglibc/2.13-20ubuntu9/+build/2979954/+files/libc-bin_2.13-20ubuntu9_amd64.deb https://launchpad.net/ubuntu/+source/eglibc/2.13-20ubuntu9/+build/2979954/+files/libc6_2.13-20ubuntu9_amd64.deb 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-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libc-bin:i386 libc-dev-bin libc6 libc6:i386 libc6-dbg libc6-dev libc6-i386 libcomerr2:i386 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-krb5-2:i386 libice6:i386 libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms1:i386 libmng1:i386 libpcre3:i386 libpng12-0:i386 libqt4-dbus libqt4-dbus:i386 libqt4-declarative libqt4-declarative:i386 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-xmlpatterns:i386 libqtcore4 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-plugins:i386 libasound2-python:i386 nas:i386 glibc-doc glibc-doc:i386 locales:i386 cups-common:i386 rng-tools:i386 gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 liblcms-utils:i386 libqt4-declarative-folderlistmodel libqt4-declarative-gestures libqt4-declarative-particles libqt4-declarative-shaders qt4-qmlviewer libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev libqt4-dev:i386 qt4-qtconfig qt4-qtconfig:i386 Recommended packages: libqt4-sql-mysql:i386 libqt4-sql-odbc:i386 libqt4-sql-psql:i386 libqt4-sql-sqlite:i386 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-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libc-bin:i386 libc6:i386 libcomerr2:i386 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-krb5-2:i386 libice6:i386 libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms1:i386 libmng1:i386 libpcre3:i386 libpng12-0:i386 libqt4-dbus:i386 libqt4-declarative:i386 libqt4-network:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 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 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-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libc-dev-bin libc6 libc6:i386 libc6-dbg libc6-dev libc6-i386 libcomerr2:i386 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-krb5-2:i386 libice6:i386 libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms1:i386 libmng1:i386 libpcre3:i386 libpng12-0:i386 libqt4-dbus libqt4-dbus:i386 libqt4-declarative libqt4-declarative:i386 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-xmlpatterns:i386 libqtcore4 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-plugins:i386 libasound2-python:i386 nas:i386 glibc-doc glibc-doc:i386 locales:i386 cups-common:i386 rng-tools:i386 gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 liblcms-utils:i386 libqt4-declarative-folderlistmodel libqt4-declarative-gestures libqt4-declarative-particles libqt4-declarative-shaders qt4-qmlviewer libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev libqt4-dev:i386 qt4-qtconfig qt4-qtconfig:i386 Recommended packages: libqt4-sql-mysql:i386 libqt4-sql-odbc:i386 libqt4-sql-psql:i386 libqt4-sql-sqlite:i386 The following NEW packages will be installed: gcc-4.6-base:i386 libasound2:i386 libaudio2:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libc6:i386 libcomerr2:i386 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-krb5-2:i386 libice6:i386 libjpeg62:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms1:i386 libmng1:i386 libpcre3:i386 libpng12-0:i386 libqt4-dbus:i386 libqt4-declarative:i386 libqt4-network:i386 libqt4-script:i386 libqt4-sql:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 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 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 ProcVersionSignature: Ubuntu 3.0.0-9.14-generic 3.0.3 Uname: Linux 3.0.0-9-generic x86_64 NonfreeKernelModules: nvidia wl 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) ** Changed in: apt (Ubuntu Oneiric) Status: Triaged => In Progress ** Changed in: apt (Ubuntu Oneiric) Assignee: (unassigned) => Steve Langasek (vorlon) ** Also affects: ubuntu-release-notes Importance: Undecided Status: New ** Changed in: ubuntu-release-notes Importance: Undecided => High -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/850264 Title: given a foreign architecture of i386 on amd64 machine, and an outdated libc, apt tries to remove libc-bin To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-release-notes/+bug/850264/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs