Crear un paquete Debian con scripts de inicio
Esta receta muestra como empaquetar scripts de inicio en un sistema debian.
Ingredientes
- debhelper
- Leer la receta de dh_make :-) para generar el directorio base
Archivos necesarios en el directorio debian
- preinst, postinst, prerm y postrm
- [nombreScript].init
-
Estos bash scripts se ejecutan (como su nombre indica) antes y después de la instalación del paquete y antes y después de su eliminación. Con ellos podemos, por ejemplo, generar archivos de configuración, recuperar información de usuario en tiempo de instalación, actualizar el update-rc.d (tanto para añadir como para eliminar el script), etc. En resumen, manejan la gestión del paquete desde su instalación hasta su eliminación, por lo que hay que tener especial cuidado en la desinstalación y dejar el sistema tal y como estaba originalmente.
Por supuesto deben ser ejecutables (chmod +x y #!/bin/bash).
-
Este es el script de inicio que se almacenará sin la extensión ".init". Mas adelante se detalla su estructura.
Archivos opcionales en el directorio debian
- [nombreScript].dirs
- Interactuar con el usuario
- templates
-
En este archivo se especifican los directorios que se deben crear durante la instalación del paquete (uno por línea).
-
A veces puede ser interesante interacturar con los usuarios por medio de una interfaz en shell en la que solicitar algún parámetro. Para ello se utiliza debconf. Para utilizar debconf se necesitan especificar las preguntas (archivo templates), cuando se mostrará cada una (archivo config) y por último se deben recuperar en el archivo de post instalación (archivo postinst). Para profundizar sobre debconf (mas tipos de entradas, db_input, etc) leer el Tutorial Debconf.
-
Gracias a este archivo podemos especificar los campos que solicitamos al usuario durante la instalación del paquete. Cada entrada tiene un aspecto de este tipo:
Template: script/IdPregunta Type: string Default: respuesta por defecto Description: Is this the ask?: Description-es.UTF-8: Esta es la pregunta?
-
Este bash script (ejecutable) permite que el script de post instalación (postinst) pueda recuperar la información que el usuario introduce. El archivo config carga el confmodule, inicializa la db del paquete y lanza las entradas por medio de db_input. Algo así:
-
El script postinst puede recuperar la información proporcionada por el usuario, tras cargar debconf, por medio de db_get.
El script de inicio
-
El script de inicio consta de tres partes.
- Descripción LSB(Linux Standard Base) del script
- Tiene este aspecto:
### BEGIN INIT INFO # Provides: nombre del paquete # Required-Start: $syslog # Required-Stop: $syslog # Should-Start: $local_fs # Should-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: script de prueba # Description: pues eso ### END INIT INFO
-
Para llevar a cabo esta tarea se debe utilizar el comando start-stop-daemon ya que garantiza un control completo y efectivo del proceso. Es recomendable que el script de soporte a las opciones start, stop, restart y force-reload por si posteriormente se quiere "debianizar".
-
Finalmente solo es necesario hacer el switch entre las operaciones que soporte el script. Algo así:
Construcción del paquete
-
Finalmente el directorio /debian debemos tener al menos estos archivos,
changelog copyright files myScript.init postrm rules compat control docs preinst postinst prermy si utilizamos debconf también deben estar los archivos config y templates. Ahora solo queda:
Referencias
- Debian Policy Manual (Capítulo 6)
- Tutorial Debconf
- LSB
- man start-stop-daemon
[ show comments ]
blog comments powered by Disqus