Testeando scripts del mantenedor de un paquete

2019/08/02

En debian los paquetes poseen maintainer scripts (o scripts del mantenedor de un paquete) utilizados durante las etapas de instalación y borrado de paquetes. Hay que tener en cuenta que los paquetes pueden estar en uno de varios estados y las transiciones de estos se detallan gráficamente en los diagramas de flujo de los maintainer scripts en el manual de políticas de debian.

Hay veces que durante la creación de paquetes se debe hacer un script, y al momento de instalar se obtiene un error como el siguiente:

$ dpkg -i my-package_1_amd64.deb
...
dpkg: error processing package my-package (--install):
 installed my-package post-installation script subprocess returned error exit status 10
...

En ese caso una forma rápida y sucia de probar el script es editando directamente el script correspondiente ({pre,post}{inst,rm}) en el directorio /var/lib/dpkg/info respaldando previamente:

$ sudo cp /var/lib/dpkg/info/my-package.postinst{,.bak}
$ sudo vi /var/lib/dpkg/info/my-package.postinst

Para shell conviene agregar set -x para obtener mayor información sobre los errores.

Luego de realizar cambios se utiliza dpkg para corroborar que los scripts no devuelvan errores al ser invocados:

$ sudo dpgk --configure my-package

NOTA: en caso de seguir este tip se recomienda utilizar una máquina virtual para instalar el paquete

Tener en cuenta que para probar los maintainer scripts conviene utilizar piuparts.