[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#936029: marked as done (better error messages when failing to resolve multiple levels of provides)



Your message dated Thu, 29 Aug 2019 17:20:51 +0200
with message-id <20190829171310.GA7525@debian.org>
and subject line Re: Bug#936029: apt fails to resolve multiple levels of provides
has caused the Debian Bug report #936029,
regarding better error messages when failing to resolve multiple levels of provides
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
936029: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=936029
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: apt
Version: 1.8.3
Severity: important

Dear Maintainer,

apt is having trouble resolving the (correct) dependencies of a certain rust package:

$ sudo apt install librust-rand+default-dev
[..]
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 librust-rand+default-dev : Depends: librust-rand-dev (= 0.6.4-2)
                            Depends: librust-rand+std-dev (= 0.6.4-2)
E: Unable to correct problems, you have held broken packages.
exit code 100

A manual workaround is to supply the dependencies being complained about explicitly:

$ sudo apt install librust-rand+default-dev librust-rand-dev
[..]
The following additional packages will be installed:
[..]
0 upgraded, 25 newly installed, 0 to remove and 101 not upgraded.
Need to get 964 kB/1,280 kB of archives.
After this operation, 10.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] ^C

However this of course can't be done on the buildds, and is preventing
rust-debcargo from building, though strangely it has succeeded on some
architectures:

https://buildd.debian.org/status/package.php?p=rust-debcargo

Note that the dose3 checker succeeds, which is why the builds are being
attempted in the first place, as opposed to being stuck on BD-Uninstallable.

X

-- System Information:
Debian Release: bullseye/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable'), (300, 'unstable'), (100, 'experimental'), (1, 'experimental-debug')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-5-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages apt depends on:
ii  adduser                 3.118
ii  debian-archive-keyring  2019.1
ii  gpgv                    2.2.17-3
ii  libapt-pkg5.0           1.8.3
ii  libc6                   2.28-10
ii  libgcc1                 1:9.2.1-4
ii  libgnutls30             3.6.9-4
ii  libseccomp2             2.4.1-2
ii  libstdc++6              9.2.1-4

Versions of packages apt recommends:
ii  ca-certificates  20190110

Versions of packages apt suggests:
pn  apt-doc         <none>
ii  aptitude        0.8.11-7
ii  dpkg-dev        1.19.7
ii  gnupg           2.2.17-3
ii  gnupg2          2.2.17-3
ii  powermgmt-base  1.36
ii  synaptic        0.84.6+b1

-- no debconf information

--- End Message ---
--- Begin Message ---
On Thu, Aug 29, 2019 at 03:00:00PM +0000, Ximin Luo wrote:
> Control: reopen -1
> Control: retitle -1 better error messages when failing to resolve multiple levels of provides
> 
> Julian Andres Klode:
> > On Thu, Aug 29, 2019 at 02:27:45AM -0700, Ximin Luo wrote:
> >> Package: apt
> >> Version: 1.8.3
> >> Severity: important
> >>
> >> Dear Maintainer,
> >>
> >> apt is having trouble resolving the (correct) dependencies of a certain rust package:
> >>
> >> $ sudo apt install librust-rand+default-dev
> >> [..]
> >> Some packages could not be installed. This may mean that you have
> >> requested an impossible situation or if you are using the unstable
> >> distribution that some required packages have not yet been created
> >> or been moved out of Incoming.
> >> The following information may help to resolve the situation:
> >>
> >> The following packages have unmet dependencies:
> >>  librust-rand+default-dev : Depends: librust-rand-dev (= 0.6.4-2)
> >>                             Depends: librust-rand+std-dev (= 0.6.4-2)
> >> E: Unable to correct problems, you have held broken packages.
> >> exit code 100
> >>
> > 
> > There's a conflict between librust-rand-chacha-0.1-dev depending on
> > librust-rand-core-0.3-dev and librust-rand-pcg-0.1-dev depending on
> > librust-rand-core-0.4-dev (which conflicts with other versioned librust-rand-core)
> > 
> >   MarkInstall librust-rand+default-dev:amd64 < none -> 0.6.4-2 @un puN Ib > FU=1                                                                                                                                                                                                            
> >     MarkInstall librust-rand-dev:amd64 < none -> 0.6.4-2 @un uN Ib > FU=0                                                                                                                                                                                                                   
> >       MarkInstall librust-autocfg-dev:amd64 < none -> 0.1.4-1 @un uN > FU=0                                                                                                                                                                                                                 
> >       MarkInstall librust-libc-dev:amd64 < none -> 0.2.62-1 @un uN > FU=0                                                                                                                                                                                                                   
> >       MarkInstall librust-rand-chacha-0.1-dev:amd64 < none -> 0.1.1-2+b1 @un uN Ib > FU=0                                                                                                                                                                                                   
> >         MarkInstall librust-rand-core-0.3-dev:amd64 < none -> 0.3.0-1+b1 @un uN > FU=0                                                                                                                                                                                                      
> >       MarkInstall librust-rand-hc-0.1-dev:amd64 < none -> 0.1.0-1 @un uN > FU=0                                                                                                                                                                                                             
> >       MarkInstall librust-rand-isaac-0.1-dev:amd64 < none -> 0.1.1-1 @un uN > FU=0                                                                                                                                                                                                          
> >       MarkInstall librust-rand-pcg-0.1-dev:amd64 < none -> 0.1.2-1 @un uN Ib > FU=0                                                                                                                                                                                                         
> >         MarkInstall librust-rand-core-0.4-dev:amd64 < none -> 0.4.0-2+b1 @un uN Ib > FU=0                                                                                                                                                                                                   
> >           MarkDelete librust-rand-core-0.3-dev:amd64 < none -> 0.3.0-1+b1 @un uN > FU=0        
> > 
> > 
> > This happens because librust-rand+default-dev depends on librust-rand-pcg-0.1+default-dev
> > which is a virtual package provided by librust-rand-pcg-0.1-dev and
> > librust-rand-pcg-dev.
> > 
> > Depending on virtual packages that have more than one provider without specifying
> > a preferred provider (e.g. librust-rand-pcg-dev|librust-rand-pcg-0.1+default-dev)
> > is not correct.
> > 
> > Please fix your packaging.
> > 
> 
> Thanks for diagnosing. We forgot to upgrade rust-rand-pcg to version 0.2 when uploading rust-rand-pcg-0.1, and I have just done the former so the error should go away soon.
> 
> If apt had printed more details about the error (e.g. at the minimum, an advisory note on how to enable the debugging output you 
> gave above) then we could have diagnosed this issue without filing a bug report about it. So I'll reopen this bug report and retitle 
> it for improving the error message.

That would be a bad user experience. Normal users don't trigger
issues like that. Also, read the README - it's in there.

And in general: We do not accept "the solver is broken" as a bug report - if it fails
to solve your problem, reformulate the problem until it can be solved. Fixing the solver
is next to impossible, and it does not help you anyway, as you need it to work with apt
in stable.

> 
> It's also the first time I'm hearing about the restriction "Depending on virtual packages that have more than one provider without 
> specifying a preferred provider (e.g. librust-rand-pcg-dev|librust rand-pcg-0.1+default-dev) is not correct." -- where is that 
> documented? This should also be part of the error message.
> 

I don't think it's written anywhere, but the behavior is undefined. I mean, this does not
need writing down - if you give it one name provided by two, nobody can tell you which
package will get installed. For non-greedy solvers this works fine as it can recover from
choices that don't lead anywhere, but apt is not smart enough to do that, and that's fine.

The rules for Depends: A | B - roughly: we try (in order)

(0) check if B is installed, if so, we are done
(1) try to install the package named A
(2) try to install a package providing A
(3) try to install the package named B
(4) try to install a package providing B

There are cases where this works better, so it's not always necessarily an
issue - it's also not something we can really warn anyone about.

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer                              i speak de, en

--- End Message ---

Reply to: