Después de consultar con expertos en el tema, programadores de deferentes ramas y maestros dimos con la solución al dilema y la dejamos plasmada en este post.
Solución:
Hacer un paquete fuente
Mi recomendación es hacer un paquete fuente. Instale build-essential, debhelper, dh-make. Cambie al directorio donde se encuentran los archivos que desea instalar (el nombre del directorio debe tener la forma $PACKAGE-$VERSION
p.ej myapp-4.2-1
para su primer intento de empaquetar Myapp V4.2), y ejecute dh_make --createorig
. Responde a las preguntas. Debhelper creará la infraestructura básica necesaria para construir un paquete generando archivos en un subdirectorio llamado debian
, tanto algunos archivos obligatorios como plantillas para archivos opcionales. Es posible que deba modificar algunos de estos archivos:
- Editar
debian/rules
para construir lo que necesita construir e instalar los archivos en el lugar correcto. Si solo necesita copiar algunos archivos y no compilar cosas, simplemente edite el archivodebian/install
para especificar qué archivos deben instalarse y dónde. - Editar
debian/copyright
para agregar información de licencia sobre su paquete e información sobre dónde obtener la última versión (si corresponde). - Editar
debian/changelog
para eliminar la referencia a un ITP (eso solo es relevante si está trabajando para el proyecto Debian). Rebautizardebian/postinst.ex
paradebian/postinst
y agregue sus comandos posteriores a la instalación allí. Si luego actualiza su paquete, ejecutedebchange -i
para agregar una entrada de registro de cambios o editar el archivo en Emacs (con dpkg-dev-el instalado).
Correr dpkg-buildpackage -rfakeroot -us -uc
para construir el .deb
paquete (quitar -us -uc
si quieres firmar el paquete con tu PGP key).
Hacer un paquete binario directamente
Si decide crear un paquete binario directamente sin compilarlo a partir de un paquete fuente, lo cual no es realmente más fácil porque no hay tantas herramientas para facilitar el proceso, necesitará cierta familiaridad básica con el formato de los paquetes deb. Se describe en el Manual de políticas de Debian, en particular en el cap. 3 (formato de paquetes binarios), cap. 5 (archivos de control), cap. 6 (scripts de instalación) y el apéndice B (manipulación de paquetes binarios).
Te aseguras de que tu paquete instale los archivos esperados /usr/share/doc/copyright
(que contiene la licencia del contenido del paquete, así como dónde encontrar la última versión del paquete) y /usr/share/doc/changelog.Debian.gz
(que contiene el registro de cambios del paquete deb). No los necesita si solo va a usar el paquete internamente, pero es mejor tenerlos.
En Debian y derivados
Si tiene las herramientas de Debian disponibles, use dpkg-deb
para construir el paquete. En el directorio que contiene los datos para instalar, agregue un directorio llamado DEBIAN
en el nivel superior, que contiene los archivos de control y los scripts de mantenimiento.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
El camino difícil
Si no tiene las herramientas de Debian, cree un archivo de los archivos que desea empaquetar llamado data.tar.gz
un archivo separado de los archivos de control llamado control.tar.gz
(sin subdirectorios), y un archivo de texto llamado debian-binary
y que contiene el texto 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Necesita al menos un archivo de control con los campos Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
y cualquier declaración de dependencia necesaria.
El script que se ejecutará después de la instalación se llama postinst
. Asegúrese de hacerlo ejecutable. va al lado control
.
Convertir un paquete binario de un formato diferente
Si ya tiene un paquete binario de otra distribución, puede usar alien para convertirlo.
En primer lugar, debe crear una carpeta de compilación y un archivo de sus archivos: tar czvf data.tar.gz files
Luego, en la carpeta de compilación, debe crear un archivo de control con algunas informaciones deseadas:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <[email protected]>
Description: This is optional, but creates warnings if left out
Luego, puede agregar scripts de shell preinst, postint, prerm y postrm de forma independiente para controlar el comportamiento previo y posterior a la instalación y previo y posterior a la eliminación del archivo .deb y luego puede crear el archivo de control con tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Entonces necesitas un archivo debian-binary: echo 2.0 > debian-binary
. En su carpeta de compilación debería tener ahora estos archivos: debian-binary
control.tar.gz
y data.tar.gz
.
Finalmente necesitas ar
paquete para crear el archivo .deb: ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
Hago muchos paquetes, y hacer uno completo no es un asunto baladí. En una nota positiva, los archivos y scripts requieren mucho menos trabajo. Puede crear un paquete de este tipo de forma muy sencilla con una herramienta conocida como debreate.
Debreate es una GUI realmente simple, solo para crear paquetes DEB simples. Simplemente puede especificar qué archivos, a dónde van y si/qué debe ejecutarse en la post/preinstalación/desinstalación. Solía hacer todos mis paquetes de la manera estándar, pero después de comenzar a usar esta herramienta, solo regresaré cuando sea necesario.