chiark / gitweb /
adapt script to local context, strip out useless -V option too
[developers-reference.git] / developers-reference.sgml
index e06eef8147f139f26529fc1d13b4f3e011befad8..6ffa1bac9fcb450ea0d876a5b7e52cc1d1e00199 100644 (file)
@@ -6,7 +6,7 @@
   <!entity % commondata  SYSTEM "common.ent" > %commondata;
 
   <!-- CVS revision of this document -->
-  <!entity cvs-rev "$Revision: 1.136 $">
+  <!entity cvs-rev "$Revision: 1.144 $">
   <!-- if you are translating this document, please notate the CVS
        revision of the developers reference here -->
   <!--
 
       <copyright>
        <copyrightsummary>
-copyright &copy;1998&mdash;2002 Adam Di Carlo</copyrightsummary>
+copyright &copy; 1998&mdash;2002 Adam Di Carlo</copyrightsummary>
        <copyrightsummary>
-copyright &copy;2002 Raphaël Hertzog</copyrightsummary>
+copyright &copy; 2002 Raphaël Hertzog</copyrightsummary>
        <copyrightsummary>
-copyright &copy;1997, 1998 Christian Schwarz</copyrightsummary>
+copyright &copy; 1997, 1998 Christian Schwarz</copyrightsummary>
        <p>
 This manual is free software; you may redistribute it and/or modify it
 under the terms of the GNU General Public License as published by the
@@ -397,7 +397,7 @@ the following steps:
            <item>
 Orphan all your packages, as described in <ref id="orphaning">.
            <item>
-Send an email about how you are leaving the project to
+Send an email about why you are leaving the project to
 &email-debian-private;.
            <item>
 Notify the Debian key ring maintainers that you are leaving by
@@ -1120,14 +1120,15 @@ if they respect themselves all the criteria);
 The scripts are generating some output files to explain why some packages
 are kept out of testing. They are available at <url
 id="&url-testing-maint;">. Alternatively, it is possible to use
-the <prgn>grep-excuses</prgn> program part of the
-<package>devscripts</package> package. It can be easily put in a crontab
+the <prgn>grep-excuses</prgn> program which is in the
+<package>devscripts</package> package. It can be easily put in a
+<manref name="crontab" section="5">
 to keep someone informed of the progression of his packages in <em>testing</em>.
        <p>
 The <file>update_excuses</file> file does not always give the precise reason
 why the package is refused, one may have to find it on their own by looking
 what would break with the inclusion of the package. The <url
-id="&url-testing-faq;" name="testing FAQ"> gives some more information
+id="&url-testing-maint;" name="testing overview"> gives some more information
 about the usual problems which may be causing such troubles.
        <p>
 Sometimes, some packages never enter <em>testing</em> because the set of
@@ -1178,7 +1179,7 @@ recompiled on most of the architectures.
 The Package Tracking System (PTS) is basically a tool to track by mail
 the activity of a source package. You just have to subscribe
 to a source package to start getting the mails related to it. 
-You get the same mails than the maintainer. Each mail
+You get the same mails as the maintainer. Each mail
 sent through the PTS is classified and associated to one of
 the keyword listed below. This will let you select the mails that
 you want to receive.
@@ -2647,13 +2648,18 @@ Useful information includes, for example:
 
 <list compact>
   <item>What versions of the package are known to be affected by the
-  bug.
-
-  <item>The nature of the exposure (root compromise, user compromise,
-  remote/local attack)
+  bug.  Check each version that is present in a supported Debian
+  release, as well as testing and unstable.
 
   <item>The nature of the fix, if any is available (patches are
   especially helpful)
+
+  <item>Any fixed packages that you have prepared yourself (send only
+  the <tt>.diff.gz</tt> and <tt>.dsc</tt> files)
+
+  <item>Any information needed for the advisory (see <ref
+  id="bug-security-advisories">)
+
 </list>
 
         <sect2 id="bug-security-confidentiality">Confidentiality
@@ -2728,6 +2734,9 @@ text. Information that should be in an advisory includes:
   <item>Version numbers of affected packages
   <item>Version numbers of fixed packages
   <item>Information on where to obtain the updated packages
+  <item>References to upstream advisories, <url
+  id="http://cve.mitre.org" name="CVE"> identifiers, and any other
+  information useful in cross-referencing the vulnerability
 </list>
 
          <sect2 id="bug-security-building">
@@ -2762,13 +2771,19 @@ changes.  If you have an exploit available, try it and see if it
 indeed succeeds on the unpatched package and fails on the fixed
 package.  Test other, normal actions as well, as sometimes a security
 fix can break seemingly unrelated features in subtle ways.
+<p>
+Review and test your changes as much as possible.  Check the
+differences from the previous version repeatedly
+(<prgn>interdiff</prgn> and <prgn>debdiff</prgn> are useful tools for
+this).
 
 When packaging the fix, keep the following points in mind:
 
 <list>
     <item>Make sure you target the right distribution in your
     <file>debian/changelog</file>. For stable this is <tt>stable-security</tt> and for
-    testing this is <tt>testing-security</tt>. Do not target
+    testing this is <tt>testing-security</tt>, and for the previous
+    stable release, this is <tt>oldstable-security</tt>. Do not target
     <var>distribution</var>-proposed-updates!
 
     <item>Make sure the version number is proper. It must be greater
@@ -2785,8 +2800,11 @@ When packaging the fix, keep the following points in mind:
     not build those. This point applies to normal package uploads as
     well.
 
-    <item>Always build with full source (use the <tt>-sa</tt> option
-    for <prgn>dpkg-buildpackage</prgn>).
+    <item>If the upstream source has been uploaded to
+    security.debian.org before (by a previous security update), build
+    the upload without the upstream source (<tt>dpkg-buildpackage
+    -sd</tt>).  Otherwise, build with full source
+    (<tt>dpkg-buildpackage -sa</tt>).
 
     <item>Be sure to use the exact same <file>*.orig.tar.gz</file> as used in the
     normal archive, otherwise it is not possible to move the security
@@ -2807,6 +2825,14 @@ prior authorization from the security team.  If the package does not
 exactly meet the team's requirements, it will cause many problems and
 delays in dealing with the unwanted upload.
 <p>
+<em>DO NOT</em> upload your fix to proposed-updates without
+coordinating with the security team.  Packages from
+security.debian.org will be copied into the proposed-updates directory
+automatically.  If a package with the same or a higher version number
+is already installed into the archive, the security update will be
+rejected by the archive system.  That way, the stable distribution
+will end up without a security update for this package instead.
+<p>
 Once you have created and tested the new package and it has been
 approved by the security team, it needs to be uploaded so that it can
 be installed in the archives. For security uploads, the place to
@@ -2876,15 +2902,6 @@ anything to do with an upload of yours, do it simply by emailing an
 explanation to <email>XXX-done@bugs.debian.org</email>.
 
 
-      <sect1 id="lintian-reports">Lintian reports
-       <p>
-You should periodically get the new <package>lintian</package> from
-`unstable' and check over all your packages.  Alternatively you can
-check for your maintainer email address at the <url id="&url-lintian;"
-name="online lintian report">.  That report, which is updated
-automatically, contains <prgn>lintian</prgn> reports against the
-latest version of the distribution (usually from 'unstable') using the
-latest <package>lintian</package>.
 
 
   <chapt id="best-pkging-practices">
@@ -2907,7 +2924,7 @@ even better.
        <p>
 To help you in your packaging effort, you can use helper scripts.
 The best scripts available are provided by <package>debhelper</package>.
-With <prgn>dh_make</prgn> (package <package>dh-make</package>), you can
+With <prgn>dh_make</prgn> (see <ref id="dh-make">), you can
 generate in a few seconds a package that is mostly ready. However that
 apparent simplicity is hiding many things done by the helper scripts.
 You have to know what is done by them, that's why you are strongly
@@ -2974,36 +2991,34 @@ hand crafted rules file.
 
        <sect1 id="handling-debconf-translations">Handling debconf translations
        <p>
-Like porters, translators have a difficult task.  Since they work on many
-packages, they cannot keep track of every change in packages in order to
-be informed when a translated string is outdated.  Fortunately
-<package>debconf</package> can automatically report outdated translations,
-if package maintainers follow some basic guidelines described below.
-       <p>
-Translators can use <prgn>debconf-getlang</prgn> (package
-<package>debconf-utils</package>) to write a <file>templates.xx</file>
-file containing both English and localized fields (where <em>xx</em> is
-the language code, may be followed by a country code).  This file can be
-put into the <file>debian</file> subdirectory without any change.
-       <p>
-When building a binary package, <file>debian/templates.xx</file> files are
-merged along with <file>debian/templates</file> to generate the
-<file>templates</file> file contained in the binary package.  This is
-automatically done by <prgn>dh_installdebconf</prgn> (package
-<package>debhelper</package>). If you do not use debhelper, you can
-do the same with <prgn>debconf-mergetemplate</prgn>
-(package <package>debconf-utils</package>). 
-       <p>
-When the package maintainer needs to update the templates file, they only
-change <file>debian/templates</file>.  When English strings in this file
-and in <file>debian/templates.xx</file> differ, translators do know that
-their translation is outdated.
-       <p>
-Please see the page about
-<url id="&url-debconf-l10n-help;" name="localizing debconf templates files">
-at the Debian web site, it contains more detailed instructions, including a
-full example.
-
+Like porters, translators have a difficult task.  They work on many
+packages and must collaborate with many different
+maintainers. Moreover, most of the time, they are not native English
+speaker, so you may need to be particularly patient with them.
+       <p>
+The goal of <package>debconf</package> was to make packages
+configuration easier for maintainers and for users.  Originally,
+translation of debconf templates was handled with
+<prgn>debconf-mergetemplate</prgn> from the
+<package>debconf-utils</package> package.  Since
+<package>debconf</package> version 1.2.9,
+<prgn>debconf-mergetemplate</prgn> has been deprecated and a new
+system called <package>po-debconf</package> is strongly
+encouraged. This new method is much easier both for the maintainer and
+the translators, and you should upgrade your packages to use it.
+Transition scripts are provided.
+       <p>
+Using <package>po-debconf</package>, the translation is stored in
+<file>po</file> files (drawing from <prgn>gettext</prgn> translation
+techniques).  Special template files contain the original messages and
+mark which fields should be translated. When you change the original,
+calling the <prgn>debconf-updatepo</prgn> script with no argument is
+enough to mark the translation as needing attention from the
+translators. Then, at build time, use the
+<prgn>dh_installdebconf</prgn> program take care of all the needed
+magic to add the template along with the up-to-date translations into
+the binary packages.  Refer to the <manref name="po-debconf"
+section="7"> manual page for details.
 
     <sect id="specific-practices">
        <heading>Specific packaging practices</heading>
@@ -3192,7 +3207,7 @@ list.
 Even though there is a dedicated group of people for Quality
 Assurance, QA duties are not reserved solely for them. You can
 participate in this effort by keeping your packages as bug-free as
-possible, and as lintian-clean (see <ref id="lintian-reports">) as
+possible, and as lintian-clean (see <ref id="lintian">) as
 possible. If you do not find that possible, then you should consider
 orphaning some of your packages (see <ref
 id="orphaning">). Alternatively, you may ask the help of other people
@@ -3307,7 +3322,7 @@ the package meets minimum Debian standards.  That implies that you
 must build and test the package on your own system before uploading.
        <p>
 You can not simply upload a binary <file>.deb</file> from the sponsoree. In
-theory, you should only ask only for the diff file and the location of the
+theory, you should only ask for the diff file and the location of the
 original source tarball, and then you should download the source and apply
 the diff yourself. In practice, you may want to use the source package
 built by your sponsoree. In that case, you have to check that they haven't
@@ -3321,7 +3336,7 @@ means being a mentor.
        <p>
 Once the package meets Debian standards, build the package with
 <example>dpkg-buildpackage -us -uc</example> and sign it
-with <example>debsign -m &lt;your-email-addr&gt; &lt;changes-file&gt;</example>
+with <example>debsign -m"<var>FULLNAME</var> <var>email-addr</var>" <var>changes-file</var></example>
 before uploading it to the incoming directory.
        <p>
 The Maintainer field of the <file>control</file> file and the
@@ -3385,9 +3400,20 @@ they are required for any Debian maintainer.
        <p>
 <package>Lintian</package> dissects Debian packages and reports bugs
 and policy violations. It contains automated checks for many aspects
-of Debian policy as well as some checks for common errors.  The use of
-<package>lintian</package> has already been discussed in <ref
-id="upload-checking"> and <ref id="lintian-reports">.
+of Debian policy as well as some checks for common errors.
+       <p>
+You should periodically get the newest <package>lintian</package> from
+`unstable' and check over all your packages. Notice that the <tt>-i</tt>
+option provides detailed explanations of what each error or warning means,
+what is its basis in Policy, and commonly how you can fix the problem.
+       <p>
+Refer to <ref id="upload-checking"> for more information on how and when
+to use Lintian.
+       <p>
+You can also see a summary of all problems reported by Lintian on your
+packages at <url id="&url-lintian;">. Those reports contain the latest
+<prgn>lintian</prgn> output on the whole development distribution
+("unstable").
 
 
       <sect id="debconf">
@@ -3445,6 +3471,21 @@ favor of <package>debhelper</package>.  However, it's not a bug to use
 <package>debmake</package>.
 
 
+      <sect id="dh-make">
+       <heading><package>dh-make</package>
+       <p>
+The <package/dh-make/ package contains <prgn/dh_make/, a program that
+creates a skeleton of files necessary to build a Debian package out of
+a source tree. As the name suggests, <prgn/dh_make/ is a rewrite of
+<package/debmake/ and its template files use dh_* programs from
+<package/debhelper/.
+       <p>
+While the rules files generated by <prgn/dh_make/ are in general a
+sufficient basis for a working package, they are still just the groundwork:
+the burden still lies on the maintainer to finely tune the generated files
+and make the package entirely functional and Policy-compliant.
+
+
       <sect id="yada">
        <heading><package>yada</package>
        <p>