diff options
| author | Julian Andres Klode <jak@debian.org> | 2025-07-22 20:34:34 +0200 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2025-08-26 13:41:35 +0200 |
| commit | 539a3dfcfdf30e552a6374ee478a98e16ab7fa7d (patch) | |
| tree | db0bfcf335cc8955bb0dc3cbde34d236991ef249 /apt-pkg/solver3.cc | |
| parent | db78e2f8eafb1009bd47e488fc39d8b420f4c749 (diff) | |
solver3: Allow any downloadable version to mark a package as not obsolete
Lots of people have pinned an older version that is no longer
installable, or more common yesterday, we saw a lot of people
who seemingly manually installed a newer version of a deb than
in the repositories, causing the package to be considered obsolete,
which does not make much sense.
Oops: 4c39d922-410f-11f0-bbf9-fa163ec44ecd
Oops: a64054f6-4140-11f0-bbfd-fa163ec44ecd
Oops: a32196c1-661d-11f0-a97c-fa163ec8ca8c
Diffstat (limited to 'apt-pkg/solver3.cc')
| -rw-r--r-- | apt-pkg/solver3.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index 2c381f098..a386b967c 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -542,11 +542,16 @@ bool APT::Solver::Obsolete(pkgCache::PkgIterator pkg, bool AllowManual) const if (ObsoletedByNewerSourceVersion(ver)) return true; - if (ver.Downloadable()) + // Any version downloadable is good enough for us tbh + for (auto ver = pkg.VersionList(); not ver.end(); ++ver) { - pkgObsolete[pkg] = 1; - return false; + if (ver.Downloadable()) + { + pkgObsolete[pkg] = 1; + return false; + } } + if (debug >= 3) std::cerr << "Obsolete: " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << " - not installable\n"; pkgObsolete[pkg] = 2; |
