2. The Debian Archive — Debian Policy Manual v4.7.4.1 (original) (raw)

The Debian system is maintained and distributed as a collection of_packages_. Since there are so many of them (currently well over 15000), they are split into sections and given priorities to simplify the handling of them.

The effort of the Debian project is to build a free operating system, but not every package we want to make accessible is free in our sense (see the Debian Free Software Guidelines, below), or may be imported/exported without restrictions. Thus, the archive is split into areas [1] based on their licenses and other restrictions.

The aims of this are:

The main archive area forms the Debian distribution.

Packages in the other archive areas (non-free-firmware,contrib, non-free) are not considered to be part of the Debian distribution, although we support their use and provide infrastructure for them (such as our bug-tracking system and mailing lists). This Debian Policy Manual applies to these packages as well.

2.1. The Debian Free Software Guidelines

The Debian Free Software Guidelines (DFSG) form our definition of “free software”. These are:

  1. Free Redistribution
    The license of a Debian component may not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license may not require a royalty or other fee for such sale.
  2. Source Code
    The program must include source code, and must allow distribution in source code as well as compiled form.
  3. Derived Works
    The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
  4. Integrity of The Author’s Source Code
    The license may restrict source-code from being distributed in modified form only if the license allows the distribution of “patch files” with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software. (This is a compromise. The Debian Project encourages all authors to not restrict any files, source or binary, from being modified.)
  5. No Discrimination Against Persons or Groups
    The license must not discriminate against any person or group of persons.
  6. No Discrimination Against Fields of Endeavor
    The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
  7. Distribution of License
    The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
  8. License Must Not Be Specific to Debian
    The rights attached to the program must not depend on the program’s being part of a Debian system. If the program is extracted from Debian and used or distributed without Debian but otherwise within the terms of the program’s license, all parties to whom the program is redistributed must have the same rights as those that are granted in conjunction with the Debian system.
  9. License Must Not Contaminate Other Software
    The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be free software.
  10. Example Licenses
    The “GPL,” “BSD,” and “Artistic” licenses are examples of licenses that we consider free.

2.2. Archive areas

2.2.1. The main archive area

The main archive area comprises the Debian distribution. Only the packages in this area are considered part of the distribution. None of the packages in the main archive area require software outside of that area to function. Anyone may use, share, modify and redistribute the packages in this archive area freely [2].

Every package in main must comply with the DFSG (Debian Free Software Guidelines). [3]

In addition, the packages in main

If a source package is in the main archive area, then at least one of its binary packages must be in the main archive area, and each of the remaining packages must be in either the main or contrib archive area. Each binary package’s archive area is indicated by its Sectionfield: see Sections.

Source packages in main with a mixture of main and contrib binary packages are more complex for archive tooling to handle, and therefore should be limited to situations where it would be inconvenient to split the source package. If it is straightforward to split the source package into a main part and a contrib part that are built separately, then those parts should be represented as separate source packages.

When a main source package has a mixture of main and contrib binary packages, the source package and the main binary packages must follow the requirements for main packages, but the contrib binary packages may follow the weaker requirements for contrib packages. In particular, source packages in main must not have build dependencies outside main, but the contrib binary packages may have runtime dependencies outside_main_.

2.2.2. The non-free-firmware archive area

The non-free-firmware archive area contains packages providing firmware needed to initialize, use or keep updated hardware required by our users, typically necessary for important functions to be available (i.e. wireless network connectivity) or for fixing security defects in hardware (i.e. CPU microcode updates). Packages in this archive may not comply with all of the policy requirements in this manual due to lack of source code availability, restrictions on modification or other limitations.

Packages in non-free-firmware

2.2.3. The contrib archive area

The contrib archive area contains supplemental packages intended to work with the Debian distribution, but which require software outside of the distribution to either build or function.

Every package in contrib must comply with the DFSG.

In addition, the packages in contrib

Examples of packages which would be included in contrib are:

If a source package is in the contrib archive area, then each of the binary packages that it produces must also be in the contrib archive area.

2.2.4. The non-free archive area

The non-free archive area contains supplemental packages intended to work with the Debian distribution that do not comply with the DFSG or have other problems that make their distribution problematic. They may not comply with all of the policy requirements in this manual due to restrictions on modifications or other limitations.

Packages must be placed in non-free if they are not compliant with the DFSG or are encumbered by patents or other legal issues that make their distribution problematic.

In addition, the packages in non-free

If a source package is in the non-free archive area, then each of the binary packages that it produces must also be in the non-free archive area.

Every package must be accompanied by a verbatim copy of its distribution license(s) in the file /usr/share/doc/PACKAGE/copyright.

The copyright information for files in a package must be copied verbatim into /usr/share/doc/PACKAGE/copyright, when all of the following hold:

  1. the distribution license for those files requires that copyright information be included in all copies and/or binary distributions;
  2. the files are shipped in the binary package, either in source or compiled form; and
  3. the form in which the files are present in the binary package does not include a plain text version of their copyright notices.

Thus, the copyright information for files in the source package which are only part of its build process, such as autotools files, need not be included in /usr/share/doc/PACKAGE/copyright, because those files do not get installed into the binary package. Similarly, plain text files which include their own copyright information and are installed into the binary package unmodified need not have that copyright information copied into /usr/share/doc/PACKAGE/copyright

However, the copyright notices for any files which are compiled into the object code shipped in the binary package must all be included in/usr/share/doc/PACKAGE/copyright when the license requires that copyright information be included in all copies and/or binary distributions, as most do. [5]

See Copyright information for further details.

We reserve the right to restrict files from being included anywhere in our archives if

Programs whose authors encourage the user to make donations are fine for the main distribution, provided that the authors do not claim that not donating is immoral, unethical, illegal or something similar; in such a case they must go in non-free.

Packages whose copyright permission notices (or patent problems) do not even allow redistribution of binaries only, and where no special permission has been obtained, must not be placed on the Debian FTP site and its mirrors at all.

Note that under international copyright law (this applies in the United States, too), no distribution or modification of a work is allowed without an explicit notice saying so. Therefore a program without a copyright notice is copyrighted and you may not do anything to it without risking being sued! Likewise if a program has a copyright notice but no statement saying what is permitted then nothing is permitted.

Many authors are unaware of the problems that restrictive copyrights (or lack of copyright notices) can cause for the users of their supposedly-free software. It is often worthwhile contacting such authors diplomatically to ask them to modify their license terms. However, this can be a politically difficult thing to do and you should ask for advice on the debian-legal mailing list first, as explained below.

When in doubt about a copyright, send mail todebian-legal@lists.debian.org. Be prepared to provide us with the copyright statement. Software covered by the GPL, public domain software and BSD-like copyrights are safe; be wary of the phrases “commercial use prohibited” and “distribution restricted”.

2.4. Sections

The packages in the archive areas main, non-free-firmware, _contrib_and non-free are grouped further into sections to simplify handling.

The archive area and section for each package should be specified in the package’s Section control field (seeSection). However, the maintainer of the Debian archive may override this selection to ensure the consistency of the Debian distribution. The Section field should be of the form:

The Debian archive maintainers provide the authoritative list of sections. At present, they are: admin, cli-mono, comm, database, debug, devel, doc, editors, education, electronics, embedded, fonts, games, gnome, gnu-r, gnustep, graphics, hamradio, haskell, httpd, interpreters, introspection, java, javascript, kde, kernel, libdevel, libs, lisp, localization, mail, math, metapackages, misc, net, news, ocaml, oldlibs, otherosfs, perl, php, python, ruby, rust, science, shells, sound, tasks, tex, text, utils, vcs, video, web, x11, xfce, zope. The additional section debian-installer contains special packages used by the installer and is not used for normal Debian packages.

For more information about the sections and their definitions, see thelist of sections in unstable.

2.5. Priorities

Each package must have a priority value, which is set in the metadata for the Debian archive and is also included in the package’s binary control (see Priority), .dsc and .changes files. This information is used to control which packages are included in standard or minimal Debian installations.

Starting with dpkg version 1.22.13, the Priority of a binary package is set to optional unless specified otherwise in the source or its binary stanza in the source package template control file. Therefore, explicitly specifying Priority as optional may be omitted.

Most Debian packages will have a priority of optional. Priority levels other than optional are only used for packages that should be included by default in a standard installation of Debian.

The priority of a package is determined solely by the functionality it provides directly to the user. The priority of a package should not be increased merely because another higher-priority package depends on it; instead, the tools used to construct Debian installations will correctly handle package dependencies. In particular, this means that C-like libraries will almost never have a priority above optional, since they do not provide functionality directly to users. However, as an exception, the maintainers of Debian installers may request an increase of the priority of a package to resolve installation issues and ensure that the correct set of packages is included in a standard or minimal install.

The following priority levels are recognized by the Debian package management tools.

required

Packages which are necessary for the proper functioning of the system (usually, this means that dpkg functionality depends on these packages). Removing a required package may cause your system to become totally broken and you may not even be able to use dpkgto put things back, so only do so if you know what you are doing.

Systems with only the required packages installed have at least enough functionality for the sysadmin to boot the system and install more software.

important

Important programs, including those which one would expect to find on any Unix-like system. If the expectation is that an experienced Unix person who found it missing would say “What on earth is going on, where is foo?”, it must be an important package. [6]Other packages without which the system will not run well or be usable must also have priority important. This does _not_include Emacs, the X Window System, TeX or any other large applications. The important packages are just a bare minimum of commonly-expected and necessary tools.

standard

These packages provide a reasonably small but not too limited character-mode system. This is what will be installed by default if the user doesn’t select anything else. It doesn’t include many large applications.

Two packages that both have a priority of standard or higher must not conflict with each other.

optional

This is the default priority for the majority of the archive. Unless a package should be installed by default on standard Debian systems, it should have a priority of optional. Packages with a priority of optional may conflict with each other.

extra

This priority is deprecated. Use the optional priority instead. This priority should be treated as equivalent tooptional.

The extra priority was previously used for packages that conflicted with other packages and packages that were only likely to be useful to people with specialized requirements. However, this distinction was somewhat arbitrary, not consistently followed, and not useful enough to warrant the maintenance effort.