Manpages

NOMBRE

dh - Secuenciador de órdenes de debhelper

SINOPSIS

dh sequence [--with addon[,addon ...]] [--list] [opciones-de-debhelper]

DESCRIPCIÓN

dh ejecuta una secuencia de órdenes de debhelper. Las secuencias aceptadas se corresponden con los objetivos de un fichero debian/rules: build-arch, build-indep, build, clean, install-indep, install-arch, install, binary-arch, binary-indep, y binary.

OBJETIVOS «OVERRIDE»

Un fichero debian/rules que utiliza dh puede sustituir la orden que se ejecuta en cualquier punto de una secuencia, definiendo un objetivo «override».

To override dh_command, add a target named override_dh_command to the rules file. When it would normally run dh_command, dh will instead call that target. The override target can then run the command with additional options, or run entirely different commands instead. See examples below.

Los objetivos «override» también se pueden definir para que se ejecuten solo al consuitr paquetes dependientes o independientes de la arquitectura. Utilice objetivos con nombres como override_dh_orden-arch y override_dh_orden-indep. Tenga en cuenta que para utilizar esta funcionalidad, el paquete debe tener una dependencia de construcción sobre la versión 7.0.50 o superior de debhelper.

OPCIONES

--with extensión[,extensión,...]

Añade las órdenes de debhelper definidas por la extensión dada a los lugares apropiados de la secuencia de órdenes que se va a ejecutar. Esta opción se puede repetir varias veces, o puede listar varias extensiones separadas por comas. Se utiliza cuando hay un paquete de terceras fuentes que proporciona órdenes de debhelper. Para más documentación sobre la interfaz de extensión de secuencia consulte el fichero PROGRAMMING .

A Build-Depends relation on the package dh-sequence-addon implies a --with addon. This avoids the need for an explicit --with in debian/rules that only duplicates what is already declared via the build dependencies in debian/control. The relation can (since 12.5) be made optional via e.g. build-profiles. This enables you to easily disable an addon that is only useful with certain profiles (e.g. to facilitate bootstrapping).

Since debhelper 12.5, addons can also be activated in indep-only mode (via Build-Depends-Indep) or arch-only mode (via Build-Depends-Arch). Such addons are only active in the particular sequence (e.g. binary-indep) which simplifies dependency management for cross-builds.

Please note that addons activated via Build-Depends-Indep or Build-Depends-Arch are subject to additional limitations to ensure the result is deterministic even when the addon is unavailable (e.g. during clean). This implies that some addons are incompatible with these restrictions and can only be used via Build-Depends (or manually via debian/rules). Currently, such addons can only add commands to sequences.

--without extensión

Lo contrario de --with, desactiva la extensión dada. Esta opción puede aparecer más de una vez, o puede enumerar, separadas por comas, varias extensiones que desactivar.

--list, -l

Lista todas las extensiones disponibles.

When called only with this option, dh can be called from any directory (i.e. it does not need access to files from a source package).

--no-act

Muestra las órdenes que se ejecutarían para una secuencia dada, pero no las ejecuta.

Note that dh normally skips running commands that it knows will do nothing. With --no-act, the full list of commands in a sequence is printed.

Las otras opciones introducidas a dh se introducen a cada orden que ejecuta. Puede utilizar esto para definir una opción como -v, -X o -N, así como opciones más especializadas.

EJEMPLOS

Para ver qué órdenes se incluyen en una secuencia, sin hacer nada en realidad:

        dh binary-arch --no-act

Este es un fichero «rules» muy sencillo para paquetes donde las secuencias predeterminadas de órdenes funcionan sin opciones adicionales.

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

A menudo, querrá introducir una opción a una orden de debhelper en particular. La forma sencilla de hacerlo es añadir un objetivo «overrride» para esa orden.

        #!/usr/bin/make -f
        %:
                dh $@
        override_dh_strip:
                dh_strip -Xfoo
        override_dh_auto_configure:
                dh_auto_configure -- --with-foo --disable-bar

En ocasiones, las órdenes automatizadas dh_auto_configure(1) y dh_auto_build(1) no pueden averiguar qué hacer con un paquete extraño. A continuación puede ver cómo evitar que se ejecuten para que así pueda ejecutar sus propias órdenes.

        #!/usr/bin/make -f
        %:
                dh $@
        override_dh_auto_configure:
                ./mondoconfig
        override_dh_auto_build:
                make universe-explode-in-delight

Otra caso común es que desee hacer algo manualmente antes o después de que se ejecute una orden en particular de debhelper.

        #!/usr/bin/make -f
        %:
                dh $@
        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

A continuación puede ver como forzar el uso del sistema de construcción del módulo Perl Module::Build, lo cual puede ser necesario si debhelper detecta erróneamente que el paquete utiliza MakeMaker.

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

Aquí tiene un ejemplo de cómo sobreescribir la ubicación dónde las órdenes dh_auto_* encuentran el código fuente de un paquete, para un paquete en el que las fuentes se ubican en un subdirectorio.

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

Y aquí tiene un ejemplo de cómo indicar a las órdenes dh_auto_* que realicen la construcción en un subdirectorio, que se eliminará mediante 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

A continuación puede ver cómo evitar que dh ejecute varias órdenes que no desea que se ejecuten. Para ello, defina objetivos «override» vacíos para cada orden.

        #!/usr/bin/make -f
        %:
                dh $@
        # Órdenes que no se ejecutan:
        override_dh_auto_test override_dh_compress override_dh_fixperms:

Puede utilizar «overrides» independientes de la arquitectura para separar un proceso de construcción largo de un paquete de documentación. Éstos se omiten al ejecutar las secuencias build-arch y binary-arch.

        #!/usr/bin/make -f
        %:
                dh $@
        override_dh_auto_build-indep:
                $(MAKE) -C docs
        # No se requieren comprobaciones para los documentos
        override_dh_auto_test-indep:
        override_dh_auto_install-indep:
                $(MAKE) -C docs install

Continuando con el ejemplo anterior, suponga que necesita ejecutar «chmod» sobre un fichero, pero solo al construir el paquete dependiente de la arquitectura, ya que no está presente cuando solo se construye documentación.

        override_dh_fixperms-arch:
                dh_fixperms
                chmod 4755 debian/foo/usr/bin/foo

FUNCIONAMIENTO INTERNO

Si siente curiosidad por el funcionamiento interno de dh, a continuación puede ver como funciona por dentro.

In compat 10 (or later), dh creates a stamp file debian/debhelper-build-stamp after the build step(s) are complete to avoid re-running them. It is possible to avoid the stamp file by passing --without=build-stamp to dh. This makes "no clean" builds behave more like what some people expect at the expense of possibly running the build and test twice (the second time as root or under fakeroot(1)).

Inside an override target, dh_* commands will create a log file debian/package.debhelper.log to keep track of which packages the command(s) have been run for. These log files are then removed once the override target is complete.

In compat 9 or earlier, each debhelper command will record when it’s successfully run in debian/package.debhelper.log. (Which dh_clean deletes.) So dh can tell which commands have already been run, for which packages, and skip running those commands again.

Each time dh is run (in compat 9 or earlier), it examines the log, and finds the last logged command that is in the specified sequence. It then continues with the next command in the sequence.

Una secuencia también puede ejecutar objetivos dependientes de la arquitectura en «debian/rules». Por ejemplo, la secuencia «binary» también ejecuta el objeto «install».

dh utiliza la variable de entorno DH_INTERNAL_OPTIONS para introducir información a las órdenes de debhelper que se ejecutan dentro de objetivos «override». El contenido (e incluso, la existencia) de esta variable de entorno, como el nombre sugiere, está sujeto a cambios en cualquier momento.

La opción -i se introduce a las órdenes en las secuencias binary-indep, install-indep y binary-indep para asegurar que sólo actúan sobre paquetes independientes de la arquitectura, y la opción -a se introduce a órdenes en las secuencias build-arch, install-arch y binary-arch para asegurar que sólo actúan sobre paquetes dependientes de la arquitectura.

VÉASE TAMBIÉN

debhelper(7)

Este programa es parte de debhelper.

AUTOR

Joey Hess <joeyh [AT] debian.org>

TRADUCTOR

Traducci�n de Omar Campagne Polaino <debian-l10n-spanish [AT] lists.org>