< Return to Video

Debian_dependency_resolution_in_polynomial_time.webm

  • Not Synced
    (Offscreen) So welcome to the talk from Niels
  • Not Synced
    about dependency resolution in
    polynomial time.
  • Not Synced
    (Neils) I'm Neils, I'm doing my second
    talk today.
  • Not Synced
    This time about something slightly
    more technical.
  • Not Synced
    I wanted to do dependency resolution
    in deterministic polynomial time,
  • Not Synced
    which is what this is all about.
  • Not Synced
    I didn't get as far with this as I wanted.
  • Not Synced
    I wanted to have a tool ready and have
    some results, which I didn't quite finish.
  • Not Synced
    So these will be my findings work in
    progress notes.
  • Not Synced
    We have six topics I have to cover.
  • Not Synced
    A quick introduction.
  • Not Synced
    Then something about the hard problem.
  • Not Synced
    Then the part the part where it actually
    turns out to be highly tractable
  • Not Synced
    in practice, if you don't think too much
    about it.
  • Not Synced
    And then there is some installing,
    upgrading, and installing again
  • Not Synced
    for how to improve your solvers.
  • Not Synced
    Starting with introduction.
  • Not Synced
    I'm hoping mostly to debunk the myth
    that dependency resolution is a very
  • Not Synced
    hard problem that we cannot solve,
  • Not Synced
    and we should remove packages in the hopes
    that they will somehow keep the archive
  • Not Synced
    from exploding, and the dependency
    resolvers to break, and apt to die,
  • Not Synced
    and god knows what.
  • Not Synced
    I've been working on Britney, which is a
    different problem to solve, but it
  • Not Synced
    involves the same techniques, or uses some
    of the same techniques.
  • Not Synced
    Some will be directly applicable to apt,
    some will not.
  • Not Synced
    There's not a one size fits all solution, sorry.
  • Not Synced
    And I much less haven't wrote it yet,
    even if there was.
  • Not Synced
    So defining the problem.
  • Not Synced
    When you try to install a package on your
    system,
  • Not Synced
    there's actually two problems
    being solved.
  • Not Synced
    One is the part where apt figures out if I
    have to install Eclipse.
  • Not Synced
    You'll be needing a lot of Java packages,
    you'll be needing a lot of other stuff.
  • Not Synced
    And so it figures out which packages are
    needed for this to make sense.
  • Not Synced
    The separate part of the problem,
    the second problem is,
  • Not Synced
    once you have this list, they have to be
    unpackaged and configured in a certain
  • Not Synced
    order for this all to make sense.
  • Not Synced
    They are in theory two distinct problems.
  • Not Synced
    I'll be talking about the first problem,
  • Not Synced
    because that's actually
    dependency resolution.
  • Not Synced
    The other thing is just ordering.
  • Not Synced
    The ordering thing is certainly also very
    important part.
  • Not Synced
    I don't want to dismiss that, it's just
  • Not Synced
    it is in fact theoretically a polynomial
    time problem.
  • Not Synced
    So to solve the ordering problem, you
    basically compute all the action-
  • Not Synced
    Given a set of actions that need
    to be done,
  • Not Synced
    then there are some constraints between
    some of them,
  • Not Synced
    like you unpack things before you
    configure it.
  • Not Synced
    Maybe you deconfigure something else
    before that.
  • Not Synced
    So you end up with a list of partial ??
    constraints.
  • Not Synced
    From that you build a graph with ordering.
  • Not Synced
    It's fairly simple to do, in practice,
    if you have the right tools for it.
  • Not Synced
    Then without cycles, this is a trivial
    things where it just orders it
  • Not Synced
    and gives you this is the order,
    go fix.
  • Not Synced
    When there's cycles you will get a single
    action consisting of multiple things
  • Not Synced
    to do at the same time, which is really
    impossible to do.
  • Not Synced
    It turns out that the way we defined this
    whole thing,
  • Not Synced
    if you have a package that does not have a
    post install script,
  • Not Synced
    it does not need to be configured separately.
  • Not Synced
    That means that it's just unpacked or
    not unpacked.
  • Not Synced
    That tends to break most cylcles.
  • Not Synced
    If you want, there's problems with
    ordering constraints.
  • Not Synced
    Help us to find a way to get rid of most
    of the post install scripts,
  • Not Synced
    such as the ones just running lvconfig
    and nothing else.
  • Not Synced
    That could solve some of the cycles,
  • Not Synced
    and otherwise it's just feeding it to dpkg
    and it works.
  • Not Synced
    If you have a cycle, it's a separate
    problem fixing that.
  • Not Synced
    I won't be covering that.
  • Not Synced
    As I said, the runtime is polynomial.
  • Not Synced
    It's something like the size of the
    package, a regular graph.
  • Not Synced
    Which is fairly polynomial.
  • Not Synced
    This even covers finding cycles.
  • Not Synced
    Again breaking cycles is just removing
    post install scripts.
  • Not Synced
    And of course if you think this is too
    simple,
  • Not Synced
    you can always implement more features
    on top of it,
  • Not Synced
    such as trying to optimize for minimal
    downtime of services and all that.
  • Not Synced
    You can make any trivial problem very hard
    very soon with that.
Title:
Debian_dependency_resolution_in_polynomial_time.webm
Video Language:
English
Team:
Debconf
Project:
2015_debconf15

English subtitles

Incomplete

Revisions Compare revisions