RPM Community Forums

Mailing List Message of <rpm-devel>

Transactionally Protected Package Management

From: Jeff Johnson <n3npq@mac.com>
Date: Thu 19 Nov 2009 - 19:51:17 CET
Message-id: <BD96A242-31C9-4666-830E-CF27D8411BA1@mac.com>
Now that F12 is released, its time to describe recent development
activities @rpm5.org.

Basically, the development goal is to add ACID (in the traditional
database sense) behavior to RPM package management to the greatest extent
that is feasible.

So the subject (abbreviated as "TPPM" or "RPM ACID") involves
logging all operations performed by RPM while installing so that the operations
can be committed or aborted through traditional 2PC (two phase commits)

Overall, there are 3 stages to TPPM development:

1) switching an rpmdb to a Berkeley DB "Transactional Data Store". FOr
descriptive puprposes I call this "database ACID" and
its exactly what Berkeley DB provides in its "Transactional Data Store".

2) extending Berkeley DB with abstract log events so that
the system calls (like writing file content) and scripts
that are run while installing are captured in a Berkeley DB
log. There are two types of additional operations performed by
RPM that need to be added to the transactional log:
    1) syscalls		RPM does ~20 system calls, like mkdir(2)
			and write(2), in order to install a package
    2) scripts		RPM runs %post et al scriptlets at all the usual
For descriptive purposes, the 1st class of operations will be called "syscall ACID"
and the 2nd class of operations will be called "scriptlet ACID".

3) adding secondary stores for file and package content that
are coupled into the log to reduce the size of the logs needed.

ATM, RPM cvs HEAD has largely achieved "database ACID", and both
"syscall ACID" and "scriptlet ACID" are prototyped, although the
abstract log events are not yet finalized (not even close yet).

What has not been attempted yet, is the 3rd task, creating
secondary stores for files from packages, and packages from repositories.
Basically all that is going to happen is to attach a UUID to
file/package content in a local directory, and save the UUID, not
the actual content, in a transactional log, thereby reducing
the size of the log that is needed.

The current timeline for completion is nominally the end-of-year 2009,
although that is likely hugely optimistic.

Opinions are most certainly welcomed.

And rpm5.org is a volunteer community effort, so any/all contributions will
be accomodated.

73 de Jeff

  • application/pkcs7-signature attachment: smime.p7s
Received on Thu Nov 19 19:51:50 2009
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.