Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   dh    ( 1 )

секвенсор команд debhelper (debhelper command sequencer)

Примеры (Examples)

To see what commands are included in a sequence, without actually
       doing anything:

dh binary-arch --no-act

This is a very simple rules file, for packages where the default sequences of commands work with no additional options.

#!/usr/bin/make -f %: dh $@

Often you'll want to pass an option to a specific debhelper command. The easy way to do with is by adding an override target for that command.

#!/usr/bin/make -f %: dh $@

override_dh_strip: dh_strip -Xfoo

override_dh_auto_configure: dh_auto_configure -- --with-foo --disable-bar

Sometimes the automated dh_auto_configure(1) and dh_auto_build(1) can't guess what to do for a strange package. Here's how to avoid running either and instead run your own commands.

#!/usr/bin/make -f %: dh $@

override_dh_auto_configure: ./mondoconfig

override_dh_auto_build: make universe-explode-in-delight

Another common case is wanting to do something manually before or after a particular debhelper command is run.

#!/usr/bin/make -f %: dh $@

# Example assumes debhelper/12.8 and compat 10+ execute_after_dh_fixperms: chmod 4755 debian/foo/usr/bin/foo

If you are on an older debhelper or compatibility level, the above example would have to be written as.

#!/usr/bin/make -f %: dh $@

# Older debhelper versions or using compat 9 or lower. override_dh_fixperms: dh_fixperms chmod 4755 debian/foo/usr/bin/foo

Python tools are not run by dh by default, due to the continual change in that area. Here is how to use dh_python2.

#!/usr/bin/make -f %: dh $@ --with python2

Here is how to force use of Perl's Module::Build build system, which can be necessary if debhelper wrongly detects that the package uses MakeMaker.

#!/usr/bin/make -f %: dh $@ --buildsystem=perl_build

Here is an example of overriding where the dh_auto_* commands find the package's source, for a package where the source is located in a subdirectory.

#!/usr/bin/make -f %: dh $@ --sourcedirectory=src

And here is an example of how to tell the dh_auto_* commands to build in a subdirectory, which will be removed on clean.

#!/usr/bin/make -f %: dh $@ --builddirectory=build

If your package can be built in parallel, please either use compat 10 or pass --parallel to dh. Then dpkg-buildpackage -j will work.

#!/usr/bin/make -f %: dh $@ --parallel

If your package cannot be built reliably while using multiple threads, please pass --no-parallel to dh (or the relevant dh_auto_* command):

#!/usr/bin/make -f %: dh $@ --no-parallel

Here is a way to prevent dh from running several commands that you don't want it to run, by defining empty override targets for each command.

#!/usr/bin/make -f %: dh $@

# Commands not to run: override_dh_auto_test override_dh_compress override_dh_fixperms:

A long build process for a separate documentation package can be separated out using architecture independent overrides. These will be skipped when running build-arch and binary-arch sequences.

#!/usr/bin/make -f %: dh $@

override_dh_auto_build-indep: $(MAKE) -C docs

# No tests needed for docs override_dh_auto_test-indep:

override_dh_auto_install-indep: $(MAKE) -C docs install

Adding to the example above, suppose you need to chmod a file, but only when building the architecture dependent package, as it's not present when building only documentation.

# Example assumes debhelper/12.8 and compat 10+ execute_after_dh_fixperms-arch: chmod 4755 debian/foo/usr/bin/foo