This document summarises what I have found about settling a Debian repository.
I have taken care of providing the most correct information at the time of writing but if you find any inaccuracy, please, fix it.
For a quick and current HOWTO on setting up your own automatic Debian repository see [http://www.debian-administration.org/articles/286 this arcticle on reprepro]. The rest of this page is rather outdated, yet contains much useful information.
In [http://www.debian.org/doc/manuals/repository-howto/repository-howto.en.html Aaron Isotton how-to] two kinds of repositories are defined, the trivial repositories (where the user of the repository has to specify an exact path to the packages) and the automatic repositories (that mimic the official Debian repositories where only the base path, distribution and component have to be specified and the apt-get magic occurs). His how-to describes how to setup trivial repositories with dpkg-scansources and dpkg-scanpackages. Such a topic is also covered by [http://www.interq.or.jp/libra/oohara/apt-gettable/apt-gettable/ Oohara Yuuma how-to] and [http://www.debian.org/doc/manuals/apt-howto/ch-basico.html#s-dpkg-scanpackages apt how-to].
The settling of automatic repositories is covered by [http://familiasanchez.net/~roberto/howtos/debrepository Roberto Sanchez how-to] who gives relevant scripts. Pools are not covered there.
There are also packaged (or not) tools in Debian in order to perform the task:
?TableOfContents
The following paragraphs contain more info about these applications.
dak (Debian Archive Kit)
- Goals: Packaging of the tools handling the official Debian repositories.
- Pro: Real stuff.
- Cons: Depends on python and PostgreSQL (even if on an other host).
Package: http://packages.qa.debian.org/d/dak.html
- python
- postgresql (optional)
Distributions: [http://packages.debian.org/stable/devel/dak stable], [http://packages.debian.org/stable/devel/dak unstable]
Dependencies: http://packages.debian.org/unstable/devel/dak
- Automatic repositories: Yes
- Incoming mechanism: Yes
- ["Pool"]s: Yes
- GPG signing: Yes
reprepro (formerly known as mirrorer)
- Goals: Local Debian package repository storing files in a pool/ directory.
- Pro: Strict checking of what comes in, no database server needed.
- Cons: ?
Distributions: [http://packages.debian.org/stable/utils/reprepro stable], [http://packages.debian.org/testing/utils/reprepro testing], [http://packages.debian.org/unstable/utils/reprepro unstable]
Dependencies: http://packages.debian.org/unstable/utils/reprepro
- Automatic repositories: Yes
- Incoming mechanism: Yes
- Pools: Yes
- GPG signing: Yes
debpool
- Goals: Lightweight replacement for dak using a pool layout.
- Pro:
- No external dependencies.
- easy to use incoming mechanism
- standard repository (can be pinned)
- Cons:
- only available from experimental
not actively maintained, although there is a debpool resurrection project which didn't made any uploads so far (2008-06-19), but there [http://git.debian.org/?p=debpool/debpool.git seems to be development going on]
- no checking of older packages being replaced with new ones
- no notification of what is going on (no mails when new packages are added)
Distributions: [http://packages.debian.org/experimental/devel/debpool experimental]
Dependencies: http://packages.debian.org/experimental/devel/debpool
- perl
- gnupg (optional)
- Automatic repositories: Yes
- Incoming mechanism: Yes
- Pools: Yes
- GPG signing: Yes (with gnupg).
- Wiki page: ["debpool"]
debarchiver
- Goals: Make a simpler version of dak.
- Pro:
- easy to use incoming mechanism - even on remote systems - by using a cron-job
- packages can be moved into a distribution by
- reading the Distribution value from .changes file or
- directly putting the whole package into a distributions-incoming directory.
- standard repository (can be pinned)
- Cons:
- no Pool-architecture at the moment
- some useful checks are missing
- cleaning needs to be done manually
Distributions: [http://packages.debian.org/oldstable/devel/debarchiver oldstable], [http://packages.debian.org/stable/devel/debarchiver stable], [http://packages.debian.org/unstable/devel/debarchiver testing], [http://packages.debian.org/unstable/devel/debarchiver unstable]
Dependencies: http://packages.debian.org/unstable/devel/debarchiver
- adduser
- apt-utils (recommended) | dpkg-dev
- opalmod (Perl modules)
- gnupg (optional)
- Automatic repositories: Yes
- Incoming mechanism: Yes
Pools: No (but suggested somewhere at [http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=debarchiver BTS]).
- GPG signing: Yes (with gnupg, post-Sarge feature).
A [http://vipie.studentenweb.org/dev/debarchiver/ debarchiver how-to]. An other nice [http://debian.wgdd.de/debhowtos/howto-aptrep.de.html debarchiver how-to (in German)]. An [http://foss.stat.unipd.it/mediawiki/index.php/Debian_Mirror_Setup Italian howto] for local Debian package mirroring (similar to apt-proxy).
An [http://debian.wgdd.de/debian/ example of a repository] [http://debian.wgdd.de/repository produced with debarchiver].
mini-dinstall
- Goals: Miniature version of dak.
- Pro:
- Doesn't require a PostgreSQL database.
- small footprint
- Cons:
- produces trivial repositories (can't be pinned)
Distributions: [http://packages.debian.org/stable/devel/mini-dinstall stable], [http://packages.debian.org/testing/devel/mini-dinstall testing], [http://packages.debian.org/unstable/devel/mini-dinstall unstable]
Dependencies: http://packages.debian.org/unstable/devel/mini-dinstall
- apt-utils
- python2.3
- python-apt
- Automatic repositories: Yes (?)
- Incoming mechanism: Yes
- Pools: No
- GPG signing: Yes (external script and setup example provided in documentation)
apt-ftparchive
- Goals: Superset of dpkg-scanpackages and dpkg-scansources.
- Pro: Does not rely on any external programs aside from gzip.
- Cons:
Distributions: [http://packages.debian.org/oldstable/admin/apt-utils oldstable], [http://packages.debian.org/stable/admin/apt-utils stable], [http://packages.debian.org/testing/admin/apt-utils testing], [http://packages.debian.org/unstable/admin/apt-utils unstable], [http://packages.debian.org/experimental/admin/apt-utils experimental]
Dependencies: http://packages.debian.org/unstable/admin/apt-utils
- Automatic repositories: No
- Incoming mechanism: No
- Pools: No
- GPG signing: No
dpkg-scanpackages and dpkg-scansources
- Goals:
- Pro:
- Cons: Cannot create Release nor Contents files.
Distributions: [http://packages.debian.org/oldstable/utils/dpkg-dev oldstable], [http://packages.debian.org/stable/utils/dpkg-dev stable], [http://packages.debian.org/testing/utils/dpkg-dev testing], [http://packages.debian.org/unstable/utils/dpkg-dev unstable]
Dependencies: http://packages.debian.org/unstable/utils/dpkg-dev
- Automatic repositories: No
- Incoming mechanism: No
- Pools: No
- GPG signing: No
Related software
- netselect selects for you the fastest mirrors among the list you give and netselect-apt does it among all existing mirrors.
- apt-spy does something similar with a different method.
- dput uploads one or more Debian packages into a repository.
[http://elonen.iki.fi/code/parse-apt-files.inc parse-apt-files.inc] PHP-script by Jarno Elonen produces a nice [http://elonen.iki.fi/code/unofficial-debs/ XHTML-summary] of available packages in a repository - [http://debian.wgdd.de/debian/parse-apt-files.inc enhanced version] for special usage with (but not limited to) [#repository_debarchiver debarchiver]. There seems to be some [http://potatosalad.gotdns.com/2005/08/01/repository/ efforts] to develop a wordpress-plugin based on these scripts.