dpkg-maintscript-helper(1)

NOMBRE
dpkg-maintscript-helper - Solución alternativa a las limitaciones de dpkg en scripts de mantenedor

SINOPSIS
dpkg-maintscript-helper orden [parámetros...] -- parámetros-script-mantenedor

ÓRDENES Y PARÁMETROS

rm_ conffile [última-versión [paquete]]

mv_conffile conffile-antiguo conffile-nuevo [última-versión [paquete]]

DESCRIPCIÓN

Este programa está diseñado para su uso dentro de scripts de mantenedor para realizar tareas que dpkg no puede (por ahora) gestionar de forma nativa, bien por decisiones de diseño o limitaciones actuales.

Muchas de estas tareas requieren la ejecución coordinada de varios scripts de mantenedor (preinst, postinst, prerm, postrm). Para evitar errores sólo tiene que insertar la misma invocación en todos los scripts, y el programa adaptará automáticamente su comportamiento en base a la variable de entorno «DPKG_MAINTSCRIPT_NAME» y a los argumentos de los scripts del mantenedor, que debe introducir después de un guión doble.

TAREAS CON FICHEROS DE CONFIGURACIÓN «CONFFILES»

Al actualizar un paquete, dpkg no eliminará automáticamente un fichero de configuración (un fichero de configuración con cambios del usuario que dpkg debería preservar) si no está presente en la versión más reciente. Existen dos razones principales para esto: la primera es que puede que el fichero de configuración «conffile» haya desaparecido accidentalmente, con lo que la siguiente versión la restauraría. Los usuarios no querrían ver desparecer los cambios hechos. La segunda es permitir a los paquetes una transición de un fichero de configuración «conffile» mantenido por dpkg a un fichero mantenido por los scripts de mantenedor del paquete, habitualmente con una herramienta como debconf o ucf.

Esto significa que si un paquete pretende renombrar o eliminar un fichero de configuración, debe hacerlo de forma explícita. dpkg-maintscript-helper se puede usar para implementar con sencillez dentro de los scripts del mantenedor la eliminación y el desplazamiento de ficheros de configuración «conffile».

  ELIMINAR UN FICHERO DE CONFIGURACIÓN «CONFFILE»

Si se elimina un fichero de configuración «conffile» por completo, se debería eliminar del disco a menos que un usuario lo haya modificado. Se deberían preservar modificaciones locales en caso de existir. Si se cancela la actualización del paquete, el fichero de configuración «conffile» declarado como obsoleto no debería desaparecer.

Esto se puede integrar introduciendo el siguiente texto de consola en los scripts de mantenedor preinst, postinst y postrm:

    dpkg-maintscript-helper rm_conffile \
        conffile última-versión paquete -- "$@"

conffile es el nombre del fichero de configuración «conffile» a eliminar. última-versión es la última versión del paquete que contenía el fichero de configuración «conffile» (o la última versión del paquete que no se ocupó de eliminar el fichero de configuración «conffile» obsoleto en el caso de que este método no se implementó inmediatamente). Si última-versión está vacío o se omite, se intentará la operación en cada actualización. paquete es el nombre del paquete, su aparición es opcional ya que el valor por omisión es «$DPKG_MAINTSCRIPT_PACKAGE» (dpkg define esta variable con el nombre del paquete sobre el que actúa). Todos los parámetros de los scripts de mantenedor se deben introducir al programa después de «--».

Implementación actual: en el script preinst, comprueba si se ha modificado el fichero de configuración y lo renombra bien como conffile.dpkg-remove (si no se ha modificado), o como conffile.dpkg-backup (si se ha modificado). En el script postinst, el segundo fichero se renombra a conffile.dpkg-bak y se guarda como referencia ya que contiene modificaciones del usuario, mientras que el primer script se elimina. Si se interrumpe la actualización del paquete, el script postrm reinstalará el fichero de configuración «conffile» original. Durante el purgado, el script postrm borrará también el fichero .dpkg-bak mantenido hasta ahora.

  RENOMBRAR UN FICHERO DE CONFIGURACIÓN «CONFFILE»

Si se ha cambiado la ubicación de un fichero de configuración «conffile» debe asegurarse de que también migra los cambios hechos por el usuario. Esto puede parecer en principio como un sencillo cambio en el script preinst, aunque resultará en un diálogo de dpkg para confirmar la edición del fichero «conffile» incluso si no son responsables de ellos.

Puede integrar renombrar con sencillez insertando el siguiente texto de consola en los scripts de mantenedor preinst, postinst y postrm.

    dpkg-maintscript-helper mv_conffile \
        conffile-antiguo conffile-nuevo última-versión
        paquete -- "$@"

conffile-antiguo y conffile-nuevo son el nombre antiguo y nuevo del fichero de configuración «conffile» a renombrar. última-versión es la última versión del paquete que contenía el fichero de configuración «conffile» con el nombre antiguo. Si ultima-versión está vacío o se omite, se ejecutará la operación en cada actualización (nota: es más seguro dar la versión y ejecutar la operación una sola vez). paquete es el nombre del paquete, opcional ya que su valor por omisión es «$DPKG_MAINTSCRIPT_PACKAGE» (dpkg define esta variable con el nombre del paquete sobre el que actúa). Todos los parámetros de scripts de mantenedor se deben introducir después de «--».

Implementación actual: el script preinst comprueba si se ha modificado el fichero de configuración «conffile», preservándolo en su lugar si es así, o renombrándolo como conffile-antiguo.dpkg-remove en caso contrario. Durante la configuración, el script postinst elimina conffile-antiguo.dpkg-remove y renombra conffile-antiguo como conffile-nuevo si el primero aún está disponible. Durante la cancelación de una instalación o actualización el script postrm renombra conffile-antiguo.dpkg-remove nuevamente como conffile-antiguo de ser necesario.

INTEGRACIÓN EN PAQUETES

Debido a que dpkg-maintscript-helper se usa en el script preinst, usarlo incondicionalmente precisa una pre-dependencia para asegurar que la versión requerida de dpkg se ha configurado en el pasado. La versión requerida depende de la orden usada, 1.15.7.2 para rm_conffile y mv_conffile.

    Pre-Depends: dpkg (>= 1.15.7.2)

Aún así, en muchos casos la operación efectuada por el programa no es crítica para el paquete, y en lugar de usar un pre-dependencia puede invocar el programa sólo si sabemos que la orden requerida es compatible con la versión de dpkg actualmente instalada:

    if dpkg-maintscript-helper supports <command>; then
        dpkg-maintscript-helper <command> ...
    fi

AUTORES
Copyright © 2010 Raphaël Hertzog
Copyright © 2008 Joey Hess
Copyright © 2007 Guillem Jover
Copyright © 2005 Scott James Remnant

Esto es software libre; vea la versión 2 o posterior de la Licencia Pública General GNU para condiciones de copia. NO hay ninguna garantía.

TRADUCTOR
Rudy Godoy <rudy@kernel-panik.org>, Rubén Porras <nahoo@inicia.es>, Bruno Barrera C. <bruno.barrera@igloo.cl>, Carlos Izquierdo <gheesh@ertis.net>, Esteban Manchado y NOK. Debian L10n Spanish <debian-l10n-spanish@lists.debian.org>.
Revisiones por Santiago Vila <sanvila@unex.es>, Javier Fernández-Sanguino, Rubén Porras, Luis Uribe y Omar Campagne.