Entra en el directorio principal del programa y ejecuta el siguiente comando:
dpkg-buildpackage -rfakeroot
Esto hará todo por ti, sólo tendrás que dar tu clave secreta PGP dos veces. Una vez hayas hecho esto, verás cuatro nuevos ficheros en el directorio anterior (~/debian/):
Este es el paquete binario completo. Puedes usar dpkg o dselect para instalar o eliminar tanto este como cualquier otro paquete.
Este es el código fuente original empaquetado de forma que si alguien quiere recrear su paquete desde cero puede hacerlo. O si no está usando el sistema de paquetes de Debian, pero necesita descargarse las fuentes y compilarlo manualmente.
Este es un sumario de los contenidos del código fuente. Este fichero se genera
a partir del fichero gentoo-0.9.12/debian/control y se usa cuando se
descomprimen las fuentes con dpkg-source(1)
. Este fichero está
firmado con PGP de forma que cualquiera puede estar seguro de que es realmente
suyo.
Este fichero comprimido contiene todos y cada uno de los cambios que hizo al
código fuente original, en un formato conocido como "diff unificado".
El que lo hace y lo usa es dpkg-source(1)
.
Este fichero describe todos los cambios hechos en la revisión actual del paquete, y se usa por los programas de gestión del archivo FTP para instalar los paquetes binarios y fuentes en él. Se genera parcialmente a partir del fichero gentoo-0.9.12/debian/changelog y el fichero .dsc.
Mientras sigues trabajando en el paquete, cambiará su comportamiento y se le
añadirán nuevas funciones. Las personas que descarguen tu paquete pueden mirar
este fichero y ver qué ha cambiado. Las largas listas de números son las sumas
MD5 para los ficheros. Las personas que descarguen estos ficheros pueden
comprobarlos con md5sum(1)
y si los números no coinciden, sabrán
que el fichero está corrupto o ha sido modificado. Este fichero está firmado
con PGP de forma que cualquiera puede estar aún más seguro de que es realmente
tuyo.
Con un paquete grande, puede que no quieras recompilar desde cero cada vez que tocas un detalle en el fichero debian/rules. Para propósitos de prueba, puedes hacer un fichero .deb sin necesidad de recompilar las fuentes originales de esta forma:
fakeroot debian/rules binary
Sólo asegúrate de que tu regla `install' no tiene un hijo `install-stamp' (éste es el valor por defecto actualmente), para asegurarse de que se ejecuta `dh_clean -k' cada vez. Y una vez que hayas terminado con los cambios, no te olvides de reconstruir el paquete siguiendo el procedimiento habitual, para poder enviarlo de la forma correcta.
Ejecuta lintian(1)
sobre tu fichero de cambios .changes; este
programa comprobará muchos errores comunes al empaquetar. El comando es:
lintian -i gentoo_0.9.12-1_i386.changes
Por supuesto, cambia el nombre de fichero con el nombre del fichero de cambios generado por tu paquete. Si parece que hay algunos errores (líneas que comienzan por E:), lee la explicación (líneas N:), corrige errores, y reconstruye como se describe en Construir el paquete., Sección 6.1. Si hay líneas que comienzan con W:, son sólo avisos (warnings, n. del t.), así que puedes estar seguro de que tu paquete está bien (pero seguramente necesita algún ajuste fino).
Observa que puedes construir el paquete con dpkg-buildpackage y ejecutar
lintian todo de una sola vez con debuild(1)
.
Mira dentro del paquete usando un gestor de ficheros como mc(1)
, o
descomprímelo en algún punto temporal usando dpkg-deb(1)
. Estáte
atento a ficheros innecesarios extra y algunas otras cosas que no se limpiaron.
Pista: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz` te dará una lista de tus
cambios/contribuciones a las fuentes, y `dpkg-deb -c gentoo_0.9.12-1_i386.deb`
listará los ficheros en el paquete.
Instala el paquete para probarlo tú mismo, p. ej. usando la orden
debi(1)
como superusuario. Intenta instalarlo y ejecutarlo en
otras máquinas distintas de la tuya y estáte atento para detectar errores o
avisos tanto en la instalación como en la ejecución del programa.
Más tarde, cuando construyas una nueva versión, deberías hacer lo siguiente para asegurar la actualización básica del paquete:
Ahora que has probado tu nuevo paquete en profundidad, necesitarás enviar estos
ficheros a master.debian.org, usando dupload(1)
. Primero debes
editar el fichero de configuración de dupload, ~/.dupload.conf. Puedes poner
algo así:
package config; $default_host = "master"; $cfg{"master"}{"method"} = "scpb"; $cfg{"master"}{"login"} = "joy"; $cfg{"master"}{"visibleuser"} = "jrodin"; $cfg{"master"}{"visiblename"} = "jagor.srce.hr"; $cfg{"master"}{"fullname"} = "Josip Rodin"; $cfg{"non-us"}{"method"} = "scpb"; $cfg{"non-us"}{"login"} = "joy"; $cfg{"non-us"}{"visibleuser"} = "jrodin"; $cfg{"non-us"}{"visiblename"} = "jagor.srce.hr"; $cfg{"non-us"}{"fullname"} = "Josip Rodin"; 1;
Por supuesto, cambia mis valores personales a los tuyos, y lee la página de
manual dupload.conf(5)
para comprender qué significa cada una de
estas opciones.
Entonces conecta con tu proveedor de Internet, y ejecuta la orden:
dupload --to master gentoo_0.9.12-1_i386.changes
Dupload comprueba que las sumas md5 coinciden con aquellas en el fichero .changes, y te avisará de rehacer el paquete como se describe en Construir el paquete., Sección 6.1 para poder enviarlo correctamente.
Dupload te preguntará tu contraseña en master.debian.org, enviará tus paquetes,
y hará un pequeño anuncio sobre su envío en debian-devel-changes@lists.debian.org
si es necesario.
Si vives en Europa, puedes usar otras colas de envío en lugar de master. Para
más detalles lea dupload(1)
, dupload(5)
y la
Referencia del Desarrollador.
Supongamos que se ha creado un informe de un fallo en tu paquete, de número #54321, y que describe un problema que puedes solucionar. Para crear una nueva revisión del paquete, necesitas:
Ahora consideremos una situación diferente, algo más complicada: ha salido una versión nueva de las fuentes originales, y, por supuesto, deseas empaquetarla. Debes hacer lo siguiente:
uupdate -u gentoo-0.9.13.tar.gz
Por supuesto, reemplaza este nombre de fichero con el nombre de las fuentes de
tu programa. uupdate(1)
renombrará apropiadamente este fichero
tar, intentará aplicar los cambios de tu fichero .diff.gz previo y actualizará
el nuevo fichero debian/changelog.
Observa que si has puesto el fichero `debian/watch' como se describe en watch.ex., Sección 5.6, puedes ejecutar
uscan(1)
para buscar automágicamente fuentes revisadas,
descargarlas, y ejecutar uupdate.
Antes de que te decidas a preguntar en lugares públicos, por favor, simplemente
RTFM ("Lee El Jodido Manual", n. del t.). Esto incluye la
documentación en /usr/share/doc/dpkg, /usr/share/doc/debian,
/usr/share/doc/package/* y las páginas de man/info para todos los programas
mencionados en este artículo. Cuando recibas un aviso de fallo (bug report, n.
del t.) (sí, avisos de fallos ¡de verdad!) sabrás que es el momento de indagar
en el Sistema de Seguimiento de
Fallos de Debian
y leer la documentación de allí, para poder tratar
los informes de forma eficiente.
Si te unes a la lista de distribución de Mentores de Debian en debian-mentors@lists.debian.org
podrás tener a desarrolladores de Debian con experiencia que te ayudarán con
las preguntas que pueda tener. Puedes subscribirte a ella enviando un correo
electrónico a debian-mentors-request@lists.debian.org
con la palabra `subscribe' en el tema del mensaje.
Si aún tiene preguntas, házlas en la lista de distribución de Desarrolladores
de Debian en debian-devel@lists.debian.org
.
Puedes subscribirte a ella enviando un correo electrónico a debian-devel-request@lists.debian.org
con la palabra `subscribe' en el tema del mensaje. Si ya eres un desarrollador
de Debian deberías estar suscrito a ella de todas formas.
Aunque todo funcionara bien, es el momento de empezar a rezar. ¿Por qué? Por que en sólo unas horas (o días) usuarios de todo el mundo empezarán a usar tu paquete, y si cometiste algún error crítico serás bombardeado por correos de centenares de usuarios furiosos de Debian... Sólo bromeaba :-)
Relájate y prepárate para recibir reportes de fallos, porque hay mucho más trabajo que hacer antes de seguir completamente las políticas de Debian (una vez más lee la documentación real para más detalles). ¡Buena suerte!
jrodin@jagor.srce.hr
jfs@computer.org