debhelper

Autres langues

Langue: es

Autres versions - même langue

Version: 2009-03-09 (ubuntu - 08/07/09)

Section: 7 (Divers)

NOMBRE

debhelper - El conjunto de herramientas debhelper

SINOPSIS

dh_* [-v] [-a] [-i] [-s] [--no-act] [-ppaquete] [-Npaquete] [-Ptmpdir]

DESCRIPCION

Debhelper ayuda a construir un paquete de Debian. La filosofia que se esconde detras de Debhelper es una coleccion de herramientas pequen~as, simples y faciles de entender que son usadas en debian/rules para automatizar varios aspectos comunes a la hora de construir un paquete. Esto hace que usted, el empaquetador, tenga menos trabajo. Ademas si cambia la politica de Debian, los paquetes que necesiten cambios solo necesitan ser reconstruidos para que se ajusten a la nueva politica.

A typical debian/rules file that uses debhelper will call several debhelper commands in sequence, or use dh(1) to automate this process. Examples of rules files that use debhelper are in /usr/share/doc/debhelper/examples/

Para crear un nuevo paquete de Debian usando debhelper, simplemente puede copiar uno de los ficheros rules de ejemplo y editarlo a mano, o usar el paquete dh-make que contiene la orden dh_make que automatiza parcialmente el proceso. Para una introduccion mas apropiada el paquete maint-guide contiene un tutorial acerca de como hacer tu primer paquete usando debhelper. (existe una version traducida al castellano en el paquete maint-guide-es)

ORDENES DE DEBHELPER

A continuacion se muestra la lista completa de las ordenes de debhelper, para mas informacion consulte sus respectivas paginas del manual.
dh_builddeb(1)
build debian binary packages
dh_compress(1)
comprime ficheros y arregla enlaces simbolicos en los directorios de contruccion de los paquetes.
dh_desktop(1)
Registra ficheros .desktop
dh_fixperms(1)
arregla los permisos de los ficheros en los directorios de construccion.
dh_gencontrol(1)
genera e instala el fichero de control
dh_install(1)
instala ficheros en los directorios de construccion del paquete
dh_installcatalogs(1)
instala y registra catalogos SGML
dh_installchangelogs(1)
instala los ficheros de cambios en los directorios de construccion
dh_installcron(1)
instala scripts para cron en etc/cron.*
dh_installdeb(1)
instala ficheros en el directorio DEBIAN
dh_installdebconf(1)
instala ficheros usados por debconf en los directorios de construccion
dh_installdirs(1)
crea subdirectorios en los directorios de construccion
dh_installdocs(1)
instala documentacion en los directorios de construccion
dh_installemacsen(1)
registra un paquete an~adido para emacs
dh_installexamples(1)
instala ficheros de ejemplo en los directorios de construccion
dh_installinfo(1)
instala y registra ficheros info
dh_installinit(1)
instala scripts de init en los directorios de construccion
dh_installlogcheck(1)
instala ficheros de normas para logcheck en etc/logcheck/
dh_installlogrotate(1)
instala ficheros de configuracion de logrotate
dh_installman(1)
instala paginas de manual en los directorios de construccion
dh_installmanpages(1)
instalador al viejo estilo de paginas del manual
dh_installmenu(1)
instala fichero del menu de Debian en los directorios de construccion
dh_installmime(1)
instala ficheros mime en los directorios de construccion
dh_installpam(1)
instala ficheros de soporte para pam
dh_installppp(1)
instala los ficheros ip-up e ip-down de ppp
dh_installwm(1)
registra un gestor de ventanas
dh_installxfonts(1)
registra tipos de letra para X
dh_link(1)
crea enlace simbolicos en directorios de construccion de paquetes
dh_listpackages(1)
lista paquetes binarios sobre los que actuara debhelper
dh_makeshlibs(1)
automatically create shlibs file and call dpkg-gensymbols
dh_md5sums(1)
genera el fichero DEBIAN/md5sums
dh_movefiles(1)
mueve ficheros de debian/tmp en subpaquetes
dh_perl(1)
calculates perl dependencies and cleans up after MakeMaker
dh_python(1)
calcula dependencias python y an~ade scripts python postinst y prerm
dh_scrollkeeper(1)
genera programas de registro de ScrollKeeper
dh_strip(1)
ejecuta strip sobre ejecutables, bibliotecas compartidas y algunas bibliotecas estaticas
dh_suidregister(1)
programa obsoleto de registro suid
dh_testdir(1)
comprueba el directorio antes de construir el paquete debian
dh_testroot(1)
asegura que el paquete sea construido como superusuario
dh_testversion(1)
asegura que este instalada la version correcta de debhelper
dh_undocumented(1)
programa obsoleto de enlace simbolico a undocumented.7
dh_usrlocal(1)
migra directorios usr/local a programas de desarrollador

Si el nombre de un programa empieza con ``dh_'', y no esta en la lista anterior, no es parte del paquete debhelper, pero aun asi deberia funcionar como los programas descritos en esta pagina.

FICHEROS DE CONFIGURACION DE DEBHELPER

Muchas de las ordenes de debhelper hacen uso de los ficheros en debian/ para controlar lo que hacen. Ademas de los ficheros comunes debian/changelog y debian/control, que estan en todos los paquetes, no solo aquellos que usan debhelper, se pueden usar ficheros adicionales para configurar el comportamiento de una orden especifica de debhelper. Estos ficheros se suelen llamar debian/paquete.tal (donde ``paquete'', es reemplazado por el paquete sobre el que se esta trabajando).

Por ejemplo, dh_installdocs usa el archivo llamado debian/paquete.docs para listar los ficheros de documentacion que instalara. Lea las paginas del manual de cada orden para conocer mas detalles acerca de los nombres y formatos de los ficheros que usan. Generalmente, estos ficheros listan los ficheros sobre los que se actua, uno por linea. Algunos programas de debhelper usan un par de ficheros y destinos o algun formato un poco mas complicado.

Dese cuenta que si un paquete es el primero (o el unico) paquete binario listado en debian/control, debhelper usara debian/tal si no existe debian/paquete.tal.

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-architecture -qDEB_HOST_ARCH'', then they will be used in preference to other, more general files.

En muchos casos, estos ficheros de configuracion se usan para especificar varios tipos de ficheros. Documentacion o ficheros de ejemplo a instalar, ficheros a mover, y demas. Cuando sea apropiado, en casos como estos, puedes usar comodines del shell como ('?' y '*') en estos ficheros.

Tambien puede poner comentarios en estos ficheros, simplementecomience las lineas con el simbolo ``#''

OPCIONES COMPARTIDAS DE DEBHELPER

La siguiente linea de ordenes es aceptada por todos los programas de debhelper.
-v, --verbose
Modo explicativo: muestra todos las ordenes que modifican el directorio de construccion del paquete.
--no-act
No hacer nada realmente. Si se usa con -v, mostrara todo lo que hubiera hecho.
-a, --arch
Actuar en todos los paquetes dependientes de la arquitectura.
-i, --indep
Actuar en todos los paquetes independientes de la arquitectura.
-ppaquete, --package=paquete
Actua sobre el paquete nombrado ``paquete''. Esta opcion puede ser especificada varias veces para hacer que debhelper opere sobre una serie de paquetes.
-s, --same-arch
Esta es una opcion refinada de la opcion -a, que se usa en raras circunstancias. Si el fichero de control tiene una linea para el paquete como ``Architecture: i386'', entonces debhelper no actuara sobre el paquete en otras arquitecturas. Asi pues, esta opcion hace que la orden actue en todos los paquetes ``Architecture: any'' asi como en cualquier paquete que tenga la arquitectura actual definida explicitamente. Esto es distinto a la opcion -a, que hace que la orden actue en todos los paquetes que son dependientes de la arquitectura.
-Npaquete, --no-package=paquete
No actuar sobre un paquete especificado incluso si las opciones -a, -i, o -p listan este paquete como uno sobre los que se debe actuar.
--ignore=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

-Ptmpdir, --tmpdir=tmpdir
Usa ``tmpdir'' como directorio para construir el paquete. Por defecto es debian/<paquete>.
--mainpackage=paquete
Esta opcion poco usada cambia el paquete que debhelper considera el ``paquete principal'', esto es, el primero listado en debian/control, y sobre el cual se pueden usar los ficheros debian/tal en vez de los usuales debian/package.tal.

OPCIONES COMUNES DE DEBHELPER

Las siguientes opciones son validas para algunos programas de debhelper. Mire la pagina del manual de cada programa para una explicacion detallada de lo que hace cada una.
-n
No modificar los scripts postinst/postrm/etc.
-Xelemento, --exclude=elemento
No procesar un elemento. Esta opcion puede ser usada varias veces, para excluir distintos elementos.
-A, --all
Hace que los archivos o elementos especificados en la linea de ordenes tengan efecto en TODOS los paquetes sobre los que actua, no solo el primero.

NOTAS

Soporte para varios paquetes binarios

Si su paquete fuente genera mas de un paquete binario, por defecto los programas de debhelper actuaran sobre todos los paquetes binarios. Si se diera el caso de que su paquete fuente genera un paquete dependiente de la arquitectura, y otro independiente, este no es un comportamiento correcto, porque necesitara generar los paquetes dependientes de la arquitectura en el objetivo binary-arch de debian/rules, y los paquetes independientes de la arquitectura en el objetivo binary-indep de debian/rules.

Para facilitar esto, asi como para dar mayor control sobre que paquetes actuan los programas de debhelper, todos estos aceptan los parametros <-a>, -i, -p, y -s. Estos parametros son acumulativos. Si no se especifica ninguno los programas de debhelper actuan por defecto en todos los paquetes listados en el fichero de control.

Generacion automatica de los scripts de instalacion de debian

Algunas ordenes de debhelper generaran automaticamente parte de los scripts de instalacion de Debian. Si quiere que estas ordenes generen automaticamente lo que este incluido en sus scripts de instalacion de debian, entonces necesita an~adir ``#DEBHELPER#'' a tus scripts, en el lugar donde el codigo deba de ser an~adido. ``#DEBHELPER#'' sera remplazado por cualquier codigo auto-generado cuando ejecutes dh_installdeb.

Todos los scripts que generan codigo automaticamente de esta manera se pueden deshabilitar con el parametro -n (ver arriba).

Todas las opciones de debhelper que generan codigo automaticamente de estamanera se pueden deshabilitar con el parametro -n (ver arriba).

Fijese que el codigo insertado sera codigo de shell, por eso no puede usarlo directamente es un script perl. Si desea introducirlo en un script perl, hagalo de la siguiente forma (Dese cuenta que en este caso, se asegura que $1, $2, etc estan establecidas con la orden set):

   my $temp="set -e\nset -- @ARGV\n" . << 'EOF';
   #DEBHELPER#
   EOF
   system ($temp) / 256 == 0
         or die "Problema con los scripts de debhelper: $!";
 
 

Generacion automatica de diversas dependencias.

Es posible que algunas ordenes de debhelper hagan que los paquetes generados dependan de otros paquetes. Por ejemplo, si usas dh_installdebconf(1), el paquete que genera dependera de debconf. Si usas dh_installxfonts(1), el paquete dependera de una determinada version de xutils. Llevar la cuenta de todas estas dependencias puede ser tedioso, porque dependen de como debhelper haga las cosas, por eso debhelper ofrece una manera de automatizarlo.

Todas las ordenes de este tipo, ademas de documentar que dependencias pueden ser necesarias en las paginas del manual, generaran automaticamente una variable de substitucion llamada ${misc:Depends}. Si introduce esta variable en el archivo debian/control, sera expandida a las dependencias que debhelper crea oportunas.

Esto es totalmente independiente de la estandar ${shlibs:Depends} generada por dh_makeshlibs(1), y de la ${perl:Depends} generada por dh_perl(1). Puedes elegir no elegir ninguna de estas si la expansion de debhelper de estas variables no son correctas.

Directorios de construccion del paquete

Por defecto, todos los programas de debhelper asumen que el directorio temporal usado para ensamblar el arbol de ficheros en un paquete es debian/<paquete>.

Algunas veces, puede que desee usar otro directorio temporal. Esto se puede conseguir con la opcion -P. Por ejemplo, ``dh_installdocs -Pdebian/tmp'', usara el directorio debian/tmp como directorio temporal. Dese cuenta que si usas la opcion -P, los programas de debhelper solo pueden actuar sobre un paquete a la vez. Por eso, si tiene un paquete que construye muchos paquetes binarios, tendra que hacer uso de la opcion -p para especificar el paquete binario sobre el que debhelper actuara.

Niveles de compatibilidad de debhelper

Cada cierto tiempo, debhelper necesita cambios que lo pueden hacer incompatible con versiones anteriores, para de este modo mantenerse con un buen disen~o a medida que necesita cambios y que su autor gana mas experiencia. Los niveles de compatibilidad de debhelper se crearon para impedir que estos cambios estropeen algun paquete. Segun el nivel de compatibilidad que se especifique debhelper se comporta de diferentes maneras.

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
 
 

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.

Los niveles de compatibilidad disponibles son:

V1
Este es el nivel de compatibilidad original de debhelper, y por tanto es el nivel por defecto. En este modo, debhelper usa debian/tmp como el arbol de directorios y debian/paquete para el resto de paquetes listados en el fichero de control. Se desaconseja su uso.

Este modo esta desaconsejado.

V2
En este modo, debhelper usara consistentemente debian/<paquete> como el arbol de directorios para cada paquete que se construya.

Este modo esta desaconsejado.

V3
Este modo funciona como el V2 con los siguientes an~adidos:
-
Los ficheros de configuracion de Debhelper soportan comodines mediante * y ? cuando sea apropiado. Para usar * y ? simplemente como caracteres poner como prefijo una barra invertida.
-
dh_makeshlibs hace que los scripts postinst y postrm ejecuten ldconfig.
-
dh_installdeb marca automaticamente todos los ficheros en etc/ como conffiles.

Este modo esta desaconsejado.
V4
Changes from V3 are:
-
dh_makeshlibs -V no incluira la parte de Debian en el numero de version generado en la linea de dependencias del fichero shlibs.
-
Se aconseja que use el nuevo ${misc:Depends} en debian/control para reemplazar el campo ${shlibs:Depends}.
-
dh_fixperms hara ejecutables todos los archivos en los directorios bin/ y etc/init.d.
-
dh_link corregira los enlaces existentes para ajustarse a la politica de debian.
V5
Changes from V4 are:
-
Se ignoran los comentarios en los ficheros de configuracion de debhelper.
-
dh_strip --dbg-paquete ahora especifica el nombre del paquete en el que se colocan los simbolos de depuracion, no los paquetes desde los que obtener los simbolos.
-
dh_installdocs no instala ficheros vacios.
-
dh_install errors out if wildcards expand to nothing.
V6
Changes from V5 are:
-
Commands that generate maintainer script fragements will order the fragements in reverse order for the prerm and postrm scripts.
-
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.
-
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.
-
dh_installman allows overwriting existing man pages in the package build directory. In previous compatibility levels it silently refuses to do this.
V7
This is the recommended mode of operation.

Changes from V6 are:

-
dh_install, will fall back to looking for files in debian/tmp if it doesn't find them in the current directory (or wherever you tell it look using --srcdir). This allows dh_install to interoperate with dh_auto_install, which installs to debian/tmp, without needing any special parameters.
-
dh_clean will read debian/clean and delete files listed there.
-
dh_clean will delete toplevel *-stamp files.
-
dh_installchangelogs will guess at what file is the upstream changelog if none is specified.

Enlaces a los directorios Doc

A veces es util hacer que un paquete no tenga un directorio /usr/share/doc/paquete, en vez de esto se hara un enlace colgando en el paquete binario que apunte a otro directorio de documentacion. La politica de Debian permite esto mientras mientras el paquete dependa del paquete al que pertenece el directorio de documentacion que esta usando. Para conseguir esto, lo unico que hay que hacer es no decirle a debhelper que cree ningun directorio con documentacion y usar dh_link para crear el enlace (o crear el enlace a mano), y debhelper hara lo correcto: se dara cuenta de que es un enlace colgante y no tratara de instalar un fichero de copyright o changelog.

udebs

Debhelper incluye soporte para udebs. Para crear un udeb con debhelper, an~ada ``XC-Package-Type: udeb'' al parrafo del paquete binario en debian/control, y una dependencia de construccion en debhelper (>= 4.2). Debhelper tratara de crear udebs que cumplan con las normas del ``debian-installer'', haciendo que los ficheros de los paquetes terminen en ``.udeb'', no instalando ninguna documentacion en un udeb, pasando de los scripts de preinst, postrm, prerm, y de configuracion, etc.

Otras notas

En general si algun programa de debhelper necesita que exista un directorio bajo debian/, lo creara. No me he preocupado por documentarlo en todas las paginas del manual, pero por ejemplo, dh_installdeb sabe hacer debian/<paquete>/DEBIAN/ antes de tratar de poner los ficheros alli, dh_installmenu sabe que necesita debian/<paquete>/usr/share/menu/ antes de instalar los archivos del menu, etc.

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 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 (>= 7)
 
 

ENTORNO

DH_VERBOSE
Poner a uno para activar el modo explicativo. Debhelper mostrara todas las ordenes usadas que modifiquen ficheros en el sistema en el que se hace la construccion.
DH_COMPAT
Especifica temporalmente bajo que nivel de compatibilidad debe de actuar debhelper, ignorando cualquier valor en debian/compat.
DH_NO_ACT
Poner a 1 para habilitar el modo no-act.
DH_OPTIONS
Todo lo que halla en esta variable se antepondra a los argumentos en la linea de ordenes de todas las ordenes de debhelper. Esto es util en algunas situaciones, por ejemplo, si necesita pasar la opcion -p a todas las ordenes de debhelper que va a utilizar. Una buena manera de dar valor a DH_OPTIONS es usando ``Target-specific Variable Values'' en su fichero debian/rules. Lea la documentacion de make para los detalles sobre como hacer esto.
DH_ALWAYS_EXCLUDE
Si esta establecida, an~ade su valor a la opcion -X de todas las ordenes que soporten dicha opcion. Es mas, dh_builddeb hara un rm -rf a todo lo que coincida con el valor en el arbol de construccion.

Esto puede ser util si esta compilando desde un arbol de CVS, en cuyo caso estableciendo DH_ALWAYS_EXCLUDE=CVS evitara que los directorios CVS se introduzcan en el paquete construido. O, si su paquete original (imprudentemente) incluye directorios CVS, puede ser util exportar ALWAYS_EXCLUDE=CVS en debian/rules, para que esto tenga efecto en cualquier sitio donde se construya el paquete.

Si se tienen varias cosas para excluir, estas pueden separarse mediante dos puntos, p. ej.: DH_ALWAYS_EXCLUDE=CVS:.svn

VEASE ADEMAS

/usr/share/doc/debhelper/examples/
Varios ficheros de ejemplo debian/rules que usan debhelper.
<http://kitenet.net/~joey/code/debhelper/>
Web de Debhelper.

AUTOR

Joey Hess <joeyh@debian.org>

TRADUCTOR

Traduccion de Ruben Porras Campo <debian-l10n-spanish@lists.debian.org>