#1051923 aptitude: incorrect dependency resolution for ghostscript vs virtual package ghostscript-x

Package:
aptitude
Source:
aptitude
Description:
terminal-based package manager
Submitter:
Vincent Lefevre
Date:
2023-09-14 09:12:03 UTC
Severity:
normal
#1051923#5
Date:
2023-09-14 08:41:28 UTC
From:
To:
I have the following ghostscript-related packages installed:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                Version        Architecture Description
+++-===================-==============-============-===================================================================
ii  ghostscript         10.01.2~dfsg-1 amd64        interpreter for the PostScript language and for PDF
ii  ghostscript-doc     10.01.2~dfsg-1 all          interpreter for the PostScript language and for PDF - Documentation
ii  ghostscript-x:amd64 10.01.2~dfsg-1 amd64        transitional package for ghostscript
ii  libgs-common        10.01.2~dfsg-1 all          interpreter for the PostScript language and for PDF - ICC profiles
ii  libgs10:amd64       10.01.2~dfsg-1 amd64        interpreter for the PostScript language and for PDF - Library
ii  libgs10-common      10.01.2~dfsg-1 all          interpreter for the PostScript language and for PDF - common files

Version 10.02.0~dfsg-1 is available, but if I try '+' over "ghostscript"
in the aptitude TUI to ask for an upgrade of this package, I get:

iu  ghostscript                10.01.2~dfsg-1           10.02.0~dfsg-1
[...]
ghostscript (upgrade, 10.01.2~dfsg-1 -> 10.02.0~dfsg-1) will be upgraded from  ▒
version 10.01.2~dfsg-1 to version 10.02.0~dfsg-1.                              ▒
                                                                               ▒
The following packages depend on version 10.01.2~dfsg-1 of ghostscript, and    ▒
will be broken if it is upgraded.                                              ▒
                                                                               ▒
  * ghostscript-x (held/unchanged, 10.01.2~dfsg-1) depends on ghostscript (=   ▒
    10.01.2~dfsg-1) (provided by ghostscript:i386 10.01.2~dfsg-1)              ▒

though ghostscript:i386 isn't installed; so, this doesn't make sense.
Since ghostscript-x is now provided by ghostscript, aptitude should
have proposed to remove this package as it would still be there as a
virtual package.

Package: ghostscript
Version: 10.02.0~dfsg-1
Installed-Size: 180
Maintainer: Debian QA Group <packages@qa.debian.org>
Architecture: amd64
Provides: ghostscript-x (= 10.02.0~dfsg-1), postscript-viewer
          ^^^^^^^^^^^^^

and in the ghostscript changelog:

ghostscript (10.02.0~dfsg-1) unstable; urgency=medium
[...]
  * drop obsolete binary packages ghostscript-x libgs9-common;
    have binary package ghostscript provide ghostscript-x

Note that I have:

Aptitude::ProblemResolver::SolutionCost "safety, removals";

And from the command line:

# aptitude install ghostscript
The following packages will be upgraded:
  ghostscript ghostscript-doc libgs-common libgs10 libgs10-common
5 packages upgraded, 0 newly installed, 0 to remove and 59 not upgraded.
Need to get 14.8 MB of archives. After unpacking 335 kB will be freed.
The following packages have unmet dependencies:
 ghostscript-x : Depends: ghostscript (= 10.01.2~dfsg-1) but 10.02.0~dfsg-1 is to be installed
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     ghostscript [10.01.2~dfsg-1 (now, testing)]
2)     libgs10 [10.01.2~dfsg-1 (now, testing)]
3)     libgs10-common [10.01.2~dfsg-1 (now, testing, unstable)]

Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Remove the following packages:
1)     ghostscript-x [10.01.2~dfsg-1 (now, testing, unstable)]

Note that this solution would be OK only because ghostscript-x will
become a virtual package, but aptitude doesn't give this information,
so that this is misleading.

#1051923#10
Date:
2023-09-14 08:50:15 UTC
From:
To:
Note that just in case this would matter, I have several packages
that depend on ghostscript-x: gv pspresent xournal

#1051923#15
Date:
2023-09-14 09:09:02 UTC
From:
To:
And ghostscript 10.02.0~dfsg-2 has just appeared. Its changelog says

  * declare that ghostscript replaces older ghostscript-x

so that now

Package: ghostscript
Version: 10.02.0~dfsg-2
Installed-Size: 180
Maintainer: Debian QA Group <packages@qa.debian.org>
Architecture: amd64
Replaces: ghostscript-x (<< 10.02.0~dfsg-1)
Provides: ghostscript-x (= 10.02.0~dfsg-2), postscript-viewer

but this has no effect on aptitude.