4.6.4. Distributions

The directory system described in the previous chapter is itself contained within distribution directories. Each distribution is actually contained in the pool directory in the top level of the Debian archive itself.

To summarize, the Debian archive has a root directory within a mirror site. For instance, at the mirror site ftp.us.debian.org the Debian archive itself is contained in /debian, which is a common location (another is /pub/debian).

A distribution comprises Debian source and binary packages, and the respective Sources and Packages index files, containing the header information from all those packages. The former are kept in the pool/ directory, while the latter are kept in the dists/ directory of the archive (for backwards compatibility).

4.6.4.1. Stable, testing, and unstable

There are always distributions called stable (residing in dists/stable), testing (residing in dists/testing), and unstable (residing in dists/unstable). This reflects the development process of the Debian project.

Active development is done in the unstable distribution (that’s why this distribution is sometimes called the development distribution). Every Debian developer can update their packages in this distribution at any time. Thus, the contents of this distribution change from day to day. Since no special effort is made to make sure everything in this distribution is working properly, it is sometimes literally unstable.

The The testing distribution distribution is generated automatically by taking packages from unstable if they satisfy certain criteria. Those criteria should ensure a good quality for packages within testing. The update to testing is launched twice each day, right after the new packages have been installed. See The testing distribution.

After a period of development, once the release manager deems fit, the testing distribution is frozen, meaning that the policies which control how packages move from unstable to testing are tightened. Packages which are too buggy are removed. No changes are allowed into testing except for bug fixes. After some time has elapsed, depending on progress, the testing distribution is frozen even further. Details of the handling of the testing distribution are published by the Release Team on debian-devel-announce. After the open issues are solved to the satisfaction of the Release Team, the distribution is released. Releasing means that testing is renamed to stable, and a new copy is created for the new testing, and the previous stable is renamed to oldstable and stays there until it is finally archived. On archiving, the contents are moved to archive.debian.org.

This development cycle is based on the assumption that the unstable distribution becomes stable after passing a period of being in testing. Even once a distribution is considered stable, a few bugs inevitably remain — that’s why the stable distribution is updated every now and then. However, these updates are tested very carefully and have to be introduced into the archive individually to reduce the risk of introducing new bugs. You can find proposed additions to stable in the proposed-updates directory. Those packages in proposed-updates that pass muster are periodically moved as a batch into the stable distribution and the revision level of the stable distribution is incremented (e.g., ‘6.0’ becomes ‘6.0.1’, ‘5.0.7’ becomes ‘5.0.8’, and so forth). Please refer to Special case: uploads to the stable and oldstable distributions for details.

Note that development in unstable during the freeze should not be continued as usual, as packages are still build in unstable, before they migrate to testing, thus unstable should only contain packages ment for testing. Thus only upload to unstable during freezes, if you are planning to request an unblock (or if the package is not in testing).

If you want to develop new stuff for after the freeze, upload to experimental instead.

4.6.4.2. More information about the testing distribution

Packages are usually installed into the testing distribution after they have undergone some degree of testing in unstable.

For more details, please see the The testing distribution.

4.6.4.3. Experimental

The experimental distribution is a special distribution. It is not a full distribution in the same sense as stable, testing and unstable are. Instead, it is meant to be a temporary staging area for highly experimental software where there’s a good chance that the software could break your system, or software that’s just too unstable even for the unstable distribution (but there is a reason to package it nevertheless). Users who download and install packages from experimental are expected to have been duly warned. In short, all bets are off for the experimental distribution.

These are the sources.list 5 lines for experimental:

  1. deb http://deb.debian.org/debian/ experimental main
  2. deb-src http://deb.debian.org/debian/ experimental main

If there is a chance that the software could do grave damage to a system, it is likely to be better to put it into experimental. For instance, an experimental compressed file system should probably go into experimental.

Whenever there is a new upstream version of a package that introduces new features but breaks a lot of old ones, it should either not be uploaded, or be uploaded to experimental. A new, beta, version of some software which uses a completely different configuration can go into experimental, at the maintainer’s discretion. If you are working on an incompatible or complex upgrade situation, you can also use experimental as a staging area, so that testers can get early access.

Some experimental software can still go into unstable, with a few warnings in the description, but that isn’t recommended because packages from unstable are expected to propagate to testing and thus to stable. You should not be afraid to use experimental since it does not cause any pain to the ftpmasters, the experimental packages are periodically removed once you upload the package in unstable with a higher version number.

New software which isn’t likely to damage your system can go directly into unstable.

An alternative to experimental is to use your personal web space on people.debian.org.