Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > debian > Notas sobre empaquetado en Debian

Notas sobre empaquetado en Debian

PENDIENTE DE COMPLETAR

Construyendo paquetes

Lo que pretendemos aquí es construir paquetes Debian en un directorio distinto del padre de donde tenemos las fuentes. Es decir, los resultados la construcción de un paquete Debian son los siguientes archivos:

  • ../paquete_version.tar.gz: fuentes originales
  • ../paquete_version.diff.gz: cambios realizados en el fuente original para convertirlo en un paquete Debian.
  • ../paquete_version.dsc: archivo de control del paquete fuente
  • ../paquete_version.changes: descripción de los cambios en el paquete
  • ../paquete_version.deb: paquete Debian en sí, aunque pueden ser varios.

El resto de los comentarios están orientados a la construcción de paquetes, aunque las herramientas mencionadas puedan hacer otras cosas (como extraer el contenido de un archivo).

dpkg-buildpackage

Este programa facilita la construcción de un paquete efectuando las siguientes tareas:

  1. dpkg-source
  2. debian/rules clean
  3. debian/rules build
  4. debian/rules binary
  5. dpkg-genchanges
  6. gpg

dpkg-source

Construye los siguientes archivos

  • .dsc
  • .tar.gz
  • .diff.gz

en el directorio actual.

debian/rules clean

Aunque esto puede variar total y absolutamente, el valor predeterminado de dh-make para un paquete normal es el siguiente:

  1. dh_testdir
  2. dh_testroot
  3. borrar la marca de construcción build-stamp
  4. llamar al limpiador del paquete, que puede ser algo como
    • make distclean
    • perl Build distclean
  5. dh_clean

debian/rules build

Esta fase es la que se construye el programa ó librería, generalmente compilándolo, aunque en muchos casos no es necesaria.

Normalmente se hace lo siguiente tras haber superado la fase de configuración:

  1. dh_testdir
  2. compilar el programa:
    • make
    • perl Build
  3. touch build-stamp (señala la fase completada)

debian/rules install

Esta fase es la encargada de instalar los componentes del paquete como si se tratase de su localización final en el sistema. Generalmente se les engaña para que

  1. se instalen en otro sitio que no sea el raíz (variable de entorno $DESTDIR)
  2. usen privilegios de administración falsos (mediante algo como fakeroot)

y suelen hacer esto:

  1. dh_testdir
  2. dh_testroot
  3. dh_clean -k (para que no borre los archivos en debian/files)
  4. dh_installdirs (opcional)
  5. instalar el programa mediante (generalmente)
    • $(MAKE) install DESTDIR=$(CURDIR)/debian/paquete
    • $(PERL) Build install destdir=$(TMP)
  6. touch install-stamp (señala la fase completada)

debian/rules binary

Este paso consiste generalmente en dos: 1. construir paquetes independientes de la arquitectura (binary-indep) 1. construir paquetes dependientes de la arquitectura (binary-arch)

en nuestro caso nos centramos en la fase final de empaquetado sea cual sea su dependencia de la arquitectura, sobre todo pensando que la mayor parte de mis paquetes están escritos en Perl y tienen muy pocas ó ninguna dependencias de compilaciones.

Los pasos principales suelen ser los siguientes, aunque pueden existir muchos otros, y me voy a limitar a marcar aquellos que producen los archivos que buscamos para saber cómo trasladarlos a un directorio final concreto:

  1. dh_testdir
  2. dh_testroot
  3. dh_installchangelogs
  4. dh_installdocs
  5. dh_installexamples
  6. dh_installmenu
  7. dh_installdebconf
  8. dh_installlogrotate
  9. dh_installemacsen
  10. dh_installpam
  11. dh_installmime
  12. dh_python
  13. dh_installinit
  14. dh_installcron
  15. dh_installinfo
  16. dh_installman
  17. dh_link
  18. dh_strip
  19. dh_compress
  20. dh_fixperms
  21. dh_perl
  22. dh_makeshlibs
  23. dh_installdeb
  24. dh_shlibdeps
  25. dh_gencontrol
  26. dh_md5sums
  27. dh_buildeb

dpkg-gencontrol

dpkg-shlibdeps

dpkg-distaddfile

dpkg-genchanges

dpkg-parsechangelog

dpkg-architecture

dh_builddeb

Para que el paquete sea construído en un directorio distinto al padre del que estamos trabajando se debe usar:

dh_buildeb --destdir=directorio

en el archivo debian/rules.