Debian Developer's Reference - chapter 3
The Debian Archive


3.1 Overview

The Debian GNU/Linux distribution consists of a lot of Debian packages (.deb's, currently more than 1000) and a few additional files (documentation, installation disk images, etc.).

Here is an example directory tree of a complete Debian distribution:

	    main/
	    main/binary-all/
	    main/binary-all/admin/
	    main/binary-all/base/
	    main/binary-all/comm/
	    main/binary-all/devel/
	                    ...
	    main/binary-i386/
	    main/binary-m86k/
	         ...
	    main/source/
	    main/disks-i386/
	    main/disks-m68k/
	         ...
	    
	    contrib/
	    contrib/binary-all/
	    contrib/binary-i386/
	    contrib/binary-m86k/
	            ...
	    contrib/source/
	    
	    non-free/
	    non-free/binary-all/
	    non-free/binary-i386/
	    non-free/binary-m86k/
	             ...
	    non-free/source/
	  

As you can see, the top-level directory of the distribution contains three directories, namely main, contrib, and non-free. These directories are called sections.

In each section, there is a directory with the source packages (source), a directory for each supported architecture (binary-i386, binary-m86k, etc.), and a directory for architecture independent packages (binary-all).

The main section contains additional directories which holds the disk images and some essential pieces of documentation required for installing the Debian distribution on a specific architecture (disks-i386, disks-m68k, etc.).

The binary and source directories are divided further into sub-sections.


3.2 Sections

The main section is what makes up the Debian GNU/Linux distribution. This is because the packages in the other two sections do not fully comply with all our guidelines.

For example, every package in the main distribution must fully comply with the Debian Free Software Guidelines (DFSG) and with all other policy requirements as described in the Debian Policy Manual. (The DFSG is our definition of ``free software.'' Check out the Debian Policy Manual for details.)

The packages which do not apply to the DFSG are placed in the non-free section. These packages are not considered as part of the Debian distribution, though we support their use, and we provide infrastructure (such as our bug-tracking system and mailing lists) for non-free software packages.

Packages in the contrib section have to apply to the DFSG, but fail other requirements.

(The Debian Policy Manual contains a more exact definition of the three sections. This is just meant to be an introduction.)

The separation of the three sections at the top-level of the archive is important for all people who want to distribute Debian, either via FTP servers on the Internet or on CD-ROMs: by distributing only the main and contrib sections, one can avoid any legal risks, since some packages in the non-free section do not allow commercial distribution, for example.

On the other hand, a CD-ROM vendor could easily check the individual package licenses of the packages in non-free and include as many on the CD-ROMs as he's allowed. (Since this varies from vendor to vendor very much, this job can't be done by the Debian developers.)


3.3 Architectures

In the first days, the Linux kernel was only available for the Intel i386 (or greater) platforms, and so was Debian. But when Linux became more and more popular, the kernel was ported to other architectures, too.

The Linux 2.0 kernel supports Intel, DEC Alphas, SUN Sparcs, M68000 machines (like Atari and Amiga), MIPS, and PowerPC.

Debian GNU/Linux 1.3 is only available for Intel platforms. One of the goals for Debian 2.0 is to support some of the other architectures, too.


3.4 Sub sections

The sections main, contrib, and non-free are split into sub sections, to simplify the installation process and the maintainance of the archive.


3.5 Packages

There are two types of Debian packages, namely source and binary packages.

Source packages consist of either two or three files: a .dsc file, and either one .tar.gz file or a .orig.tar.gz and a .diff.gz file.

If a package is developed specially for Debian and is not distributed outside of Debian, there is just one .tar.gz file which contains the sources of the program.

If a package is distributed elsewhere too, the .orig.tar.gz file stores the so-called upstream source code, that is the source code that's distributed from the upstream maintainer (author). In this case, the .diff.gz contains the changes made by the Debian maintainer.

The .dsc lists all components of the source package together with checksums (md5sums) and some additional info about the package (maintainer, version, etc.).


3.6 Distribution directories

If you have a look at the Debian FTP server or one of its mirrors, you'll discover that there is one additional directory level on top of the directory tree, as described in the previous chapter. These directories are the distribution directories.

There is always a distribution called stable and one called unstable. This reflects the development process of the Debian project:

The ``development'' is done in the unstable distribution (that's why this distribution is sometimes called development distribution). Every Debian developer can update his/her packages in this distribution at any time. Thus, the contents of this distribution changes from day to day and since no special effort is done to test this distribution it's sometimes ``unstable.''

After about two months of development, the unstable distribution is copied in a new distribution directory, called frozen. After that, no changes are allowed to the frozen distribution, except bug fixes. (That's why it's called ``frozen.'')

After another month or a little longer, the frozen distribution is renamed to stable, overriding the old stable distribution, which is removed at that time.

This development cycle is based on the assumption, that the once `unstable' distribution finally becomes `stable' after passing one month of testing. Unfortunately, a few bugs still remain--that's why the stable distribution is updated every few weeks. However, these updates are tested very carefully and have to be acknowledged individually to reduce the risk of introducing new bugs.

Note, that development is continued during the ``freeze'' period, since a new ``unstable'' distribution will be created at that time.

In summary, there is always a stable and an unstable distribution available and the frozen distribution shows up for a month from time to time.


3.7 Release code names

Every released Debian distribution has a code name: Debian 1.1 is called buzz, Debian 1.2 rex, Debian 1.3 bo, Debian 2.0 hamm, etc.

Since the Debian has an open development (i.e. everyone can participate and follow the development) even the ``development versions'' (unstable) are distributed via the Internet on the Debian FTP server. This FTP server is mirrored by lots of other systems. Thus, if we'd call the directory which contains the development version simply `unstable', then we would have to rename it to `stable' when the version is released, which would cause all FTP mirrors to re-get the whole distribution (which is already very large!).

On the other hand, if we would call the distribution directories Debian-x.y from the beginning, people would think that Debian release x.y is available. (This happened in the past, where a CD-ROM vendor built a Debian 1.0 CD-ROM based on a pre-1.0 development version. That's the reason why the first official Debian release was 1.1, and not 1.0.)

Thus, the names of the distribution directories in the archive should stay the same during the development period and after the release but there may be symbolic links, which can be changed.

That's why the distribution directories use the code names and there are symbolic links stable, unstable, frozen, etc. which point to the appriopriate release directories.


Debian Developer's Reference - Copyright ©1997,1998 Christian Schwarz.
Contents; next; back.
version 2.4.1.2, 14 April 1998
Christian Schwarz schwarz@debian.org
based on earlier documents by Ian Jackson ijackson@gnu.ai.mit.edu