[packagekit] Semantic issues with GetDeps (and other interface functions)

Tom Parker palfrey at tevp.net
Fri Aug 31 13:16:37 PDT 2007


Summary: Giving a simple package_id-specified list of dependencies is 
non-trivial (plus other interface semantic issues)

Got a problem while thinking about how to build GetDeps. For .deb's, we 
can have many "dependancies". Some are "Depends", but then we've got

* "Pre-Depends" - like Depends, but IIRC is more of a hint to the setup 
bits to do the *whole* process for Pre-Depends packages before starting 
to install this package.
* "Suggests" - "You probably want this package"
* "Recommends" - "Adding this package will help"
* "Conflicts" - "Won't work with that package"
* "Replaces" - "Both can be installed at the same time, but only if you 
do this one this second and it'll override some stuff that the other one 
would normally do"

(Some of that might be a bit off, need to re-read the Debian Packaging 
Policy document, but you get the idea)

Oh, and then they're all potentially versioned ("This applies to all 
versions equal to, less than, greater than, etc") and there can be many 
options ("You need at least one of these"), so a single 
Depends/Suggests/etc may give you a list of packages (especially once we 
get into funny business like virtual packages).

I have no idea how much this sort of thing happens with rpm's or any 
other package formats, but I don't have any bright ideas offhand about 
how to fix this. Current versions of aptitude (my current package 
management frontend of choice) actually give you multiple options for 
resolving dependencies, which may well include removing or upgrading 
various packages. It's even got a nifty little points scheme for giving 
you in turn the sets of changes that will change your system the least.

Other related issues: should searches provide only one version of a 
named package? My system (admittedly I've gone a bit overboard with the 
apt-pinning) can end up with 4 or more versions of particular packages, 
all with differing dependencies (and potentially *slightly* different 
descriptions).

Something else: Are the searches case dependant?

I think that's everything I can think of offhand, but I'm sure more 
thoughts will come to mind.

Ideas anyone?

Tom



More information about the PackageKit mailing list