Hello,

It took me some time to understand how APT computes priorities. Indeed,
there is an incoherence between the manpage and the actual behaviour,
that is very well illustrated by “apt-cache policy”. But I think APT's
behaviour is the most intuitive one – as long as it is correctly
documented –, and the manpage should be clarified. I have a patch for
that, that I shall submit when something is decided.

If I understood the two concurrent behaviours correctly, they consist
either in:
- for each single available package file, computing the priority, and
  letting the highest one win;
- for each available package version, computing the priority with the
  most precise, then first preference that applies, and letting the
  version with the highest single priority win.

I find several problems with the second behaviour:
- the rules that determine what preference apply can be confused:
  - is it the first rule that applies, stopping the evaluation, or the
    last one, that overrides the previous one?
  - does the default release take precedence or not over the
    user-defined preferences, as they are written in a different file?
- it is possible to define preferences that contradict each other, being
  very difficult to predict for a user.

The first behaviour seems more predictable to me. Indeed, when one
write a preference, for instance pinning packages from stable to the
priority 400, it will just apply, to all the packages that match. They
may get other priorities too, but they *will* get this one, as the user
defined it. No exception because this preference was not the last, the
first, the middle or the most precise one.

In fact, the behaviour I am describing may not be the exact current one
of APT, but here is how I would describe it: for each single available
package file, for each rule that matches it, create a priority, then let
the highest one win.


As these observations are quite subjective, here is another approach to
the problem. The user defines preferences, so I think they should be the
basic object to study (Debian's priorities are its users and free
software :-)). Are they:
1. values associated to indexes like (version, origin)? then, the last
   definition should overrides any previous one;
2. rules? then, the first matching one should stop the evaluation for a
   given version;
3. preferences (like human tastes)? then, they should either:
  3.1. all be taken into account, and the highest one win,
  3.2. add themselves (like in “if I like chocolate and cookies, then I
       love chocolate cookies”).
As they are called “preferences”, I think the third one is the most
appropriate, and that its second option is the one that allows for the
greatest flexibility.

-- 
Tanguy Ortolo

Attachment: signature.asc
Description: Digital signature

Reply via email to