summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2025-07-22 20:34:34 +0200
committerJulian Andres Klode <jak@debian.org>2025-08-26 13:41:35 +0200
commit539a3dfcfdf30e552a6374ee478a98e16ab7fa7d (patch)
treedb0bfcf335cc8955bb0dc3cbde34d236991ef249 /apt-pkg
parentdb78e2f8eafb1009bd47e488fc39d8b420f4c749 (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')
-rw-r--r--apt-pkg/solver3.cc11
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;