dh(1) 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.
--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.

This can be used without a debian/compat file.

--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

dh no ejecuta las herramientas de Python de forma predeterminada debido al cambio continuo de ese campo. (dh ejecuta dh_pysupport en un nivel de compatibilidad anterior a v9). A continuación puede ver cómo se utiliza 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. 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. The --until, --before, --after, and --remaining options can override this behavior (though they were removed in compat 10).

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.

OPCIONES OBSOLETAS

The following options are deprecated. It's much better to use override targets instead. They are not available in compat 10.
--until orden
Ejecuta las órdenes en la secuencia hasta la orden, incluido, y cierra.
--before orden
Ejecuta las órdenes en la secuencia anteriores a orden, y cierra.
--after orden
Ejecuta las órdenes en la secuencia posteriores a orden.
--remaining
Ejecuta todas las órdenes en la secuencia que aún no se han ejecutado.

En las opciones anteriores, orden puede ser el nombre completo de una orden de debhelper, o una subcadena. Buscará en primer lugar una orden en la secuencia que coincide totalmente con el nombre, para evitar cualquier ambigüedad. Si hay muchas coincidencias con la subcadena se utilizará la última en la secuencia.

AUTOR

Joey Hess <[email protected]>

TRADUCTOR

Traducci�n de Omar Campagne Polaino <[email protected]>