[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ siguiente ]
Vamos a construir nuestro propio paquete (o, mejor aún, adoptar un paquete ya existente).
Probablemente hayas escogido ya el paquete que deseas construir. Lo primero
que debes hacer es comprobar si el paquete está ya en el archivo de la
distribución utilizando aptitude
.
También debes consultar la página de búsqueda de
paquetes
y en el Sistema de seguimiento
de paquetes de Debian
.
Si el paquete ya existe, ¡instálalo! :-) Si te encuentras con que el paquete
es un paquete huérfano (cuando su desarrollador es el Debian QA Group
, es decir, el grupo de
calidad de Debian), puedes adoptarlo (convertirte en el responsable de
empaquetarlo y mantenerlo) si está disponible, comprueba si realmente está
disponible en «Debian Bug report
logs»: Errores en el paquete «wnpp» en la distribución de trabajo
(«inestable» o «sid»)
. También puedes adoptar un paquete para
el cual se ha emitido una «solicitud de adopción» («Request for Adoption»
o RFA) por su desarrollador o por un DD (véase http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=594398
a modo de ejemplo).
Puedes consultar las siguientes listas de paquetes huérfanos o de RFA en:
A modo de nota al margen, es importante tener presente que Debian incorpora paquetes de un gran número de programas de todo tipo, y que la cantidad de paquetes disponibles en el repositorio de Debian es mucho mejor al de colaboradores con permiso para incorporar paquetes al repositorio. En consecuencia, la colaboración en el mantenimiento de paquetes que ya están en el repositorio se valora muy positivamente (y es más fácil conseguir patrocinador) por el resto de desarrolladores [5]. Puede hacer esto de distintas formas.
hacerte cargo de paquetes huérfanos pero que son utilizados frecuentemente por otros usuarios
consultando equipos de
desarrolladores
.
seleccionando errores de los paquetes más populares
preparando paquetes
QA o NMU
Si puedes adoptar el paquete, descarga las fuentes (con algo como «apt-get source packagename») y examínalas. Desgraciadamente este documento no incluye aún información exhaustiva sobre la adopción de paquetes. No debería ser difícil entender cómo funciona el paquete ya que alguien ha hecho el trabajo inicial por ti. Aún así es mejor que sigas leyendo, muchos de los consejos que se dan a continuación serán también aplicables para tu caso.
Si el paquete es nuevo y decides que te gustaría verlo en Debian debes seguir los pasos indicados a continuación:
En primer lugar deberías saber cómo funciona, y haberlo utilizado durante algún tiempo (para confirmar su utilidad).
Comprueba que no hay nadie más trabajando ya en el paquete consultando
la lista de
paquetes en los que se está trabajando
. Si nadie está ya
trabajando en el empaquetado del programa, envía un informe de error de tipo
ITP («Intent To Package») al wnpp
meta-paquete utilizando el
programa de comunicación de errores reportbug
(accesible en el
menú de herramientas del sistema). Si ya hay alguien trabajando en él,
contacta con esa persona: es posible que podáis colaborar. En caso contrario,
intenta encontrar otro programa interesante que nadie mantenga.
El programa debe tener una licencia.
Si el paquete debe pertenecer a la sección main el programa
debe cumplir con las Directrices de Debian para el software
(DFSG) libre (veáse http://www.debian.org/social_contract.html#guidelines
)
y no debe precisar la instalación de otro paquete que no pertenezca a
la sección main para su compilación o ejecución como
requiere la directiva de Debian («Debian Policy»).
Para paquetes de la sección contrib la licencia debe cumplir todos los requisitos de la DFSG pero puede precisar la instalación de otro paquete que no sea de la sección main para su compilación o ejecución.
Para paquetes de la sección non-free, no es necesario que la licencia cumpla todos los requisitos de la DFSG pero debe permitir la distribución del programa.
Si no estás seguro sobre en qué lugar debería ir, envía el texto de la
licencia y pide consejo con un correo (en inglés) [6] dirigido a debian-legal@lists.debian.org
.
El programa no debería ejecutarse con «setuid root», o aún mejor: no debería ser «setuid» ni «setgid».
El programa no debería ser un demonio, o algo que vaya en los directorios */sbin, o abrir un puerto como usuario administrador.
El programa debería estar compuesto por binarios ejecutables, no intentes empaquetar aún bibliotecas (son difíciles).
El programa debería tener una buena documentación o al menos un código fuente legible y no ofuscado.
Deberías contactar con el autor o autores del programa para comprobar su conformidad con el empaquetado. Es importante que el autor o autores sigan manteniendo el programa para que puedas en el futuro consultarle/s en caso de que haya problemas específicos. No deberías intentar empaquetar programas que no estén mantenidos.
Por supuesto, esta lista es para tomar medidas de seguridad, y con la
intención de salvarte de usuarios enfurecidos si haces algo mal con algún
demonio «setuid»... Cuando tengas más experiencia en empaquetar, podrás
hacer este tipo de paquetes: incluso los desarrolladores más experimentados
hacen consultas en la lista de correo debian-mentors@lists.debian.org
cuando tienen dudas. La gente te ayudará gustosamente.
Para más ayuda sobre el tema, lee la Referencia del
desarrollador
.
Lo primero que debes hacer es encontrar y descargar el código fuente original.
A partir de este punto se da por supuesto que ya tienes el código fuente que
obtuviste de la página del autor. Las fuentes de los programas libres de
GNU/Linux generalmente vienen en formato tar/gzip
, con extensión
.tar.gz
o en formato tar
+bzip2
con
extensión .tar.bz2
, y generalmente contienen un subdirectorio
llamado programa-versión
con todas las
fuentes en él.
Si la última versión del código fuente se puede obtener de un sistema VCS
del tipo Git, Subversion o un repositorio CVS, puedes descargarlo ejecutando
«git clone», «cvs co» o «svn co»
y, a continuación comprimiéndolo en un archivo con formato
tar
+gzip
ejecutando la opción
«--exclude-vcs».
Si tu programa viene en otro tipo de archivo (por ejemplo, el fichero termina
en .Z
o .zip
[7]), descomprímelo con las herramientas adecuadas y
reempaquetalo de nuevo.
Como ejemplo, usaré el programa conocido como gentoo
, un gestor
de ficheros de X11 en GTK+.[8]
Crea un subdirectorio bajo tu directorio personal llamado «debian» o «deb»
o lo que creas apropiado (por ejemplo ~/gentoo/
estaría bien en
este caso). Mueve a él el archivo que has descargado, y descomprímelo de la
siguiente forma: «tar xzf gentoo-0.9.12.tar.gz». Asegúrate de
que no hay errores, incluso errores «irrelevantes», porque es muy probable
que haya problemas al desempaquetarlo en sistemas de otras personas, cuyas
herramientas de desempaquetado puede que no ignoren estas anomalías. En el
terminal de órdenes, debería ver el mensaje mostrado a continuación.
$ mkdir ~/gentoo ; cd ~/gentoo $ wget http://www.example.org/gentoo-0.9.12.tar.gz $ tar xvzf gentoo-0.9.12.tar.gz $ ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz
Ahora tienes otro subdirectorio, llamado gentoo-0.9.12
. Muévete
a ese directorio y lee en profundidad la documentación que
encuentres. Generalmente se encuentra en ficheros que se llaman
README*
, INSTALL*
, *.lsm
o
*.html
. Allí encontrarás instrucciones de cómo compilar e
instalar el programa (muy probablemente asumirán que lo quieres instalar en el
directorio /usr/local/bin
, no harás esto, pero eso lo veremos
más adelante en Instalación del
programa, Sección 3.3).
Los programa sencillos incluyen un fichero Makefile
y pueden
generalmente compilarse con «make». Algunos de ellos soportan
«make check», esta orden ejecuta las comprobaciones automáticas
que estén definidas. Generalmente se instalarán en sus directorios de
destino ejecutando «make install».
Ahora intenta compilar, y ejecutar el programa, para asegurarte de que funciona bien y de que no genera ningún error en el sistema mientras está instalándose o ejecutándose.
También, generalmente, puedes ejecutar «make clean» (o mejor «make distclean») para limpiar el directorio donde se compila el programa. A veces hay incluso un «make uninstall» que se puede utilizar para borrar todos los archivos instalados.
Buena parte de los programas libres están escritos en lenguaje C
y C++
. Muchos
utilizan las Autotools y CMake para compilar en diferentes plataformas. Estas
herramientas se utilizan para generar un archivo Makefile
y otros
archivos necesarios para la compilación. Así, muchos programas se compilan
ejecutando «make; make install».
Las Autotools
son el sistema de compilación GNU e incluyen «Autoconf», «Automake»,
«Libtool» y gettext
. Confirmarás
que el programa utiliza las autoools por la presencia de los archivos
configure.ac
, Makefile.am
, y
Makefile.in
. [9]
El primer paso en el uso de Autotools es la ejecución por parte del autor de la orden «autoreconf -i -f» la cual genera, a partir de los archivos fuente (a la izquierda del gráfico) los archivos que utilizará la orden configure (a la derecha del gráfico).
configure.ac-----+-> autoreconf -+-> configure Makefile.am -----+ | +-> Makefile.in src/Makefile.am -+ | +-> src/Makefile.in | +-> config.h.in automake aclocal aclocal.m4 autoheader
La edición de los archivos configure.ac
y
Makefile.am
requiere conocer el funcionamiento de
autoconf
y automake
. Véase «info
autoconf» y «info automake» (ejecutando las órdenes en
el terminal).
El segundo paso el uso de Autotools es la ejecución de «./configure
&& make» en el directorio del código fuente para compilar el
programa generando un archivo binary
.
Makefile.in -----+ +-> Makefile -----+-> make -> binary src/Makefile.in -+-> ./configure -+-> src/Makefile -+ config.h.in -----+ +-> config.h -----+ | config.status -+ config.guess --+
Puedes hacer cambios en el archivo Makefile
como el directorio de
instalación predeterminado usando las opciones de configure,
p.ej: «./configure --prefix=/usr
».
Aunque no es necesario, la actualización del archivo configure
y
de otros archivos con la orden autoreconf -i -f es la mejor manera
para comprobar la compatibilidad del código fuente.
CMake
es un
sistema de compilación alternativo. La presencia del archivo
CMakeLists.txt
te indicará que se utiliza esta opción para
compilar el programa.
Deberías empezar a construir tu paquete en un directorio de fuentes completamente limpio, o simplemente con las fuentes recién desempaquetadas.
Para construir correctamente el paquete, debes cambiar el nombre original del
programa a letras minúsculas (si no lo está ya), y deberías renombrar el
directorio de fuentes a nombre_de_paquete-versión
.
Si el nombre del programa está formado por varias palabras, contráelas a una
palabra o haz una abreviatura. Por ejemplo, el paquete del programa «el
editor para X de Javi» se podría llamar javiedx
o
jle4x
, o lo que decidas, siempre y cuando no se exceda de unos
límites razonables, como 20 caracteres.
Comprueba también la versión exacta del programa (la que se incluye en la
versión del paquete). Si el programa no está numerado con versiones del
estilo de X.Y.Z, pero sí con fecha de publicación, eres libre de utilizar la
fecha como número de versión, precedida por «0.0» (sólo por si los
desarrolladores originales deciden sacar una versión nueva como 1.0). Así,
si la fecha de las fuentes es el 19 de diciembre de 1998, puedes utilizar la
cadena 0 0.0.19981219 (que utiliza el formato de fecha ISO 8601, N. del T.)
como número de versión. Esto garantizará el buen funcionamiento de la
actualización con el programa dpkg
. [10]
Aún así habrá algunos programas que ni siquiera estén numerados, en cuyo caso deberás contactar con el autor original para ver si tiene algún otro sistema de seguimiento de revisiones.
Primero debes configurar las variables de entorno Bash shell $DEBEMAIL y $DEBFULLNAME que son utilizadas por varias herramientas de mantenimiento de Debian para obtener tu nombre y correo electrónico como se indica a continuación[11].
$ cat >>~/.bashrc <<EOF DEBEMAIL=tu.dirección@ejemplo.org DEBFULLNAME="tu nombre y apellido" export DEBEMAIL DEBFULLNAME EOF
Ahora puedes iniciar la creación del paquete Debian ejecutando la orden
dh_make
como se describe a continuación.
$ cd ~/gentoo/gentoo-0.9.12 $ dh_make -f ../gentoo-0.9.12.tar.gz
Deberás cambiar el nombre del archivo por el correspondiente a tus fuentes [12]. Véase
dh_make(1)
para una descripción más detallada.
Saldrá alguna información. Te preguntará qué tipo de paquete deseas crear.
Gentoo es un paquete de binario simple (crea sólo un binario) y, por tanto,
sólo un fichero .deb
- así que seleccionaremos la primera
opción, con la tecla «s». Comprueba la información que aparece en la
pantalla y confirma pulsando la tecla <intro> [13].
Tras ejecutar dh_make
, se crea una copia del código original con
el nombre gentoo_0.9.12.orig.tar.gz
en el directorio raíz para
facilitar la creación del paquete de fuentes no nativo de Debian con el
archivo debian.tar.gz
.
$ cd ~/gentoo ; ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz gentoo_0.9.12.orig.tar.gz
Observa que hay dos cambios clave en el nombre del fichero
gentoo_0.9.12.orig.tar.gz
:
El nombre del paquete y la versión están separados por «_».
Hay un «orig.» antes de «tar.gz».
Observa que la ejecución de la orden ha creado varios archivos de plantilla en
el directorio debian
. Se tratará sobre ellos en Archivos necesarios en el directoriodebian
,
Capítulo 4 y Otros ficheros en el directorio
debian
., Capítulo 5. El proceso de empaquetado no está
totalmente automatizado. Se tratará de la modificación de los archivos
Debian en Modificar las fuentes, Capítulo 3.
A continuación se compilará el paquete Debian en el apartado Construir el paquete, Capítulo 6, la revisión del
resultado en Cómo comprobar tu paquete para
encontrar fallos, Capítulo 7 y el envío del paquete en Enviar el paquete, Capítulo 8. Se explicará
cada una de estas etapas a continuación.
Como nuevo desarrollador, se desaconseja crear paquetes complicados, por ejemplo:
múltiples paquetes binarios
paquetes de bibliotecas
paquetes con módulos del núcleo,
paquetes con parches del núcleo,
paquetes en los que el formato del archivo fuente no es en tar.gz. ni en tar.bz2, o
paquetes cuyas fuentes contienen partes que no se pueden distribuir.
Estos casos no son extremadamente difíciles pero es preciso tener algunos conocimientos más, así que aquí no se describirá el proceso de empaquetado para este tipo de paquetes.
Si accidentalmente eliminas alguna de las plantillas del directorio
debian
, puedes regenerarlas ejecutando dh_make
con la
opción --addmissing.
Ten en cuenta que deberías ejecutar dh_make
sólo una
vez, y que no se comportará correctamente si lo haces otra vez en el
mismo directorio ya «debianizado». La actualización de un paquete ya creado
es un proceso más complejo: es probable que se haya construido con
procedimientos distintos al actual. Es mejor trabajar con paquetes
actualizados para aprender lo básico del empaquetado. Esto también significa
que usarás un método distinto para crear una nueva revisión o una nueva
versión de tu paquete en el futuro. Lee más sobre esto más adelante, en Actualizar el paquete, Capítulo 9.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ siguiente ]
Guía del nuevo desarrollador de Debian
versión 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.org
jfs@debian.org
ender@debian.org
ana@debian.org
fcocuadrado@gmail.com
tangram.peces@gmail.com