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 [AT] inicia.es>, Bruno Barrera C.
<bruno.barrera [AT] igloo.cl>, Carlos Izquierdo
<gheesh [AT] ertis.net>, Esteban Manchado y NOK. Debian
L10n Spanish
<debian−l10n−spanish [AT] lists.org>.
Revisiones por Santiago Vila <sanvila [AT] unex.es>, Javier
Fernández−Sanguino, Rubén Porras, Luis
Uribe y Omar Campagne.