<!-- common, language independant entities -->
<!entity % commondata SYSTEM "common.ent" > %commondata;
<!-- CVS revision of this document -->
- <!entity cvs-rev "$Revision: 1.81 $">
+ <!entity cvs-rev "$Revision: 1.87 $">
<!-- if you are translating this document, please notate the RCS
revision of the developers reference here -->
public key servers. The New Maintainer Group will put your public key
on the servers if it isn't already there.
<p>
-Due to export restrictions by the United States government some Debian
-packages, including <package>gnupg</package>, are located on ftp sites
-outside of the United States. You can find the current locations of
-those packages at <url id="&url-readme-non-us;">.
- <p>
Some countries restrict the use of cryptographic software by their
citizens. This need not impede one's activities as a Debian package
maintainer however, as it may be perfectly legal to use cryptographic
posts which for whatever reason should not be published publically.
As such, it is a low volume list, and users are urged not to use
&email-debian-private; unless it is really necessary. Moreover, do
-<em>not</em> forward email from that list to anyone.
+<em>not</em> forward email from that list to anyone. Archives of this
+list are not available on the web for obvious reasons, but you can see
+them using your shell account <tt>master.debian.org</tt> and looking
+in the <file>~debian/archive/debian-private</file> directory.
<p>
&email-debian-email; is a special mailing list used as a grab-bag
for Debian related correspondence such as contacting upstream authors
<p>
The ftp-master server, <tt>ftp-master.debian.org</tt> (or
<tt>auric.debian.org</tt>), holds the canonical copy of the Debian
-archive (excluding the non-U.S. packages). Generally, package uploads
+archive (excluding the non-US packages). Generally, package uploads
go to this server; see <ref id="upload">.
<p>
Problems with the Debian FTP archive generally need to be reported as
<chapt id="upload">Package uploads
- <sect>Announcing new packages
+ <sect>New packages
<p>
If you want to create a new package for the Debian distribution, you
should first check the <url id="&url-wnpp;" name="Work-Needing and
better feel of what is going on, and what is new, in the project.
</list>
+ <sect id="changelog-entries">
+ <heading>Adding an entry to <file>debian/changelog</file></heading>
+ <p>
+Changes that you make to the package need to be recorded in the
+<file>debian/changelog</file>. These changes should provide a concise
+description of what was changed, why (if it's in doubt), and note if
+any bugs were closed. They also record when the packages was
+completed. This file will be installed in
+<file>/usr/share/doc/<var>package</var>/changelog.Debian.gz</file>, or
+<file>/usr/share/doc/<var>package</var>/changelog.gz</file> for native
+packages.
+ <p>
+The <file>debian/changelog</file> file conform to a certain structure,
+with a number of different fields. One field of note, the
+<em>distribution</em>, is described in <ref id="upload-dist">. More
+information about the structure structure of this file can be found in
+the Debian Policy section titled "<file>debian/changelog</file>".
+ <p>
+Changelog entries can be used to automatically close Debian bugs when
+the package is installed into the archive. See <ref
+id="upload-bugfix">.
+ <p>
+It is conventional that the changelog entry notating that the package
+contains a new upstream version of the software looks like this:
+<example>
+ * new upstream version
+</example>
+ <p>
+There are tools to help you create entries and finalize the
+<file>changelog</file> for release — see <ref id="devscripts">
+and <ref id="dpkg-dev-el">.
+
+
<sect id="upload-checking">Checking the package prior to upload
<p>
official maintainer. If you use <prgn>scp</prgn> or <prgn>rsync</prgn>
to transfer the files, place them into <tt>&us-upload-dir;</tt>;
if you use anonymous FTP to upload, place them into
-<ftppath>/pub/UploadQueue/</ftppath>.
+<ftppath>/pub/UploadQueue/</ftppath>. Please note that you should transfer
+the changes file last. Otherwise, your upload may be rejected because the
+archive maintenance software will parse the changes file and see that not
+all files have been uploaded. If you don't want to bother with transfering
+the changes file last, you can simply copy your files to a temporary
+directory on <tt>ftp-master</tt> and then move them to
+<tt>&us-upload-dir;</tt>.
<p>
<em>Note:</em> Do not upload to <tt>ftp-master</tt> packages
-containing software that is export-controlled by the United States
-government, nor to the overseas upload queues on <tt>chiark</tt> or
-<tt>erlangen</tt>. This prohibition covers almost all cryptographic
-software, and even sometimes software that contains ``hooks'' to
-cryptographic software, such as electronic mail readers that support
-PGP encryption and authentication. Uploads of such software should go
-to <tt>non-us</tt> (see <ref id="upload-non-us">). If you are not
-sure whether U.S. export controls apply to your package, post a
+containing software that is patent-restricted by the United States
+government, any cryptographic packages which belong in
+<em>contrib</em> or <em>non-free</em>. If you can't upload it to
+<tt>ftp-master</tt>, then neither can you upload it to the overseas
+upload queues on <tt>chiark</tt> or <tt>erlangen</tt>. Uploads of
+such software should go to <tt>non-us</tt> (see <ref
+id="upload-non-us">). If you are not sure whether U.S. patent
+controls or cryptographic controls apply to your package, post a
message to &email-debian-devel; and ask.
<p>
-You may also find the Debian package <package>dupload</package> useful
-when uploading packages. This handy program is distributed with
+You may also find the Debian packages <package>dupload</package> or
+<package>dput</package> useful
+when uploading packages. These handy program are distributed with
defaults for uploading via <prgn>ftp</prgn> to <tt>ftp-master</tt>,
<tt>chiark</tt>, and <tt>erlangen</tt>. It can also be configured to
use <prgn>ssh</prgn> or <prgn>rsync</prgn>. See <manref name="dupload"
-section="1"> and <manref name="dupload" section="5"> for more information.
+section="1">, <manref name="dupload" section="5"> and <manref name="dput"
+section="1"> for more information.
<p>
After uploading your package, you can check how the archive maintenance
software will process it by running <prgn>dinstall</prgn> on your changes
<sect1 id="upload-non-us">Uploading to <tt>non-US</tt> (pandora)
<p>
As discussed above, export controlled software should not be uploaded
-to <tt>ftp-master</tt>. Instead, use <prgn>scp</prgn> or <prgn>rsync</prgn>
-to copy the package to <ftpsite>non-us.debian.org</ftpsite>, placing
-the files in <tt>&non-us-upload-dir;</tt>. By default, you can
-use the same account/password that works on <tt>ftp-master</tt>.
-If you use anonymous FTP to upload, place the files into
-<ftppath>/pub/UploadQueue/</ftppath>.
- <p>
-The program <prgn>dupload</prgn> comes with support for uploading to
-<tt>non-us</tt>; please refer to the documentation that comes with
-the program for details.
+to <tt>ftp-master</tt>. Instead, upload the package to
+<ftpsite>non-us.debian.org</ftpsite>, placing the files in
+<tt>&non-us-upload-dir;</tt> (both <ref id="dupload"> and <ref
+id="dput"> can be used also, with the right invokation). By default,
+you can use the same account/password that works on
+<tt>ftp-master</tt>. If you use anonymous FTP to upload, place the
+files into <ftppath>/pub/UploadQueue/</ftppath>.
<p>
You can check your upload the same way it's done on <tt>ftp-master</tt>,
with:
<example>dinstall -n foo.changes</example>
<p>
Note that U.S. residents or citizens are subject to restrictions on
-export of cryptographic software. As of this writing, U.S. citizens are
-allowed to export some cryptographic software, subject to notification
-rules by the U.S. Department of Commerce.
+export of cryptographic software. As of this writing, U.S. citizens
+are allowed to export some cryptographic software, subject to
+notification rules by the U.S. Department of Commerce. However, this
+restriction has been waived for software which is already available
+outside the U.S. Therefore, any cryptographic software which belongs
+in the <em>main</em> section of the Debian archive and does not depend
+on any package outside of <em>main</em> (e.g., does not depend on
+anything in <em>non-US/main</em>) can be uploaded to ftp-master or its
+queues, described above.
<p>
Debian policy does not prevent upload to non-US by U.S. residents or
citizens, but care should be taken in doing so. It is recommended that
breaking current US law by doing an upload to non-US, <em>including
consulting a lawyer</em>.
<p>
-For packages in non-US main or contrib, developers should at least
-follow the <url id="&url-u.s.-export;" name="procedure outlined by the
-US Government">. Maintainers of non-US/non-free packages should
-further consult these <url id="&url-notification-of-export;"
-name="rules on notification of export"> of non-free software.
+For packages in <em>non-US/main</em>, <em>non-US/contrib</em>,
+developers should at least follow the <url id="&url-u.s.-export;"
+name="procedure outlined by the US Government">. Maintainers of
+<em>non-US/non-free</em> packages should further consult the <url
+id="&url-notification-of-export;" name="rules on notification of
+export"> of non-free software.
<p>
This section is for information only and does not constitute legal
advice. Again, it is strongly recommended that U.S. citizens and
<sect1>Removing packages from <tt>Incoming</tt>
<p>
-If you decide to remove a package from <tt>Incoming</tt>, it is nice
-but not required to send a notification of that to the appropriate
-announce list (either &email-debian-changes; or
-&email-debian-devel-changes;).
+In the past, it was possible to remove packages from <tt>incoming</tt>.
+With the introduction of the New Incoming system this is no longer
+possible. Instead, you have to upload a new revision of your package with
+a higher version as the package you want to replace. Both versions will be
+installed in the archive but only the higher version will actually be
+available in <em>unstable</em> since the previous version will immediately
+be replaced by the higher. However, if you do proper testing of your
+packages, the need to replace a package should not occur too often anyway.
<sect>Replacing or renaming packages
<p>
<chapt id="tools">Overview of Debian Maintainer Tools
<p>
This section contains a rough overview of the tools available to
-maintainers. These tools are meant to help convenience developers and
-free their time for critical tasks.
+maintainers. The following is by no means complete or definitive, but
+just a guide to some of the more popular tools.
+ <p>
+Debian maintainer tools are meant to help convenience developers and
+free their time for critical tasks. As Larry Wall says, there's more
+than one way to do it.
<p>
Some people prefer to use high-level package maintenance tools and
some do not. Debian is officially agnostic on this issue; any tool
<p>
Most of the descriptions of these packages come from the actual
package descriptions themselves. Further information can be found in
-the package documentation itself.
+the package documentation itself. You can also see more info with the
+command <tt>apt-cache show <var>package_name</var></tt>.
<sect id="dpkg-dev">
<p>
<package>debconf</package> provides a consistent interface to
configuring packages interactively. It is user interface
-intedependant, allowing end-users to configure packages with a
+independant, allowing end-users to configure packages with a
text-only interface, an HTML interface, or a dialog interface. New
interfaces can be added modularly.
<p>
+You can find documentation for this package in the
+<package>debconf-doc</package> package.
+ <p>
Many feel that this system should be used for all packages requiring
interactive configuration. <package>debconf</package> is not
currently required by Debian Policy, however, that may change in the
future.
+ <p>
<sect id="debhelper">
various files into your package, compress files, fix file permissions,
integrate your package with the Debian menu system.
<p>
-Unlike <package>debmake</package>, <package>debhelper</package> is
-broken into several small, granular commands which act in a consistent
-manner. As such, it allows a greater granularity of control than
-<package>debmake</package>.
+Unlike some approaches, <package>debhelper</package> is broken into
+several small, granular commands which act in a consistent manner. As
+such, it allows a greater granularity of control than some of the
+other "debian/rules tools".
+ <p>
+There are a number of little <package>debhelper</package> add-on
+packages, too transient to document. You can see the list of most of
+them by doing <tt>apt-cache search ^dh-</tt>.
<sect id="debmake">
favor of <package>debhelper</package>. However, it's not a bug to use
<package>debmake</package>.
+
<sect id="yada">
<heading><package>yada</package>
<p>
-<package>yada</package> is a new packaging helper tool with a slightly
-different philosophy. It uses a <file>debian/packages</file> file to
-auto-generate other necessary files in the <file>debian/</file>
-subdirectory.
+<package>yada</package> is another packaging helper tool. It uses a
+<file>debian/packages</file> file to auto-generate
+<file>debian/rules</file> other necessary files in the
+<file>debian/</file> subdirectory.
<p>
-Note that <package>yada</package> is still quite new and possibly not
-yet as robust as other systems.
+Note that <package>yada</package> is called "essentially unmaintained"
+by it's own maintainer, Charles Briscoe-Smith. As such, it can be
+considered deprecated.
<sect id="equivs">
new upload locations or methods.
+ <sect id="dput">
+ <heading><package>dput</package>
+ <p>
+The <package>dput</package> package and script does much the same
+thing as <package>dupload</package>, but in a different way. It has
+some features over <package>dupload</package>, such as the ability to
+check the GnuPG signature and checksums before uploading, and the
+possibility of running <tt>dinstall</tt> in dry-run mode after the
+upload.
+
+
<sect id="fakeroot">
<heading><package>fakeroot</package>
<p>
<package>fakeroot</package> simulates root privileges. This enables
you to build packages without being root (packages usually want to
install files with root ownership). If you have
-<package>fakeroot</package> installed, you can say, i.e.,
-<tt>dpkg-buildpackage -rfakeroot</tt> as a user.
+<package>fakeroot</package> installed, you can build packages as a
+user: <tt>dpkg-buildpackage -rfakeroot</tt>.
+
+
+ <sect id="debootstrap">
+ <heading><package>debootstrap</package>
+ <p>
+The <package>debootstrap</package> package and script allows you to
+"bootstrap" a Debian base system into any part of your filesystem.
+By "base system", we mean the bare minimum of packages required to
+operate and install the rest of the system.
+ <p>
+Having a system link this can be useful in many ways. For instance,
+you can <prgn>chroot</prgn> into it if you want to test your build
+depends. Or, you can test how your package behaves when installed
+into a bare base system.
<sect id="devscripts">
<p>
<package>devscripts</package> is a package containing a few wrappers
and tools which you may find helpful for maintaining your Debian
-packages. Example scripts include <prgn>debchange</prgn>, which will
-manipulate your <file>debian/changelog</file> file from the
-command-line, and <prgn>debuild</prgn>, which is a wrapper around
-<prgn>dpkg-buildpackage</prgn>.
+packages. Example scripts include <prgn>debchange</prgn> and
+<prgn>dch</prgn>, which manipulate your <file>debian/changelog</file>
+file from the command-line, and <prgn>debuild</prgn>, which is a
+wrapper around <prgn>dpkg-buildpackage</prgn>.
+
+
+
+ <sect id="dpkg-dev-el">
+ <heading><package>dpkg-dev-el</package>
+ <p>
+<package>dpkg-dev-el</package> is an Emacs lisp package which provides
+assistance when editing some of the files in the <file>debian</file>
+directory of your package. For instance, when editing
+<file>debian/changelog</file>, there are handy functions for
+finalizing a version and listing the package's current bugs.
<sect id="debget">
<p>
<package>debget</package> is a package containing a convenient script
which can be helpful in downloading files from the Debian archive.
-You can use it to download source packages, for instance.
+You can use it to download source packages, for instance (although
+<tt>apt-get source <var>package</var></tt> does pretty much the same
+thing).
+
+<!-- FIXME: add the following
+ dpkg-awk
+ alien
+ dpkg-repack
+ grep-dctrl
+ pbuilder -->
</book>