#1079710 aptitude: "Immediate dependency resolution" must be optional

Package:
aptitude
Source:
aptitude
Description:
terminal-based package manager
Submitter:
Matthias Urlichs
Date:
2024-08-26 19:39:02 UTC
Severity:
normal
#1079710#5
Date:
2024-08-26 16:34:23 UTC
From:
To:
I'm trying to update a rather complex development system from Bookworm to
Trixie, i.e. through the 64-bit time transition.

The machine has three architectures installed, most libraries
are (historically) not marked as autoinstalled, and I have a bunch
of self-built packages of various historical state.

In this sort of situation it's really common for the autoresolver to not
find a solution. The problem is that attempting to manually resolve the
transition causes the "immediate dependency resolution" attempt (which
aptitude unconditionally performs whenever you change a package's state)
to take arbitrarily long. I'm seeing 30+ seconds *each time I press + or -*,
and that's on a >2-GHz 8-core workstation with a heap of RAM. Getting from
600 to 50 broken packages took me *two days*.

Thus, I'd like to (urgently) ask you to add a way to *turn this immediate
resolution thing off*, via some config option.

The current situation is untenable; updating nontrivial systems to Trixie
is going to be a *lot* of fun, for some non-empty subset of them, if this
isn't fixed.

The change should be backported to Stable, for obvious reasons.

#1079710#10
Date:
2024-08-26 17:12:22 UTC
From:
To:
Note that upgrading systems with aptitude is not supported; you should follow
the release notes instructions and upgrade your system using

# apt upgrade --without-new-pkgs
# apt full-upgrade

https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.en.html#upgradingpackages

And there you can mark multiple packages at a time, as you can in aptitude's
commandline interface by appending <pkg>+ and <pkg>+ respectively, if
need be.

We take great care to work around issues in apt's solver in package
dependencies such that this process works, but other processes are
not tested.

I am no aptitude expert. I am just a naive apt maintainer.

But I don't quite understand what your goal is here. If you don't
resolve again after making a change you don't know what is broken
then, you can only guess.

In any case, isn't this option already there? Going to the aptitude
settings page shows me:

    Option:  aptitude::Auto-Install
    Default: True
    Value:   True

    If this option is enabled, aptitude will use a simple heuristic to
    immediately resolve the dependencies of each package you flag for
    installation.  This is much faster than the built-in dependency
    resolver, but may produce suboptimal results or fail entirely in some
    scenarios.

#1079710#15
Date:
2024-08-26 18:55:25 UTC
From:
To:
IMHO updating systems ultimately is the job of dpkg, and unless I'm
throwing around various force-whatever options it doesn't matter *at
all* which tool I use to call "dpkg -i", as long as I do it at least
once per package and in roughly the correct order.

In any case this is just one example of how to get aptitude into a state
that it can't easily get out of and which exhibits this problem. There
are others. I've hit this multiple times during my 20 years of using
Debian with smaller conflict sets, but the time-64 transition is
annoying enough so I'm finally asking the maintainers to please fix it,
or at least add a workaround people can live with, as my C++ foo isn't
up to the task.

I'm not asking for another tool that can do the job better or differently.

My goal is to quickly resolve problems manually that aptitude's built-in
resolver cannot handle because it consistently tries to uninstall gnome
or wine-i386 when they happen to conflict with my self-built package,
five library dependency levels down.

That, or it fails to arrive at a solution in less than an hour and/or
asks me whether I want it to continue. Umpteen times.

The time-64 transition is *difficult*. It replaces 150+ libraries and
any conflict whatsoever can throw aptitude's resolvers into a tailspin.

It's trivial to discover exactly what's broken with aptitude. You press
"g" and then select "Close".

You can then use the list of packages with unresolved problems (it's
right at the top) to fix conflicts manually, the way you want to, until
the "real" resolver is again able to find a possible solution using less
than 100GB memory and/or less than five weeks' runtime.

If you never ended up in that kind of situation, consider yourself lucky.

Unfortunately, no it's not. This setting doesn't change aptitude's
behavior in this case.

=====

What I want is simple. I want to press "+" or "-" on a specific package
version, and I want this action to change the intended state of that
package *and nothing else*. If that results in ten other packages to be
uninstallable, that's on me.

Debian currently does not have an interactive tool that can do this.
IMHO it's important to fix this.

There'll always be intractable situations. Package dependency resolution
is NP-complete after all.

No, using the command line to add hints will not fix this. You want to
add every single time64 library until apt stumbles on the solution you
want? be my guest.