apt-get dselect-upgrade multi-arch bug while resolving dependencies
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
dselect-upgrade in Ubuntu 12.04 LTS appears to have issues resolving
dependencies with multi-arch in play. Starting from a clean state:
| root@lamassu:~# apt-get update > /dev/null; echo $?; apt-get dist-upgrade > /dev/null; echo $?; apt-get dselect-upgrade
| 0
| 0
| Reading package lists... Done
| Building dependency tree
| Reading state information... Done
| 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
| root@lamassu:~#
If I then ask for libvirt-bin to be installed and run dselect-upgrade,
it wanders off into the weeds of multiarch and by the time it wants to
come out, it's ready to toss ubuntu-minimal and ubuntu-standard
overboard to do so.
| root@lamassu:~# echo "libvirt-bin install" | dpkg --set-selections; apt-get dselect-upgrade
| Reading package lists... Done
| Building dependency tree
| Reading state information... Done
| The following packages will be REMOVED
| crda cron libnl-3-200 libnl-genl-3-200 linux-image-
| The following NEW packages will be installed
| bridge-utils:i386 cgroup-bin:i386 cron:i386 gcc-4.6-base:i386 libapparmor1:i386 libavahi-client3 libavahi-
| libcgroup1:i386 libdb5.1:i386 libdbus-1-3:i386 libffi6:i386 libgcc1:i386 libgcrypt11:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386 libidn11:i386 libnl-3-200:i386 libnuma1:i386 libp11-kit0:i386 libpam0g:i386 libpcap0.8:i386
| libpciaccess0:i386 libpcre3:i386 libpopt0:i386 libreadline6:i386 libsasl2-2:i386 libselinux1:i386 libstdc++6:i386 libtasn1-3:i386 libtinfo5:i386 libudev0:i386 libuuid1:i386 libxenstore3.0:i386 libxml2:i386 libyajl1:i386 logrotate:i386
| netcat-openbsd:i386 zlib1g:i386
| 0 upgraded, 45 newly installed, 12 to remove and 0 not upgraded.
| Need to get 9,448 kB/9,526 kB of archives.
| After this operation, 125 MB disk space will be freed.
| Do you want to continue [Y/n]? n
| Abort.
| root@lamassu:~#
On the other hand, if I just install the package by hand, it does the
right thing:
| root@lamassu:~# apt-get install libvirt-bin
| Reading package lists... Done
| Building dependency tree
| Reading state information... Done
| The following packages were automatically installed and are no longer required:
| python-xapian python-chardet
| Use 'apt-get autoremove' to remove them.
| The following extra packages will be installed:
| bridge-utils cgroup-lite dnsmasq-base libapparmor1 libavahi-client3 libavahi-
| Suggested packages:
| policykit-1 pm-utils qemu-kvm qemu radvd
| Recommended packages:
| libxml2-utils gawk ebtables
| The following NEW packages will be installed
| bridge-utils cgroup-lite dnsmasq-base libapparmor1 libavahi-client3 libavahi-
| 0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
| Need to get 2,472 kB/2,550 kB of archives.
| After this operation, 8,752 kB of additional disk space will be used.
| Do you want to continue [Y/n]? n
| Abort.
| root@lamassu:~#
(I know, dselect, haha. We use it because it allows us to tell puppet
to indicate which packages should be installed and then have a human
interactively enact that by running 'apt-get dselect-upgrade'. If
there's an alternative way to do the same two stage process without
using dselect-upgrade, I'd be happy to use that instead.)
Some debug options like: pkgDepCache: :Marker= 1 -o Debug:: pkgProblemResol ver=1
-o Debug::
might give you some hints what the difference between the two is.
I must note though that I have carefully stayed away from ever touching dselect-related functionality in APT as dselect predates my Debian usage by (many) years and I haven't seen others working on it, so I am a bit surprised that it is still (even partly) works…