External dependency solvers in APT

Back in April I talked about me being in Paris, I returned in May but kept more or less silent about it.

Nothing has really changed since then, I just want to write down now how somebody can play with other solvers now before it hits possibly a bigger audience (in case someone actually reads changelogs or such silly stuff).

All you need is:

  • APT in a 0.8.16~ version (debian-experimental has them, ubuntu-oneric too)
  • apt-cudf from debian-experimental
  • an external solver like aspcud from debian-unstable/testing

And you are ready to have some fun, try e.g.
apt-get install awesome --solver aspcud

You will notice: It’s relatively slow, compared to the internal solver. It might not behave like you would expect the internal solver to behave in regards to pinning or alike.

Best example is APT’s own external solver ‘apt’ – yes, you can use the internal solver as an external solver in case you find another program implementing EDSP – which doesn’t implement pinning and a few other bits so far. You are right than you think that this one is mostly only useful for debugging. There is another interesting one: ‘dump’ – imagine what it does…

So, why is this useful you might ask: In case you find a dependency problem you can now dump this problem easily and run different solvers on it. You can also work on developing the next-generation hyper-intelligent solver and be able to use it in day-to-day situations with the tools you usually use. And as a bug-hunter, you can if you have such a dump reproduce the problem more easily and get your hands dirty while fixing the bug. So this EDSP thing is kind of technical preview. It’s not planed to drop the internal solver from APT now or in the near future, don’t worry. It’s mostly here to enable researchers and developers to play with new deployments in real world situations so that at the end they create something which can be used for implementations which can really be used by “normal” end-users.

(and its here to enable me to throw the sentence: “Heh, if you thing the apt solver is so dumb and you could do it so much better: Why don’t you do it for the benefit of all of us?” at everyone complaining without hard facts just because they think nobody listens who will hunt them down and force them to solve all these “utterly trivial problems” on their own. Yes, I am looking at YOU ! 😉 )


About DonKult

computer science student at the technical university of Darmstadt (Hesse, Germany, Europe, Earth) living in Erbach (Rheingau).
This entry was posted in Debian and tagged . Bookmark the permalink.

3 Responses to External dependency solvers in APT

  1. Pingback: Pietro Abate: apt-get with external solvers : call for testers | Linux-Support.com

  2. kernc says:

    emm, you say ‘apt’ external solver doesn’t respect APT::Solver::Strict-Pinning setting yet, right?
    is there any plans that it will in the future? how soon? 🙂

  3. DonKult says:

    What I meant is that this external ‘apt’ solver doesn’t handle pinning at all currently, which means that if you have e.g. experimental sources this solver will happily upgrade from these sources even though the internal solver wouldn’t do it because of your pinning (aka apt_preferences).
    It also doesn’t support automatically installed packages yet, so you loose that information.

    I intend to implement that someday, but more important stuff (in the end, this external ‘apt’ solver is just a toy) keeps distracting me: Multi-Arch (which only very recently is supported in CUDF and therefore in real external solvers based on it – and is a big topic in general) and debugging upgrade problems and/or fixing bugs uncovered by the extended testing by more and more users in the freeze now.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s