deb-hacer: (0.01) (potato) Crear paquetes .deb (resumen de maint-guide-es) 0.00 1/1/01 primera versión 0.01 13/5/01 debchange, config de editor por defecto, symlinks y man, doc -------- Este sistema esta pensado para codigo fuente (compilar, etc...) y usa make para crear la estructura del paquete .deb a crear (en debian/tmp) -------- * POR HACER *** ¿gestiona dh_installmanpages las paginas en otros idiomas? "es" * ANTES DE EMPEZAR - Tenemos codigo fuente y un Makefile para compilar/instalar - El código fuente esta dividido en directorios por comodidad * INSTALAR PAQUETES - maint-guide-es Guia del Nuevo Desarrollador de Debian (indispensable) - debian-policy - packaging-manual - developers-reference - deb-make - debhelper - fakeroot - lintian - devscripts * CONFIGURAR (UNA SOLA VEZ) 1) Poner nombre de maintainer y email para que se usen al crear el paquete - Nombre: el que aparece en /etc/passwd, para cambiarlo hacer como root chfn usuario - email: añadir a ~/.bash_profile export DEBEMAIL="email@proveedor.es" 2) El editor para el chagelog por defecto es vi para cambiarlo al mcedit: - Crear /usr/local/bin/mced conteniendo: ---8<--- #!/bin/sh # /usr/local/bin/mced Lanza el editor del mc # # Esto es necesario para llamar a mcedit desde /etc/alternatives/editor # ya que sino, como mcedit ya es un symlink a mc, solo se abriría un mc # en lugar del editor exec mcedit $@ --->8--- - Darle permisos de ejecución al script mced - Modificar el symlink /etc/alternatives/editor a /usr/local/bin/mced (en mi caso antes apuntaba a /usr/bin/nvi) * PASO A PASO 1) No es necesario entrar como root si se usa fakeroot 2) Entrar dentro del directorio de los fuentes p.e.: package-1.00 3) Al modificar un paquete anterior para hacer cambios al changelog: # Se puede usar "dch" o "debchange" (el primero es un alias) Llamando al editor por defecto: - dch # Actualiza última fecha y llama al editor - dch -i # Incrementa changelog (p.e.: 0.31-1 a 0.31-2) - dch -v 0.32-1 # Aumenta la versión del changelog a 0.32-1 Sin llamar al editor - dch -a Texto # Añade "Texto" al changelog y actualiza fecha 4) Lanzar ''dh_make'' - Type of package: single binary, multiple binary, or library? [s/m/l] - Se crea un directorio como package-1.00.orig (sin modificaciones) - Esto crea el directorio debian y lo rellena con archivos de control - changelog - rules 5) El Makefile de los fuentes debe instalar en $(DESTDIR)/ y no en / 6) Editar los archivos de control en el directorio debian (ejemplo para paquete de scripts) - Renombrar los que se usen quitando el ''.ex'' si lo llevan control - Architecture: all # Para paquete de solo scripts copyright rules - paquete de scripts: mover todo lo de binary-arch a binary-indep 7) Hacer páginas de manual - Usar como muestra "manpage.1.ex" y copiarlo a - comando-sistema.1 - archivo-config.5 - admin-sistema.8 - Una vez renombrado/copiado (sin .ex) el editor del mc colorea el nroff y puede usarse F3 (ver) para ver el resultado - Hacer ''man 7 man'' para ver la lista de macros disponibles ATENCION: Los symlink a paginas man en package-1.00/man _NO_ funcionan, hay que crear los symlink desde el Makefile con algo así: ---8<--- # destination for man pages MANDIR = $(DESTDIR)/usr/share/man install: all # ... # SYMLINKS PARA CIERTAS PAGINAS MAN (ln -s MAN_REAL SYMLINK) mkdir -p $(MANDIR)/man8 # -p = Para crear los padres de man8!!! cd $(MANDIR)/man8 ln -s firewall.8.gz $(MANDIR)/man8/firewall-list.8.gz ln -s firewall.8.gz $(MANDIR)/man8/firewall-resetcounters.8.gz ln -s firewall.8.gz $(MANDIR)/man8/firewall-stop.8.gz --->8--- 8) Añadir en el archivo debian/docs todos los archivos de documentación (irán a parar a /usr/share/docs/paquete) 9) Hacer paquete dpkg-buildpackage -rfakeroot -rfakeroot = permite crear paquetes sin ser root 10) Comprobar la ausencia de errores lintian -i package_1.0.0-1_i386.changes * MAS INFO - /usr/share/doc/maint-guide/maint-guide.es.html/index.html - /usr/share/doc/debian-policy/policy.html/index.html - /usr/share/doc/debian-policy/fhs/fhs.ps.gz - /usr/share/doc/debian-policy/fsstnd/fsstnd-1.2.ps.gz - /usr/share/doc/packaging-manual/packaging.html/index.html - /usr/doc/developers-reference/developers-reference.html/index.html