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

Re: debugging apt-get




On 2022-10-15 11:05, David Kalnischkies wrote:
On Sat, Oct 15, 2022 at 10:15:02AM -0400, Stefan Seefeld wrote:
Is there a way to debug this, i.e. have `apt-get` produce more verbose output
that indicates *why* the prerequisite package is not going to be installed ?
Sure! Run apt with these options:

  -oDebug::pkgProblemResolver=true
  -oDebug::pkgDepCache::Marker=1
  -oDebug::pkgDepCache::AutoInstall=1
Those are btw mentioned and explained by our README.


sudo apt-get update && sudo apt-get install -oDebug::pkgProblemResolver=true
 -oDebug::pkgDepCache::Marker=1  -oDebug::pkgDepCache::AutoInstall=1 ./workspace/tnav-service-tools_0.0.0_amd64.deb
Includes the line:
| tnav-service-tools:amd64 Depends on think-navigation:amd64 < none | 1.0.6 @un uH > (= 1.0.5) can't be satisfied!
which is your main problem. The resolver stops after concluding this
leaving all other dependencies unsatisfied, too (it does so that
the code can fallback to other alternative and such. Of course,
here are none, so the only thing it does is provide a red herring).

The "< none | 1.0.6 >" says that it is not installed and has no
candidate for installation – the newest version apt knows about is
given as 1.0.6, but that is not considered a candidate. If it were
a candidate this would look like for think-ctk later: "none -> 1.0.3".

So, "apt policy think-navigation" instead of Y (aka think-ctk ?) should
give you an idea from where 1.0.6 comes, why its not an install
candidate (= too low pin or somesuch) and even more importantly if 1.0.5
is known to apt and why that isn't the installation candidate.

This is the output of `apt policy think-navigation`:

```

think-navigation:
 Installed: (none)
 Candidate: 1.0.6
 Version table:
    1.0.6 500
       500 https://artifacts.thinksurgical.com/artifactory/debian-stable focal/main amd64 Packages
    1.0.5 500
       500 https://artifacts.thinksurgical.com/artifactory/debian-stable focal/main amd64 Packages
    1.0.4 500
       500 https://artifacts.thinksurgical.com/artifactory/debian-stable focal/main amd64 Packages
    1.0.3 500
       500 https://artifacts.thinksurgical.com/artifactory/debian-stable focal/main amd64 Packages
    1.0.2 500
       500 https://artifacts.thinksurgical.com/artifactory/debian-stable focal/main amd64 Packages

```

which tells me that there are five different versions available, but only the latest is considered a "candidate". What is the exact meaning of "candidate" ?


Note that like in the case you showed with Y, apt might know about other
versions provided by the same Packages file, but chooses one as the
candidate and sticks to it. Without manually intervention that is the
highest numbered one.

Thanks for the explications !

I think I'm still missing or misunderstanding something very fundamental here. To go back to the more schematic names and versions:

My repo provides versions 1, 2, and 3 of a package "Y". I want to install a package "X", which depends on version 2 of package "Y". Yet, when I try to install it, apt-get refuses as version 2 is not considered a "candidate". Is this description accurate ? Why is that ? If "X" lists "y=2" as explicit dependency, why is that version 2 not considered a "candidate" ?

Thanks,

Stefan
-- 

      ...ich hab' noch einen Koffer in Berlin...
null

Reply to: