The Voodoo Package Manager

[Requirements] [Introduction] [Internals] [Status] [Documentation] [Todo] [Downloads] [Installation] [CVS] [Contact] [Credits]


The Voodoo Package Manager aims to keep track of all your packages that you downloaded of the web or through cvs, by tracing your install script for new or modified files.


Credit is due to Neils Provos who wrote the Systrace application and on which a lot of the code in this project is based, and to which this project wouldn't have gotten off the ground.


Although this project is at a very early development stage I have gotten the the call back mechanism working, and I can install, upgrade, erase and perform limited querying (view installed files / view all packages installed with voodoo / view the XML file used to store the information about the package / and user defined XPath queries) on packages.



This project intends to develop a package manager that will be similar in use to rpm, but instead of using rpmfiles voodoo will be able to install packages straight out of CVS or downloaded in a source tarball. It does this by reading variables out of the Makefile to find out the name of the package, version among others and then tracing the install script for any modification to the file system and storing these changes into an XML file which then it stores in a central database.

How It Works:

I have modified the user land tools for the Systrace patch in order to provide a library that provides a call back mechanism whenever a system call is made. Using this call back mechanism I can trace all the files being created by the install script for the package being installed, and then I can store the filename and any other information I can get my hands on like if the file is being created, if it is overriding another file, etc. in a XML file using the Xerces C++ library.

I store all these XML files in Berkeley DB XML so that I can query all the packages installed using the Voodoo Package Manager at a later date to see what I have installed on my system (this is the main motivation behind the project).

The configuration for the above step in stored in a XML file that I use to specify what type of package I am installing - later on I hope to support Python and Perl packages using just a modified configuration which the XML structure allows for. By using the "--bsys" switch users can tell voodoo to execute a different set of install scripts in order to install a non-gnu package successfully.

To uninstall a package I will get the corresponding XML file out of the database and apply a XSL transform on it to produce a temporary shell script which I run and this shell script simple deletes all the files belong to the package in question.

Querying a package is done by querying the Berkeley DB XML database with their XPath implementation which can tell you all the files belonging to the package and what packages you have installed using Voodoo.

Future work and known problems:


Warning: the last step in installation of this package is required and different to the normal process of building a package.

The last step is needed to tell the voodoo executable where the uninstalled (has of yet) configuration files are located.



The best source of information is by installing the package and then running voodoo -h and reading the How it works section of this web page.

Latest Official Release

The Voodoo Package Manager Download Area at or...


Note that the CVS repository of this project is outdated and in a bit of a mess. The reason for this is that I do most of the development for this project at home where I don't have Internet access and a simple script I wrote to update the SourceForge CVS repository for this project failed miserably due to a bug and I am now having problems finding what kind of status the CVS repository is in.

So in a Nutshell, DO NOT go near the CVS repository for this project, until I get it sorted out.

Contacting the Author

If you have any problems using this software or any queries please contact me on
My personal web page, if you are very bored. Logo