]> git.donarmstrong.com Git - debian/debian-policy.git/blobdiff - policy.sgml
Breaks are supported in stable, so are now allowed in the archive
[debian/debian-policy.git] / policy.sgml
index 1b0751f0ac4d692b158301e82ff2c6d61b840294..c82ced09ac88648db0865099478b9601dbdaa601 100644 (file)
        system, but not every package we want to make accessible is
        <em>free</em> in our sense (see the Debian Free Software
        Guidelines, below), or may be imported/exported without
-       restrictions. Thus, the archive is split into the distribution
-       areas or categories based on their licenses and other restrictions.
+       restrictions. Thus, the archive is split into areas<footnote>
+         The Debian archive software uses the term "component" internally
+         and in the Release file format to refer to the division of an
+         archive.  The Debian Social Contract simply refers to "areas."
+         This document uses terminology similar to the Social Contract.
+       </footnote> based on their licenses and other restrictions.
       </p>
 
       <p>
       </p>
 
       <p>
-       The <em>main</em> category  forms the
-       <em>Debian GNU/Linux distribution</em>.
+       The <em>main</em> archive area forms the <em>Debian GNU/Linux
+       distribution</em>.
       </p>
 
       <p>
-       Packages in the other distribution areas (<tt>contrib</tt>,
+       Packages in the other archive areas (<tt>contrib</tt>,
        <tt>non-free</tt>) 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
       </sect>
 
       <sect id="sections">
-       <heading>Categories</heading>
+       <heading>Archive areas</heading>
 
        <sect1 id="main">
-         <heading>The main category</heading>
+         <heading>The main archive area</heading>
 
          <p>
            Every package in <em>main</em> must comply with the DFSG
        </sect1>
 
        <sect1 id="contrib">
-         <heading>The contrib category</heading>
+         <heading>The contrib archive area</heading>
 
          <p>
            Every package in <em>contrib</em> must comply with the DFSG.
        </sect1>
 
        <sect1 id="non-free">
-         <heading>The non-free category</heading>
+         <heading>The non-free archive area</heading>
 
          <p>
            Packages must be placed in <em>non-free</em> if they are
        <heading>Sections</heading>
 
        <p>
-         The packages in the categories <em>main</em>,
-         <em>contrib</em> and <em>non-free</em> are grouped further
-         into <em>sections</em> to simplify handling.
+         The packages in the archive areas <em>main</em>,
+         <em>contrib</em> and <em>non-free</em> are grouped further into
+         <em>sections</em> to simplify handling.
        </p>
 
        <p>
-         The category and section for each package should be
-         specified in the package's <tt>Section</tt> control record
-         (see <ref id="f-Section">).  However, the maintainer of the
-         Debian archive may override this selection to ensure the
-         consistency of the Debian distribution.  The
-         <tt>Section</tt> field should be of the form:
+         The archive area and section for each package should be
+         specified in the package's <tt>Section</tt> control record (see
+         <ref id="f-Section">).  However, the maintainer of the Debian
+         archive may override this selection to ensure the consistency of
+         the Debian distribution.  The <tt>Section</tt> field should be
+         of the form:
          <list compact="compact">
            <item>
                  <em>section</em> if the package is in the
-                 <em>main</em> category,
+                 <em>main</em> archive area,
            </item>
            <item>
-                 <em>segment/section</em> if the package is in
+                 <em>area/section</em> if the package is in
                  the <em>contrib</em> or <em>non-free</em>
-                 distribution areas.
+                 archive areas.
            </item>
          </list>
        </p>
        <p>
          The Debian archive maintainers provide the authoritative
          list of sections.  At present, they are:
-         <em>admin</em>, <em>comm</em>,
-         <em>devel</em>, <em>doc</em>,
-         <em>editors</em>, <em>electronics</em>, <em>embedded</em>,
-         <em>games</em>, <em>gnome</em>, <em>graphics</em>,
-         <em>hamradio</em>, <em>interpreters</em>, <em>kde</em>,
-         <em>libs</em>, <em>libdevel</em>, <em>mail</em>,
-         <em>math</em>, <em>misc</em>, <em>net</em>, <em>news</em>,
-         <em>oldlibs</em>,
-         <em>otherosfs</em>, <em>perl</em>, <em>python</em>,
-         <em>science</em>, <em>shells</em>,
-         <em>sound</em>, <em>tex</em>, <em>text</em>,
-         <em>utils</em>, <em>web</em>, <em>x11</em>.
+         <em>admin</em>, <em>cli-mono</em>, <em>comm</em>, <em>database</em>,
+         <em>devel</em>, <em>debug</em>, <em>doc</em>, <em>editors</em>,
+         <em>electronics</em>, <em>embedded</em>, <em>fonts</em>,
+         <em>games</em>, <em>gnome</em>, <em>graphics</em>, <em>gnu-r</em>,
+         <em>gnustep</em>, <em>hamradio</em>, <em>haskell</em>,
+         <em>httpd</em>, <em>interpreters</em>, <em>java</em>, <em>kde</em>,
+         <em>kernel</em>, <em>libs</em>, <em>libdevel</em>, <em>lisp</em>,
+         <em>localization</em>, <em>mail</em>, <em>math</em>, <em>misc</em>,
+         <em>net</em>, <em>news</em>, <em>ocaml</em>, <em>oldlibs</em>,
+         <em>otherosfs</em>, <em>perl</em>, <em>php</em>, <em>python</em>,
+         <em>ruby</em>, <em>science</em>, <em>shells</em>, <em>sound</em>,
+         <em>tex</em>, <em>text</em>, <em>utils</em>, <em>vcs</em>,
+         <em>video</em>, <em>web</em>, <em>x11</em>, <em>xfce</em>,
+         <em>zope</em>.
        </p>
       </sect>
 
          <heading>Prompting in maintainer scripts</heading>
          <p>
            Package maintainer scripts may prompt the user if
-           necessary. Prompting should be done by communicating
+           necessary. Prompting must be done by communicating
            through a program, such as <prgn>debconf</prgn>, which
            conforms to the Debian Configuration Management
-           Specification, version 2 or higher.  Prompting the user by
-           other means, such as by hand<footnote>
-                From the Jargon file: by hand 2. By extension,
-                writing code which does something in an explicit or
-                low-level way for which a presupplied library
-                (<em>debconf, in this instance</em>) routine ought
-                to have been available.
-            </footnote>, is now deprecated.
+           Specification, version 2 or higher.
+         </p>
+
+         <p>
+           Packages which are essential, or which are dependencies of
+           essential packages, may fall back on another prompting method
+           if no such interface is available when they are executed.
          </p>
 
          <p>
@@ -2446,6 +2451,15 @@ Package: libc6
          See <ref id="substvars"> for details.
        </p>
 
+       <p>
+         In addition to the control file syntax described <qref
+         id="controlsyntax">above</qref>, this file may also contain
+         comment lines starting with <tt>#</tt> without any preceding
+         whitespace.  All such lines are ignored, even in the middle of
+         continuation lines for a multiline field, and do not end a
+         multiline field.
+       </p>
+
       </sect>
 
       <sect id="binarycontrolfiles">
@@ -2574,6 +2588,14 @@ Package: libc6
            package control file when the source package has the same
            name and version as the binary package.
          </p>
+
+         <p>
+           Package names must consist only of lower case letters
+           (<tt>a-z</tt>), digits (<tt>0-9</tt>), plus (<tt>+</tt>)
+           and minus (<tt>-</tt>) signs, and periods (<tt>.</tt>).
+           They must be at least two characters long and must start
+           with an alphanumeric character.
+         </p>
        </sect1>
 
        <sect1 id="f-Maintainer">
@@ -4510,8 +4532,7 @@ Build-Depends: foo [!i386] | bar [!amd64]
          <prgn>dpkg</prgn> from upgrading or installing the package
          which declared such a conflict until the upgrade or removal
          of the conflicted-with package had been completed.  Instead,
-         <tt>Breaks</tt> may be used (once <tt>Breaks</tt> is supported
-         by the stable release of Debian).
+         <tt>Breaks</tt> may be used.
        </p>
       </sect>
 
@@ -5512,23 +5533,16 @@ libbar 1 bar1 (>= 1.0-1)
 
 
        <sect1 id="fhs">
-         <heading>File system Structure</heading>
+         <heading>File System Structure</heading>
 
          <p>
            The location of all installed files and directories must
-           comply with the File system Hierarchy Standard (FHS),
+           comply with the Filesystem Hierarchy Standard (FHS),
            version 2.3, with the exceptions noted below, and except
            where doing so would violate other terms of Debian
            Policy.  The following exceptions to the FHS apply:
 
             <enumlist>
-              <item>
-                <p>
-                  Legacy XFree86 servers are permitted to retain the
-                  configuration file location 
-                  <file>/etc/X11/XF86Config-4</file>.
-                </p>
-              </item>
               <item>
                 <p>
                   The optional rules related to user specific
@@ -5690,12 +5704,6 @@ rmdir /usr/local/share/emacs 2>/dev/null || true
            by any particular mail agents.  The use of the old
            location <file>/var/spool/mail</file> is deprecated, even
            though the spool may still be physically located there.
-           To maintain partial upgrade compatibility for systems
-           which have <file>/var/spool/mail</file> as their physical mail
-           spool, packages using <file>/var/mail</file> must depend on
-           either <package>libc6</package> (&gt;= 2.1.3-13), or on
-           <package>base-files</package> (&gt;= 2.2.0), or on later
-           versions of either one of these packages.
          </p>
        </sect1>
       </sect>
@@ -5935,13 +5943,6 @@ rmdir /usr/local/share/emacs 2>/dev/null || true
            <tt>K</tt> prefix, but they too are called with the single
            argument <tt>stop</tt>.
          </p>
-
-         <p>
-           Also, if the script name ends in <tt>.sh</tt>, the script
-           will be sourced in runlevel <tt>S</tt> rather than being
-           run in a forked subprocess, but will be explicitly run by
-           <prgn>sh</prgn> in all other runlevels.
-         </p>
        </sect1>
 
        <sect1>
@@ -6065,6 +6066,18 @@ test -f <var>program-executed-later-in-script</var> || exit 0
            script must behave sensibly and not fail if the
            <file>/etc/default</file> file is deleted.
          </p>
+
+         <p>
+           <file>/var/run</file> and <file>/var/lock</file> may be mounted
+           as temporary filesystems<footnote>
+               For example, using the <tt>RAMRUN</tt> and <tt>RAMLOCK</tt>
+               options in <file>/etc/default/rcS</file>.
+           </footnote>, so the <file>init.d</file> scripts must handle this
+           correctly. This will typically amount to creating any required
+           subdirectories dynamically when the <file>init.d</file> script
+           is run, rather than including them in the package and relying on
+           <prgn>dpkg</prgn> to create them.
+         </p>
        </sect1>
 
        <sect1>
@@ -8088,12 +8101,27 @@ http://localhost/doc/<var>package</var>/<var>filename</var>
        </p>
 
        <p>
-         Mailboxes are generally mode 660
-         <tt><var>user</var>:mail</tt> unless the system
-         administrator has chosen otherwise.  A MUA may remove a
-         mailbox (unless it has nonstandard permissions) in which
-         case the MTA or another MUA must recreate it if needed.
-         Mailboxes must be writable by group mail.
+         Mailboxes are generally either mode 600 and owned by
+         <var>user</var> or mode 660 and owned by
+         <tt><var>user</var>:mail</tt><footnote>
+           There are two traditional permission schemes for mail spools:
+           mode 600 with all mail delivery done by processes running as
+           the destination user, or mode 660 and owned by group mail with
+           mail delivery done by a process running as a system user in
+           group mail.  Historically, Debian required mode 660 mail
+           spools to enable the latter model, but that model has become
+           increasingly uncommon and the principle of least privilege
+           indicates that mail systems that use the first model should
+           use permissions of 600.  If delivery to programs is permitted,
+           it's easier to keep the mail system secure if the delivery
+           agent runs as the destination user.  Debian Policy therefore
+           permits either scheme.
+         </footnote>. The local system administrator may choose a
+         different permission scheme; packages should not make
+         assumptions about the permission and ownership of mailboxes
+         unless required (such as when creating a new mailbox).  A MUA
+         may remove a mailbox (unless it has nonstandard permissions) in
+         which case the MTA or another MUA must recreate it if needed.
        </p>
 
        <p>
@@ -8392,11 +8420,6 @@ name ["<var>syshostname</var>"]:
                  </list>
              </item>
 
-             <item>
-                 Speedo fonts must be placed in
-                 <file>/usr/share/fonts/X11/Speedo/</file>.
-             </item>
-
              <item>
                  Type 1 fonts must be placed in
                  <file>/usr/share/fonts/X11/Type1/</file>.  If font
@@ -8408,9 +8431,9 @@ name ["<var>syshostname</var>"]:
                  Subdirectories of <file>/usr/share/fonts/X11/</file>
                  other than those listed above must be neither
                  created nor used.  (The <file>PEX</file>, <file>CID</file>,
-                 and <file>cyrillic</file> directories are excepted for
-                 historical reasons, but installation of files into
-                 these directories remains discouraged.)
+                 <file>Speedo</file>, and <file>cyrillic</file> directories
+                 are excepted for historical reasons, but installation of
+                 files into these directories remains discouraged.)
              </item>
 
              <item>
@@ -8991,9 +9014,10 @@ install-info --quiet --remove /usr/share/info/foobar.info
        </p>
 
        <p>
-         Packages in the <em>contrib</em> or <em>non-free</em> categories
-         should state in the copyright file that the package is not part
-         of the Debian GNU/Linux distribution and briefly explain why.
+         Packages in the <em>contrib</em> or <em>non-free</em> archive
+         areas should state in the copyright file that the package is not
+         part of the Debian GNU/Linux distribution and briefly explain
+         why.
        </p>
 
        <p>
@@ -9014,8 +9038,8 @@ install-info --quiet --remove /usr/share/info/foobar.info
        <p>
          Packages distributed under the UCB BSD license, the Apache
          license (version 2.0), the Artistic license, the GNU GPL
-         (version 2 or 3), the GNU LGPL (versions 2, 2.1, or 3), and
-         the GNU FDL (version 1.2) should refer to the corresponding
+         (version 2 or 3), the GNU LGPL (versions 2, 2.1, or 3), and the
+         GNU FDL (versions 1.2 or 1.3) should refer to the corresponding
          files under <file>/usr/share/common-licenses</file>,<footnote>
            <p>
              In particular,
@@ -9026,8 +9050,9 @@ install-info --quiet --remove /usr/share/info/foobar.info
               <file>/usr/share/common-licenses/GPL-3</file>,
               <file>/usr/share/common-licenses/LGPL-2</file>,
               <file>/usr/share/common-licenses/LGPL-2.1</file>,
-              <file>/usr/share/common-licenses/LGPL-3</file>, and
-              <file>/usr/share/common-licenses/GFDL-1.2</file>
+              <file>/usr/share/common-licenses/LGPL-3</file>,
+              <file>/usr/share/common-licenses/GFDL-1.2</file>, and
+              <file>/usr/share/common-licenses/GFDL-1.3</file>
               respectively.
             </p>
           </footnote> rather than quoting them in the copyright