]> git.donarmstrong.com Git - debhelper.git/blobdiff - debhelper.pod
dh_clean: In v7 mode, read debian/clean and delete all files listed therein.
[debhelper.git] / debhelper.pod
index 8b26ca610198d9f01971b23b72210edec1181d43..480db344fd4104748258127a9c2e0b30421faeff 100644 (file)
@@ -17,9 +17,8 @@ policy changes, and packages that use them will require only a rebuild to
 comply with the new policy.
 
 A typical debian/rules file that uses debhelper will call several debhelper
 comply with the new policy.
 
 A typical debian/rules file that uses debhelper will call several debhelper
-commands in sequence. Debhelper commands are all named with a "dh_" prefix.
-Examples of rules files that use debhelper are in
-F</usr/share/doc/debhelper/examples/>
+commands in sequence, or use L<dh(1)> to automate this process. Examples of
+rules files that use debhelper are in F</usr/share/doc/debhelper/examples/>
 
 To create a new debian package using debhelper, you can just copy one of
 the sample rules files and edit it by hand. Or you can try the dh-make
 
 To create a new debian package using debhelper, you can just copy one of
 the sample rules files and edit it by hand. Or you can try the dh-make
@@ -64,7 +63,8 @@ file can be found.
 
 In some rare cases, you may want to have different versions of these files
 for different architectures. If files named debian/package.foo.arch
 
 In some rare cases, you may want to have different versions of these files
 for different architectures. If files named debian/package.foo.arch
-exist, where "arch" is the same as the output of "dpkg --print-architecture",
+exist, where "arch" is the same as the output of 
+"dpkg-architecture -qDEB_HOST_ARCH",
 then they will be used in preference to other, more general files.
 
 In many cases, these config files are used to specify various types of
 then they will be used in preference to other, more general files.
 
 In many cases, these config files are used to specify various types of
@@ -72,6 +72,9 @@ files. Documentation or example files to install, files to move, and so on.
 When appropriate, in cases like these, you can use standard shell wildcard
 characters ('?' and '*' and '[..]' character classes) in the files.
 
 When appropriate, in cases like these, you can use standard shell wildcard
 characters ('?' and '*' and '[..]' character classes) in the files.
 
+You can also put comments in these files; lines beginning with "#" are
+ignored.
+
 =head1 SHARED DEBHELPER OPTIONS
 
 The following command line options are supported by all debhelper programs.
 =head1 SHARED DEBHELPER OPTIONS
 
 The following command line options are supported by all debhelper programs.
@@ -108,13 +111,23 @@ for the package, the package should not be acted on on other architectures. So
 this flag makes the command act on all "Architecture: any" packages, as well
 as on any packages that have the current architecture explicitly specified.
 Contrast to the -a flag, which makes the command work on all packages that
 this flag makes the command act on all "Architecture: any" packages, as well
 as on any packages that have the current architecture explicitly specified.
 Contrast to the -a flag, which makes the command work on all packages that
-are not architecture independant.
+are not architecture independent.
 
 =item B<-N>I<package>, B<--no-package=>I<package>
 
 Do not act on the specified package even if an -a, -i, or -p option lists
 the package as one that should be acted on.
 
 
 =item B<-N>I<package>, B<--no-package=>I<package>
 
 Do not act on the specified package even if an -a, -i, or -p option lists
 the package as one that should be acted on.
 
+=item B<--ignore=>I<file>
+
+Ignore the specified file. This can be used if debian/ contains a debhelper
+config file that a debhelper command should not act on. Note that
+debian/compat, debian/control, and debian/changelog can't be ignored, but
+then, there should never be a reason to ignore those files.
+
+For example, if upstream ships a debian/init that you don't want
+dh_installinit to install, use --ignore=debian/init
+
 =item B<-P>I<tmpdir>, B<--tmpdir=>I<tmpdir>
 
 Use "tmpdir" for package build directory. The default is debian/<package>
 =item B<-P>I<tmpdir>, B<--tmpdir=>I<tmpdir>
 
 Use "tmpdir" for package build directory. The default is debian/<package>
@@ -145,7 +158,7 @@ Do not modify postinst/postrm/etc scripts.
 Exclude an item from processing. This option may be used multiple times,
 to exclude more than one thing.
 
 Exclude an item from processing. This option may be used multiple times,
 to exclude more than one thing.
 
-=item B<-A>, B<-all>
+=item B<-A>, B<--all>
 
 Makes files or other items that are specified on the command line take effect
 in ALL packages acted on, not just the first.
 
 Makes files or other items that are specified on the command line take effect
 in ALL packages acted on, not just the first.
@@ -170,9 +183,6 @@ B<-a>, B<-i>, B<-p>, and B<-s> parameters. These parameters are cumulative.
 If none are given, debhelper programs default to acting on all packages listed
 in the control file.
 
 If none are given, debhelper programs default to acting on all packages listed
 in the control file.
 
-See F</usr/share/doc/debhelper/examples/rules.multi> for an example of how to
-use this in a package that generates multiple binary packages.
-
 =head2 Automatic generation of debian install scripts
 
 Some debhelper commands will automatically generate parts of debian
 =head2 Automatic generation of debian install scripts
 
 Some debhelper commands will automatically generate parts of debian
@@ -237,25 +247,33 @@ act on.
 From time to time, major non-backwards-compatible changes need to be made
 to debhelper, to keep it clean and well-designed as needs change and its
 author gains more experience. To prevent such major changes from breaking
 From time to time, major non-backwards-compatible changes need to be made
 to debhelper, to keep it clean and well-designed as needs change and its
 author gains more experience. To prevent such major changes from breaking
-existing packages, the concept of debhelper compatability levels was 
-introduced. You tell debhelper which compatability level it should use, and
+existing packages, the concept of debhelper compatibility levels was 
+introduced. You tell debhelper which compatibility level it should use, and
 it modifies its behavior in various ways.
 
 it modifies its behavior in various ways.
 
-You tell debhelper what compatability level to use by writing a number to
-debian/compat. For example, to turn on V4 mode:
+Tell debhelper what compatibility level to use by writing a number to
+debian/compat. For example, to turn on V7 mode:
+
+  % echo 7 > debian/compat
 
 
-  % echo 4 > debian/compat
+Unless otherwise indicated, all debhelper documentation assumes that you
+are using the most recent compatibility level, and in most cases does not
+indicate if the behavior is different in an earlier compatibility level, so
+if you are not using the most recent compatibility level, you're advised to
+read below for notes about what is different in earlier compatibility
+levels.
 
 
-These are the available compatablity levels:
+These are the available compatibility levels:
 
 =over 4
 
 =item V1
 
 
 =over 4
 
 =item V1
 
-This is the original debhelper compatability level, and so it is the default
+This is the original debhelper compatibility level, and so it is the default
 one. In this mode, debhelper will use debian/tmp as the package tree
 directory for the first binary package listed in the control file, while using
 debian/<package> for all other packages listed in the control file.
 one. In this mode, debhelper will use debian/tmp as the package tree
 directory for the first binary package listed in the control file, while using
 debian/<package> for all other packages listed in the control file.
+
 This mode is deprecated.
 
 =item V2
 This mode is deprecated.
 
 =item V2
@@ -263,6 +281,8 @@ This mode is deprecated.
 In this mode, debhelper will consistently use debian/<package>
 as the package tree directory for every package that is built.
 
 In this mode, debhelper will consistently use debian/<package>
 as the package tree directory for every package that is built.
 
+This mode is deprecated.
+
 =item V3
 
 This mode works like V2, with the following additions:
 =item V3
 
 This mode works like V2, with the following additions:
@@ -284,22 +304,23 @@ Every file in etc/ is automatically flagged as a conffile by dh_installdeb.
 
 =back
 
 
 =back
 
+This mode is deprecated.
+
 =item V4
 
 =item V4
 
-This is the reccommended mode of operation. It does everything V3 does,
-plus:
+Changes from V3 are:
 
 =over 8
 
 =item -
 
 dh_makeshlibs -V will not include the debian part of the version number in
 
 =over 8
 
 =item -
 
 dh_makeshlibs -V will not include the debian part of the version number in
-the generated dependancy line in the shlibs file.
+the generated dependency line in the shlibs file.
 
 =item -
 
 You are encouraged to put the new ${misc:Depends} into debian/control to
 
 =item -
 
 You are encouraged to put the new ${misc:Depends} into debian/control to
-suppliment the ${shlibs:Depends} field.
+supplement the ${shlibs:Depends} field.
 
 =item -
 
 
 =item -
 
@@ -312,6 +333,82 @@ dh_link will correct existing links to conform with policy.
 
 =back
 
 
 =back
 
+=item V5
+
+Changes from V4 are:
+
+=over 8
+
+=item -
+
+Comments are ignored in debhelper config files.
+
+=item -
+
+dh_strip --dbg-package now specifies the name of a package to put debugging
+symbols in, not the packages to take the symbols from.
+
+=item -
+
+dh_installdocs skips installing empty files.
+
+=item -
+
+dh_install errors out if wildcards expand to nothing.
+
+=back
+
+=item V6
+
+Changes from V5 are:
+
+=over 8
+
+=item -
+
+Commands that generate maintainer script fragements will order the
+fragements in reverse order for the prerm and postrm scripts.
+
+=item -
+
+dh_installwm will install a slave manpage link for x-window-manager.1.gz,
+if it sees the man page in usr/share/man/man1 in the package build
+directory.
+
+=item -
+
+dh_builddeb did not previously delete everything matching
+DH_ALWAYS_EXCLUDE, if it was set to a list of things to exclude, such as
+"CVS:.svn:.git". Now it does.
+
+=item -
+
+dh_installman allows overwriting existing man pages in the package build
+directory. In previous compatability levels it silently refuses to do this.
+
+=back
+
+=item V7
+
+This is the recommended mode of operation.
+
+Changes from V6 are:
+
+=over 8
+
+=item -
+
+dh_install, if --sourcedir is not specified, will first look for files in
+debian/tmp, and then will look in the current directory. This allows
+dh_install to interoperate with dh_auto_install without needing any special
+parameters.
+
+=item -
+
+dh_clean will read debian/clean and delete files listed there.
+
+=back
+
 =back
 
 =head2 Doc directory symlinks
 =back
 
 =head2 Doc directory symlinks
@@ -325,21 +422,30 @@ files into the package, and use dh_link to set up the symlink (or do it by
 hand), and debhelper should do the right thing: notice it is a dangling
 symlink and not try to install a copyright file or changelog.
 
 hand), and debhelper should do the right thing: notice it is a dangling
 symlink and not try to install a copyright file or changelog.
 
+=head2 udebs
+
+Debhelper includes support for udebs. To create a udeb with debhelper,
+add "XC-Package-Type: udeb" to the package's stanza in debian/control, and
+build-depend on debhelper (>= 4.2). Debhelper will try to create udebs that
+comply with debian-installer policy, by making the generated package files
+end in ".udeb", not installing any documentation into a udeb, skipping over
+preinst, postrm, prerm, and config scripts, etc.
+
 =head2 Other notes
 
 In general, if any debhelper program needs a directory to exist under
 debian/, it will create it. I haven't bothered to document this in all the
 man pages, but for example, dh_installdeb knows to make debian/<package>/DEBIAN/
 before trying to put files there, dh_installmenu knows you need a
 =head2 Other notes
 
 In general, if any debhelper program needs a directory to exist under
 debian/, it will create it. I haven't bothered to document this in all the
 man pages, but for example, dh_installdeb knows to make debian/<package>/DEBIAN/
 before trying to put files there, dh_installmenu knows you need a
-debian/<package>/usr/lib/menu/ before installing the menu files, etc.
+debian/<package>/usr/share/menu/ before installing the menu files, etc.
 
 Once your package uses debhelper to build, be sure to add
 debhelper to your Build-Depends line in debian/control. You should
 
 Once your package uses debhelper to build, be sure to add
 debhelper to your Build-Depends line in debian/control. You should
-build-depend on a verson of debhelper equal to (or greater than) the
-debhelper compatability level your package uses. So if your package used
-compatability level 4:
+build-depend on a version of debhelper equal to (or greater than) the
+debhelper compatibility level your package uses. So if your package used
+compatibility level 7:
 
 
-  Build-Depends: debhelper (>= 4)
+  Build-Depends: debhelper (>= 7)
 
 =head1 ENVIRONMENT
 
 
 =head1 ENVIRONMENT
 
@@ -393,7 +499,7 @@ DH_ALWAYS_EXCLUDE=CVS:.svn
 
 A set of example debian/rules files that use debhelper.
 
 
 A set of example debian/rules files that use debhelper.
 
-=item L<http://kitenet.net/programs/debhelper/>
+=item L<http://kitenet.net/~joey/code/debhelper/>
 
 Debhelper web site.
 
 
 Debhelper web site.