A bit off: So I prefer "original reason" way, which can be changed by the user later. Only explicit packages are important to the user, all others are needed to satisfy deps of explicit packages. So I prefer using the important word instead of reason (HoldPkgs are the most important packages.) So I'd prefer important = 0 <=> depend && !HoldPkg important = 1 <=> explicit && !HoldPkg important = 2 <=> HoldPkg; so I think HoldPkg should be stored in local db; and in sync db
Now I am afraid I lost you, I am not sure how this would be useful.
Well, this is not so important. 1. I tried to explain why I prefer the way described above (with no success :-P), I wanted to explain my "concept". So explicitly installed package means (for me) that user need this package, because he installed by hand (he mentioned in the target list); dependency package means, that pacman installed that "behind" the user, so it is needed to satisfy the dependencies of explicitly installed packages only, so they are not so important (they can be removed, as no longer needed by other packages). We need to decide that a package is explicit or not when it first appears in local db, and we keep this property during upgrades (I derived this rule from the current behaviour of -U; someone may prefer the following: when we mention the package in the target list in case of -S, -U then that means that user really need that package, so we can change the reason to explicit.) 2. I don't like the current HoldPkg implementation, this should be totally handled by libalpm IMHO. HoldPkg means (for me) that the package is really important; IMHO this should be recorded to localdb and to syncdb (e.g. current/glibc should be flagged as HoldPkg). So we may add HoldPkg property to reason (important) field to unify, but if you want to keep the current reason field, you may add a new HOLDPKG entry... (If user could change the reason field then he could also "set" HoldPkg "flag"; orphan remove ignores HoldPkg and explicitly installed packages, so it removes the unneeded (reason/important == 0) ones only; if a package is holdpkg then its reason==explicit/depend is not important...) Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/