On 16/01/11 07:34, Brendan Long wrote:
On 01/13/2011 12:12 PM, C Anthony Risinger wrote:
leverage a revisioning system for package files instead of tarballs, even if only locally. store metadata in a non-relational engine like couchdb (peer replicaition), or at least something like sqlite, for sane access.
A relational engine is actually really helpful for packages. A while ago I tried writing a package manager like pacman but using sqlite, and it's MUCH faster and still easy to use. The huge pauses every time you need metadata are incredibly annoying, and they completely disappear when you store things in a real database. The problem is that it has to be used by the official package manager, because having package data stored in two formats causes issues (because any time you use pacman, the other database doesn't know what changed).
It is not so much having the data in a real database, but not having it spread over hundreds of small files. This has been largely fixed in the developmental branch of pacman, which is a lot faster. It could probably be improved further, but the complaints to patches ratio is really poor.
Revisioning package files is also interesting; I don't see the point of doing it locally though. Once you have the package, installing it is fast. Checking if files are the same first seems like a waste of effort. There already is a mechanism for creating those .pacnew files (and I think auto-merging those into the existing file would mess with the "knowing what your system is doing" part of Arch). Using deltas for packages would be helpful though, especially in the case of huge packages with minor changes.
Using binary deltas has been available in pacman for ages. Arch just does not use them... Allan