Log in

Post a comment - James Antill

Jun. 20th, 2007

07:25 am

A big problem is cascading dependencies, where upgrading app A pulls in an upgrade to library B which is not reliably backwards-compatible, so you have to upgrade app C to a version compiled against the new B - but you didn't want C to change.

The solution to this is to allow multiple parallel installations of packages, so that the two versions of B are not forced to conflict. This is useful for applications as well as libraries. If I can install the new version of A alongside the old version, then it's really easy to revert the upgrade - I just have to change a PATH or a symlink and restart it. I can also test the upgraded A (at least a little bit) before committing to running it. Package deinstallation then becomes a garbage collection job, instead of being crucial for the correctness of the package management tool.

OpenPKG sort-of does this, but it does so by allowing multiple installations of the package manager, so it's rather coarse-grained which means you lose sharing between apps whose version dependencies you want to decouple.

Nix claims to do exactly what I want, but I have not investigated it in detail...

Leave a comment:

No HTML allowed in subject


Notice! This user has turned on the option that logs your IP address when posting. 

(will be screened)