PyRPM is an experimental project to look at rpm package management. It is a python module and a collection of scripts that provide similar functionality as rpm, yum and co. It is written from ground up and is implemented only in python. PyRPM project mainly deals with rpm packages, the rpm database rpmdb in /var/lib/rpm, comps.xml files and yum repositories (called repo data).
The reason for this project was to have a codebase with which we can test and verify rpm, rpmdb and yum itself and experiment with new features and implementations very quickly. Python is Red Hat's in-house defacto standard, so using python to do rapid prototyping was only logical.
The code itself is still very small and modular. We're constantly looking to improve the code, make it more production ready and remove duplicate functionality. Results from this project back to rpm and co are very important for us to improve the current available Linux tools and not rush with only adding another project for this. Next to working on good algorithms and sane implementations, most code is backed up with verify and testing scripts.
The PyRPM project is by no means meant to be a full replacement of rpm or yum. In its current state we feel confident that in general it won't break anything, but the code isn't production quality yet.
The check scripts can be safely used as they won't modify anything on your system, so feel free to use them at your convenience.
We personally have been using the yum replacement very extensively and even used it to update our own systems, but that's not even remotely a guarantee that it will work on your machine. It has only been run by a few people until now.
Using it to set up buildroots on the other hand should be very safe as this all happens in a very contained environment (sandbox principle).
Please let us know of any problems you encounter, if possible with some reproducible test cases so we can figure out what might have happened.
Here are some key features of "PyRPM":
Stable and reliable dependency resolver with efficient algorithms:
· Due to the easy nature of python being a rapid prototyping language and the modular design of pyrpm we were able to test and write several generations of dependency resolvers and over time optimize and improve the reliability of it to a point where we are very confident that the results are what a user would expect.
Handling of multilib systems:
· This is connected to the previous feature. Multilib systems are generally a lot trickier to handle than single arch systems. The algorithms used in pyrpm try to make intelligent choices as to which packages should be installed resp. how packages should be updated.
Ordering of all packages in a transaction:
· In order for a whole transaction to work reliable it is not enough to just order the installs and updates but also the erase operations properly. In pyrpm we are handling all operations and order them in a way that honors all requirements correctly, even for erases.
Smart like package selection:
· In pyrpm we are able to make package selections similar to the SMART package manager by trying to downgrade packages or even remove them if dependencies can't be resolved at all. The semi automatic removal is of course optional and not enabled by default.
Very easy to use scripts to setup changeroots:
· Using pyrpmkickstart you can easily use a typical anaconda kickstart file to do an automated install either on a disk, partition, diskimage or even simple changeroots.