Description

DebPool is intended to be a lightweight replacement for the full Debian archival scripts, in the tradition of debarchive and ?mini-dinstall, but using a pool layout and avoiding external dependencies.

The package is currently only available in the experimental archive, and unfortunately still contains some bugs.

To continue development, the DebPool - resurrected project was founded, see http://alioth.debian.org/projects/debpool. For a list of features which are planned to go into the next release, see DebPoolResurrected.

Collaboration

The debpool project's main location for collaboration is the debpool developer's mailing list.

There's also an IRC channel for the project (although it's mostly dormant still)

The new project uses a git repository.

In addition, there is a mailing list for commits made to the debpool repository, and there's also a CIA stats page for debpool.

Control flow

The packages are uploaded into an incoming directory with e.g. dupload. DebPool processes the incoming directory either periodically (in daemon mode) or on request (by calling debpool from the command line). DebPool uses a GNU dbm database to store information about packages and their versions which are available in the archive.

The main script is /usr/bin/debpool. It parses the command line parameters and loads the configuration options. It then executes basically two large loops: the first loop is processing all .changes files in the incoming directory and installs the necessary files in the pool directory hierarchy. Then, the second loop rebuilds the Packages[.gz] and Sources[.gz] index files in the dists directory hierarchy.

Installing new files

Suppose version 0.1-1 of the package foo for section main was uploaded to the incoming directory. Then, the following files are installed into pool/main/f/foo:

The source package:

 foo_0.1-1.diff.gz
 foo_0.1-1.dsc
 foo_0.1.orig.tar.gz

One .deb file for each architecture:

foo_0.1-1_amd64.deb
foo_0.1-1_i386.deb

Additionally, a .package file and a .source file are created:

foo_0.1-1.package
foo_0.1-1.source

They contain the meta data for the Packages and Sources index files below the dists hierarchy.

The .package file is created from contents of the .changes file and by querying the .deb file with dpkg --info. The .source file is created from contents of the .dsc file.

Recreating index files

The index files Packages[.gz] and Sources[.gz] are created by concatenating the .package and .source files from all packages installed in the pool.

Re-uploading packages

The normal behaviour of debpool is to reject packages whose version number is less or equal than the version currently in the archive. For private or testing archives, it can be handy to change this behaviour so that a version which is already uploaded can be overwritten. Note that in this case, automatic package upgrades with apt-get upgrade or apt-get dist-upgrade will not work because the version number has not changed! To configure this behaviour, uncomment and change the line

#$Options{'rollback'} = 0;

in /etc/debpool/Config.pm to

$Options{'rollback'} = 1;

This option also allows a "binary-only" upload, when a package was recompiled for another architecture.