#1001169 aptitude: doesn't obey Pin-Priority during conflict resolution

Package:
aptitude
Source:
aptitude
Description:
terminal-based package manager
Submitter:
Adam Borowski
Date:
2021-12-05 17:27:03 UTC
Severity:
normal
#1001169#5
Date:
2021-12-05 17:20:08 UTC
From:
To:
Hi!
On a stable system, with the following apt priorities:
  stable=500
  testing=333
  unstable=250
  experimental=200
I requested aptitude to upgrade a package, let's call it "foo", to the
version in testing.  It depends on libc6 (and libc6 has -dev, locales
and so on, but these come together).

Aptitude proposed the following solutions, in order:

1. remove foo
2. keep foo at current version (stable)
3. install glibc/experimental
4. install glibc/unstable
5. install glibc/testing

The obviously correct one is 5.  Solutions 1 and 2 shouldn't even be
considered as they are not solutions to what aptitude was invoked to do
-- but that's a separate issue.  What I'm reporting here is the order
of 3, 4, and 5.

Aptitude seems to sort available versions to prefer newest first, ignoring
configured releases -- as opposed to obeying the priority as it does during
the initial resolution.

Proposed fix: prefix the versions with priority?


Meow!
-- Package-specific info:
Terminal: xterm-256color
$DISPLAY not set.
which aptitude: /usr/bin/aptitude

aptitude version information:
aptitude 0.8.13
Compiler: g++ 10.2.1 20210110
Compiled against:
  apt version 6.0.0
  NCurses version 6.2
  libsigc++ version: 2.10.4
  Gtk+ support disabled.
  Qt support disabled.

Current library versions:
  NCurses version: ncurses 6.2.20201114
  cwidget version: 0.5.18
  Apt version: 6.0.0

aptitude linkage:
	linux-vdso.so.1 (0x00007ffca27b0000)
	libapt-pkg.so.6.0 => /usr/lib/x86_64-linux-gnu/libapt-pkg.so.6.0 (0x00007fb9324ae000)
	libncursesw.so.6 => /lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007fb932473000)
	libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fb932444000)
	libsigc-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libsigc-2.0.so.0 (0x00007fb93243b000)
	libcwidget.so.4 => /usr/lib/x86_64-linux-gnu/libcwidget.so.4 (0x00007fb932335000)
	libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fb9321f2000)
	libboost_iostreams.so.1.74.0 => /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.74.0 (0x00007fb9321d7000)
	libxapian.so.30 => /usr/lib/x86_64-linux-gnu/libxapian.so.30 (0x00007fb931fb5000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb931f93000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb931dc6000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb931c82000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb931c68000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb931aa1000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fb931a87000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb931a6a000)
	libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007fb931a57000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fb931a2f000)
	liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fb931a0c000)
	libzstd.so.1 => /usr/lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fb93192f000)
	libudev.so.1 => /usr/lib/x86_64-linux-gnu/libudev.so.1 (0x00007fb931907000)
	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fb93185f000)
	libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fb93173f000)
	libxxhash.so.0 => /usr/lib/x86_64-linux-gnu/libxxhash.so.0 (0x00007fb931726000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fb932ace000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb931720000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb931713000)
	libuuid.so.1 => /usr/lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fb93170a000)
	libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007fb9316ff000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fb9316d9000)