Superior: Creaci�n de paquetes de Anterior: Acerca de este art�culo |
Esta secci�n es la traducci�n del documento ``Debian New Maintainers Guide'' de Josip Rodin, e incluida en el paquete Debian 'maint-guide-es'
Este documento tratar� de describir c�mo se construye un paquete Debian GNU/Linux para el usuario normal de Debian (y futuros desarrolladores) en un lenguaje informal, y con multitud de ejemplos. Hay un antiguo dicho romano que dice, �Longum iter est per preaecepta, breve et efficax per exempla! (�Es un largo camino con las reglas, pero corto y eficiente con ejemplos!)
Una de las cosas que hace a Debian una de las distribuciones m�s importantes del mercado es su sistema de paquetes. Aunque hay una gran cantidad de programas disponibles en formato de paquetes de Debian, algunas veces necesitar� instalar programas que no est�n as�. Puede preguntarse c�mo har� vd. sus propios paquetes y que quiz�s esta sea una tarea demasiada dif�cil. Bueno, si es vd. un novato en Linux, s� es duro, pero si eres todo un experto, no deber�as estar leyendo esto ahora mismo. :-) Necesitas saber algo sobre programaci�n en Unix, pero desde luego no tienes que ser un maestro.
Antes de empezar nada, deber�as asegurarte de instalar adecuadamente algunos paquetes con dpkg(8) (esto es, `dpkg -i paquete`, o a trav�s de alguno de sus interfaces como dselect y apt). Este documento fue escrito mientras la 'hamm' 2.0 y 'slink' 2.1 eran las distribuciones estables oficiales de Debian, por ello los paquetes que se indicar�n aqu� son aquellos de 2.1.
Los siguientes paquetes vienen en una instalaci�n est�ndar de Debian 2.1, as� que probablemente ya los tenga. Aun as�, deber�a comprobarlo con `dpkg -s paquete`.
De la secci�n 'devel' de la distribuci�n posiblemente necesite instalar esto usted mismo:
Y de la secci�n 'utils' necesitar� obtener estos paquetes:
Por �ltimo, estos paquetes de gran importancia est�n en la secci�n 'doc' de la distribuci�n:
Tambi�n necesitar� el paquete de criptograf�a pgp(1) para firmar digitalmente su paquete. Esto es especialmente importante si quiere distribuir su paquete a otras personas (y har� precisamente esto cuando si su paquete se incluye en la distribuci�n de Debian). Sin embargo, debido a las leyes de exportaci�n de los EEUU, no puede simplemente obtenerlo de su servidor de FTP de Debian m�s cercano. Pero su servidor de FTP tendr� un fichero llamado README.non-us, que le indicar� c�mo obtener una copia de pgp (pista: ftp://nonus.debian.org/debian-non-US/).
Las breves descripciones dadas anteriormente s�lo sirven para introducirle a lo que hace cada paquete. Antes de continuar, por favor lea la documentaci�n de cada programa, al menos para su uso normal. Puede parecerle algo duro ahora, pero m�s adelante estar� muy contento de haberla leido.
Usted puede construir dos tipos de paquetes, fuentes y binarios. Un paquete fuente contiene el c�digo que puede compilar en un programa. Un paquete binario contiene s�lo el programa terminado. �No mezcle los t�rminos como fuentes de un programa y el paquete fuente de un programa! Por favor lea los otros manuales si necesita m�s detalles sobre terminolog�a.
Debian usa el t�rmino 'desarrollador' para la persona que hace paquetes, 'autor' para la persona que hizo el programa, y 'desarrollador fuente' ('upstream maintainer', n. del t.) para la persona que actualmenete mantiene el programa. Generalmente el autor y el desarrollador fuente son la misma persona - y algunas veces incluso el desarrollador es el mismo. Si hace vd. un programa, y quiere incluirlo en Debian, tiene total libertad para solicitar convertirse en desarrollador.
Despu�s de construir su paquete (o mientras lo hace), deber� convertirse en un desarrollador oficial de Debian si desea que su programa entre en la pr�xima distribuci�n (si el programa es �til, �por qu� no?). Este proceso se explica en la Referencia del Desarrollador, por favor, leala.
Mientras que la documentaci�n en el Rinc�n del Desarrollador (http://www.debian.org/devel/) no est� tan clara sobre d�nde y c�mo deber�a empezar un desarrollador su trabajo, este documento explicara cada peque�o (y algunas veces incluso irrelevante) detalle, para ayudarle crear ese primer paquete, y ganar alguna experiencia en la construcci�n de nuevas versiones de �ste y quiz�s otros paquetes m�s adelante.
Porbablemente haya escogido ya el paquete que desea construir, pero aqu� hay algunos punteros para los novatos:
dpkg -s programa
dpkg -l '*programa*'
Por supuesto, esta lista es para tomar medidas de seguridad, y con la intenci�n de salvarle de usuarios enfurecidos is hace algo mal con alg�n demonio de ftp setuid...Pero cuando tenga m�s experiencia en empaquetar cosas, podr� hacer este tipo de paquetes, pero incluso los desarrolladores m�s experimentados preguntan en la lista de distribuci�n de debian-devel cuando tienen dudas. Y la gente all� le ayudara gustosamente.
Para m�s ayuda sobre esto, lea la Referencia del Desarrollador
La primera cosa a hacer es encontrar y descargar el paquete original. Supongo que ya tiene el c�digo fuente que obtuvo de la p�gina del autor. Las fuentes de Linux generalmente vienen en el formato tar/gzip, con extensi�n .tar.gz o .tgz, y generalmente contienen un subdirectorio llamado programa-versi�n con todas las fuentes en �l. Si su programa viene en otro tipo de archivo (como por ejemplo, el fichero termina con .Z o .zip), descomprimal con las herramientas adecuadas, o pregunte en debian-mentors si no est� seguro de c�mo se puede desempaquetar correctamente (pista: pruebe `file archivo.extension`).
Como ejemplo, usar� el programa conocido como 'gentoo', un gestor de ficheros de X11 con GTK+.
Cree un subdirectorio bajo /usr/local/src que tenga el mismo nombre que su programa (/usr/local/src/gentoo en este caso). Y mueva a �l el archivo que ha descargado, y descomprimalo de la siguiente forma: `tar -xzf gentoo-0.9.12.tar.gz`. Este proceso (algo largo) no dar� ninguna salida (excepto si hay alg�n error, con lo que tendr� que bajarse de nuevo el archivo o comprobar que es un fichero tar/gzip), pero tendr� las fuentes desempaquetadas en un subdirectorio llamado 'gentoo-0.9.12' en /usr/local/src/gentoo.
Muevase a ese directorio y lea en profundidad la documentaci�n que encuentre. Est� generalmente en ficheros que se llaman README*, INSTALL*, *.lsm o *.html. All� encontrar� instrucciones de c�mo compilar e instalar el programa (generalmente para el directorio /usr/local/bin).
El proceso varia de programas a programas, pero gran parte de los programas modernos vienen con un script 'configure' que configura las fuentes para su sistema y se asegura de que su sistema est� en condiciones de compilarlo. Despu�s de configurarlo (con `./configure`), los programas generalmente se compilan con `make`, y se instalarn en sus directorios de destino ejecutando `make install`.
As� que compile, instale y pruebe el programa, asegurese de que funciona bien y que no rompe nada m�s mientras est� instal�ndose o ejecut�ndose.
Para construir correctamente el paquete, deber�a mover el directorio de fuentes a <nombre_de_paquete>-<versi�n>. Como puede ver, el programa de ejemplo no lo necesita, pero quiz�s su programa s�. Tambi�n, ponga el nombre en min�sculas si no o est� ya. Si consiste de una o m�s palabras, contraialas a una palabra o haga una abreviatura. Por ejemplo, el paquete del programa "el editor para X de Javi" se podr�a llamar javiedx o jle4x, o lo que decida, siempre y cuando no se exceda de unos l�mites razonables, como 15 caracteres.
Tambi�n compruebe la versi�n exacta del programa (�no del paquete!). Si el programa no est� numerado con versiones del estilo de X.Y.Z, pero con fecha de lanzamiento, es usted libre de utilizar la fecha (si la fecha es el 19 de diciembre de 1998, utilize la abreviatura norteamericana 19981219) cmomo n�mero de versi�n. A�n as� habr� algunos que ni siquiera est�n numerados, en cualqueir caso debe contactar con el 'desarrollador fuente' para ver si tienen alg�n otro sistema de seguimiento de revisiones.
Antes de empezar con el proceso dh_make, deber�a poner en su variable de entorno $EMAIL si direcci�n de correo, y lo hara haciendo algo como esto en su shell (esto es para basj).
export EMAIL=usuario.login@algun_lugar.net
Aseg�rese que est� en el directorio donde est�n las fuentes del programa, y ejecute lo siguiente:
dh_make
Saldr� alguna informaci�n. Le preguntar� qu� tipo de paquete desea crear. Gentoo es un solo paquete de binarios - crea s�lo un binario, y, por tanto, s�lo un fichero .deb - as� que seleccionaremos la primera opci�n, con la tecla 's'. Como nuevo desarrollador, est� desaconsejado crear paquetes multibinarios, o librer�as, como se explic� antes.
Tenga en cuenta que deber�a ejecutar dh_make s�lo una vez, y que no se comportar� correctamente si lo hace otra vez en el mismo directorio, ya ``debianizado''. Esto tambi�n significa que usuar� un m�todo distinto para crear una nueva revisi�n o una nueva versi�n de su paquete en el futuro. Lea m�s sobre esto m�s adelante en el texto.
Cuando dh_make termina, y haya ajustado el Makefile del propio programa, podr� hacer `cd ..` para ver el nuevo directorio que ha creado, que se llama 'gentoo-0.9.12.orig'. Contiene el c�digo fuente original que de ahora en adelante permanecer� intacto. El directorio 'gentoo-0.9.12' todav�a existe, es all� donde har� las modificaciones.
Normalmente, los programas se instalan a s� mismos en el subdirectorio /usr/local. Pero los paquetes Debian no pueden utilizar este directorio ya que est� reservado para el uso privado del administrador (o del usuario). Esto significa que tiene que mirar el Makefile the gentoo. Este es el script make(1) que usar� para automatizar la creaci�n de �ste programa. Para m�s detalles sobre Makefiles, mire en `el fichero `rules'.' s-rules.
Tenga en cuenta que no hay espacio aqu� para entrar en todos los detalles respecto a los arreglos, pero aqu� hay algunos de los problemas frecuentes a los que se enfrenta uno.
# �D�nde poner el binario en 'make install'?
BIN = /usr/local/bin
# �D�nde poner los iconos en 'make install'? Nota: si cambia esto,
# gentoo no encontrar� los iconos cuando arranque. Deber� cambiar
# el path de iconos de gentoo (en la ventana de configuraci�n:
# "Paths") para que funcione.
ICONS = /usr/local/lib/gentoo/
Antes de esto deber�a insertar dos nuevas l�neas que dicen:
# Editado para Debian GNU/Linux.
DESTDIR =
porque el proceso de construcci�n lo necesita (explicado m�s tarde).
Despu�s el Makefile menciona la localizaci�n del binario final. S�lo necesita cambiar esto:
# �D�nde poner el binario en 'make install'?
BIN = SPMdollar;(DESTDIR)/usr/X11R6/bin
�Pero por qu� en este directorio y no en otro? Porque Debian tiene unas reglas definidias de d�nde deber�an estar instalados los programas. Est�n especificas en el Linux Filesystem Structure Standard (/usr/doc/debian-policy/fsstnd) [Est�ndar de Linux de la Estructura de los Sistemas de Ficheros, n. del t.]. As�, deber�amos instalar el binario en /usr/X11R6/bin en lugar de /usr/local/bin, y la p�gina de manual (no existe aqu�, pero casi todos los programas tienen una as� que haremos una despu�s) en /usr/man/man1 en lugar de /usr/local/man/man1.
Despu�s de esto tenemos un situaci�n un poco m�s complicada. Si cambia la l�nea a:
ICONS = SPMdollar;(DESTDIR)/usr/share/gentoo/
que estar� dentro de la pol�tica de Debian, deber� editar algunos ficheros de fuentes reales de C. Pero, �d�nde buscar? Puede probar a encontrarlos usando:
grep -n usr/local/lib *.[ch]
(en cada subdirectorio que contiene ficheros .c y .h). Grep dir� el nombre del fichero y la l�nea, cuando encuentra una ocurrencia. Ahora edite esos ficheros y cambie en esas l�neas usr/local/lib con usr/share - y ya est�. Simplemetne remplaze usr/local/lib por su localizaci�n, y sea muy cuidadoso para no mezclar el resto del c�digo, si no sabe mucho sobre c�mo programas en C. :-)
Despu�s de esto deber�a encontrar el objetivo 'install' (busque una l�nea que comienze por 'install:') y renombre todas las referencias a directorios distintos de los definidos al comienzo del Makefil. En este caso, hace esto y limpia las cosas un poco, anteriormente el objetivo install dec�a:
# --------------------- Installation
# �Debe ser superusuario para hacer esto!
install: gentoo-target
install ./gentoo SPMdollar;(BIN)
install icons SPMdollar;(ICONS)
install gentoorc-example SPMdollar;(HOME)/.gentoorc
Despu�s de su cambio dice:
# --------------------- Installation
# You're going to have to be root to do this!
install: gentoo-target
install -d SPMdollar;(BIN) SPMdollar;(ICONS) SPMdollar;(DESTDIR)/etc
install ./gentoo SPMdollar;(BIN)
install -m644 icons/* SPMdollar;(ICONS)
install -m644 gentoorc-example SPMdollar;(DESTDIR)/etc/gentoorc
install -d SPMdollar;(DESTDIR)/usr/doc/gentoo/html
cp -a docs/* SPMdollar;(DESTDIR)/usr/doc/gentoo/html
Un lector atento se dar� cuenta de que he cambiado 'gentoo' a 'gentoo-target' en la l�nea 'install:'. Esto es para arreglar un fallo en el programa. :-)
Siempre que haga cambios que no est�n espec�ficamente relacionados con el paquete Debian, asegurese de que los env�a al desarrollador original para que �ste los incluya en la pr�xima revisi�n del programa.
Hay un problema com�na: las librer�as son generalmente diferentes de plataforma a plataform. Por ejemplo, un Makefile puede contener una referencia a una librer�a que no exista en Debian. En este caso, se necesita cambiarla a una librer�a que s� existe en Debian y sirve para el mismo prop�sito. La mejor forma es comentar (�no borrar!) esas l�neas porque puede que haber otras personas que intenten compilar en diferentes plataformas y �stas les pueden dar algunas pistas de d�nde puede estar el problema.
As�, si hay una l�nea en el Makefil de su programa que dice algo como lo siguiente (y su programa no compila):
LIBS = -lcurses -lsomething -lsomethingelse
Entonces cambiela a lo siguiente, y funcionar� casi con seguridad:
LIBS = -lncurses -lsomething -lsomethingelse
#LIBS = -lcurses -lsomething -lsomethingelse
Ahora hay un nuevo subdirectorio en gentoo-0.9.12, que se llama 'debian'. Hay bastantes ficheros en este directorio. Empezaremos editando �stos para adaptar el comportamiento del paquete. La parte m�s importante es modificar los ficheros 'control' y 'rules' (reglas, n. del t.).
Este fichero contiene varios valores que dpkg y dselect usar�n para gestionar el paquete. Aqu� est� el fichero de control que dh_make crea para nosotros.
1 Source: gentoo
2 Section: unknown
3 Priority: optional
4 Maintainer: Josip Rodin <[email protected]>
5 Standards-Version: 2.4.0.0
6
7 Package: gentoo
8 Architecture: any
9 Depends: SPMdollar;{shlibs:Depends}
10 Description: Missing
11 Missing
(He a�adido los n�meros de l�nea.)
Las lineas 1 a 5 son la informaci�n de contol del paquete fuente. La l�nea 1 es el nombre del paquete fuente.
La l�nea 2 es la secci�n de la distribuci�n en la que va este paquete. Como puede haber observado, Debian est� divido en secciones: main (principal, n. del t.) (el software libre), non-free (el software que no es libre) y contrib (el software libre que depende del software no libre). Por debajo de �stas, hay subsecciones l�gicas que describen brevemente qu� paquetes tienen. As� tenemos 'admin' para programas que son s�lo para los administradores, 'base' para las herramientas b�sicas, 'devel' para las herramientas de los programadores, 'doc' para documentaci�n, 'libs' para librer�as, 'mail' para lectores y demonios de correo, 'net' para aplicaciones de red y demonios, 'x11' para programas espec�ficos de X11 y muchas otras.
Lo cambiaremos, pues, a x11.
La l�nea 3 describe c�mo de importante es para el usuario la instalaci�n de �ste paquete. La secci�n y prioridad son actualmente s�lo usadas por dselect cuando ordena paquetes y selecciona valores por defecto, y pueden ser modificadas (y generalmente lo ser�n) por nuestros administradores del FTP. Lea el manual de Pol�tica de Debian para una gu�a de qu� valor deben tener estos campos.
Como es un paquete de prioridad normal, lo dejaremos con prioridad 'optional' (opccional, n. del t.).
La l�nea 4 es el nombre y correo electr�nico del desarrollador.
La l�nea 5 es la versi�n de los est�ndares de la Pol�tica de Debian que sigue este paquete (dos versiones importantes del paquete debian-policy instalado).
La l�nea 7 es el nombre del paquete binario.
La l�nea 8 describe la arquitectura de CPU para la que se compil� el paquete. Podemos dejar �sta como 'any' (cualquiera, n. del. t), ya que dpkg-gencontrol(1) lo rellenar� con el valor apropiado cuando se compile este paquete.
La l�nea 9 muestra una de las m�s poderosas posibilidades del sistema de paquetes de Debian. Los paquetes se pueden relacionar unos con otros de diversas formas. Aprte de 'Depends:' (depende de, n. del t.) otros campos de relaci�n son 'Recommends:' (recomienda, n. del t.), 'Suggests:' (sugiere, n. del t.), 'Pre-depends:' (predepende de, n. del t.), 'Conflicts:' (entra en conflicto con, n. del t.), 'Provides:' (provee, n. del t.), 'Replaces:' (reemplaza a, n. del t.). �sto es lo que significan:
dpkg(8) y dselect(8) no se instalar� el programa a menos que los paquetes de los que depende est�n instalados. Use esto si su programa no funcionar� de ninguna forma a menos que est� disponible un paquete determinado.
Dselect no le permitir� instalar el paquete a menos que los paquetes que recomienda est�n instalados. Dpkg, sin embargo, s� le dejar�. Use esto para paquetes que no son estrictamente necesarios pero generalmente son usados con su programa.
Cuando un usuario instale el programa, dselect le sugerir� instalar cualquier paquete que �ste sugiera. Dpkg no hace caso a esto. Utilize esto para paquetes que funcionar�n bien con su programa pero no son necesarios en absoluto.
Esto es m�s fuerte que 'Depends'. Dpkg y dselect no instalar�n el paquete a menos que el paquete del que pre-dependa est� instalado y correctamente configurado. Utilize esto muy poco y s�lo despu�s de haberlo discutido en la lista de distribuci�n de debian-devel. En resumidas cuentas: no lo utilize en absoluto. :->
Dpkg y dselect no instalar�n su programa hasta que todos los paquetes con los que entra en conflicto hayan sido eliminados.
Para algunos tipos determinados de paquetes d�nde hay m�ltiples alternativas se han definido nombres virtuales. Puede obtener la lista completa en el fichero /usr/doc/debian-policy/virtual-package-names-list.text.gz. Use esto si su pograma provee las funciones de un paquete virtual existente.
Use esto si su programa reemplaza ficheros de otro paquete, o reemplaza totalmente otro paquete (generalmente se usa conjuntamente con 'Conflicts':). Dpkg y dselect eliminar�n los ficheros de los paquetes indicados antes de instalar el suyo.
Todos estos campos tienen una sintaxis uniforme. Tienen una lista de nombres de paquetes separados por comas. Estos nombres de paquetes tambi�n puede ser listas de paquetes alternativos, separados por los s�mbolos de barra vertical | (s�mbolos tuber�a). Los campos pueden restringir su aplicabilidad a versiones determinadas de cada paquete nombrado. Esto se hace entre par�ntesis para cada nombre de paquete individual; los par�ntesis deber�an contener una relaci�n de la siguiente lista seguida por un n�mero de versi�n. Las relaciones permitidas son <<, <=, =, >= y >> estrictamente para anterior, anterior o igual, ex�ctamente igual, posterior o igual o estr�ctamente posterior, respectivamente.
La �ltima funcionalidad que quiero ense�arle es $(shlibs:Depends). �sta se sustituir� autom�ticamente por dh_shlibdeps(1) (ver m�s adelante) por los nombres de cualquier librer�a compartida, como libc6 o xlib6g, que use su programa, as� que no necesita especificar esto vd. mismo. Habiendo dicho todo esto, puede dejar la l�nea 9 ex�ctamente como est� ahora.
La l�nea 10 es donde va la lista de sugereencias. Aqu� s�lo es 'menu', porque gentoo deber�a estar en los men�s del gestor de ventanas X11. Esto se controla tambi�n por el fichero debian/menu. Lea menufile(5), y update-menus(1).
La l�nea 11 es una descripci�n corta. La mayor parte de los monitores de la gente son de 80 columnas de ancho, as� que no deber�a tener m�s de 50 caracteres. Cambiar� esto a ``A fully GUI configurable GTK+ file manager" (''La GUI a un gestor de ficheros GTL+ completamentae configurable").
La l�nea 12 es donde va la descripci�n larga del paquete. Deber�a ser al menos un p�rrafo que da m�s detalles del paquete. La Columna 1 de cada l�nea deber�a estar vac�a. No puede haber l�neas en blanco, pero puede poner un . (punto) en una columna para simularlo. Tambi�n debe haber no m�s de una l�nea en blanco despu�s de la descrici�n completa.
Aqu� est� el fichero de control actualizado:
1 Source: gentoo
2 Section: x11
3 Priority: optional
4 Maintainer: Josip Rodin <[email protected]>
5 Standards-Version: 2.5.0
6
7 Package: gentoo
8 Architecture: any
9 Depends: SPMdollar;{shlibs:Depends}
10 Suggests: menu (>= 1.5)
11 Description: A fully GUI configurable GTK+ file manager
12 gentoo is a file manager for Linux written from scratch in pure C. It
13 uses the GTK+ toolkit for all of its interface needs. gentoo provides
14 100% GUI configurability; no need to edit config files by hand and re-
15 start the program. gentoo supports identifying the type of various
16 files (using extension, regular expressions, or the 'file' command),
17 and can display files of different types with different colors and icons.
18 .
19 gentoo borrows some of its look and feel from the classic Amiga file
20 manager "Directory OPUS" (written by Jonathan Potter).
Ahora volvemos al directorio 'debian' para mirar las reglas que dpkg-buildpackage(1) utilizar� para crear el paquete. Este fichero es en realidad otro Makefile, ya que es ejecutado con 'make -f', pero diferente al que viene en las fuentes originales.
Cada fichero 'rules' (de reglas, n. del t.), como muchos otros Makefiles, consisten de varias reglas sobre c�mo compilar las fuentes. Las reglas consisten en objetivos: ficheros o nombres de accioens que se deben llevar a cabo (por ejemplo, 'build:' o 'install:'). Las reglas que quiere ejecutar deber�an llamarse como los argumentos de comandos (por ejemplo, 'rules build' o 'rules install'). Despu�s del nombre del objetivo, puede nombrar las dependencias, programas o ficheros de los que la regla depende. Despu�s de esto hay un cualquier n�mero de instrucciones (�que empiezan con <tab>!), hasta que se llega a una l�nea en blanco, ah� empieza otra regla. Los comentarios empiezan con almohadillas ('#'), y terminan con el fin de la l�nea. Puede llamar a las reglas desde otra regla o desde la l�nea de �rdenes (esto es `debian/rules clean`).
Probablemente ya se haya perdido, pero todo quedar� m�s claro despu�s de ver un fichero 'rules' que dh_make pone por defecto. Deber�a tambi�n leer la entrada de 'make' en info para m�s informaci�n.
1 #!/usr/bin/make -f
2 # Made with the aid of dh_make, by Craig Small
3 # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
4 # Some lines taken from debmake, by Christoph Lameter.
5
6 # Uncomment this to turn on verbose mode.
7 #export DH_VERBOSE=1
8
9 build: build-stamp
10 build-stamp:
11 dh_testdir
12
13
14 # Add here commands to compile the package.
15  $(MAKE)
16
17 touch build-stamp
18
19 clean:
20 dh_testdir
21 dh_testroot
22 rm -f build-stamp install-stamp
23
24 # Add here commands to clean up after the build process.
25 -SPMdollar;(MAKE) clean
26
27 dh_clean
28
29 install: install-stamp
30 install-stamp: build-stamp
31 dh_testdir
32 dh_testroot
33 dh_clean -k
34 dh_installdirs
35
36 # Add here commands to install the package into debian/tmp.
37  $(MAKE) install DESTDIR=`pwd`/debian/tmp
38
39 touch install-stamp
40
41 # Build architecture-independent files here.
42 binary-indep: build install
43 # We have nothing to do by default.
44
45 # Build architecture-dependent files here.
46 binary-arch: build install
47 # dh_testversion
48 dh_testdir
49 dh_testroot
50 dh_installdocs
51 dh_installexamples
52 dh_installmenu
53 # dh_installemacsen
54 # dh_installinit
55 dh_installcron
56 dh_installmanpages
57 # dh_undocumented
58 dh_installchangelogs
59 dh_strip
60 dh_compress
61 dh_fixperms
62 dh_suidregister
63 dh_installdeb
64 dh_shlibdeps
65 dh_gencontrol
66 # dh_makeshlibs
67 dh_md5sums
68 dh_builddeb
69
70 source diff:
71 @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
72
73 binary: binary-indep binary-arch
74 .PHONY: build clean binary-indep binary-arch binary
(N. del T.: se traduce el fichero de reglas, dh_make s�lo lo ofrece en ingl�s)
1 #!/usr/bin/make -f
2 # Creado con la ayuda de dh_make, por Craig Small
3 # Fichero de ejemplo debian/rules que usa debhelper. Copyright GNU 1997 por Joey Hess.
4 # Algunas l�neas son de debmake, por Christoph Lameter.
5
6 # Quitele el comentario para activar el modo verboso
7 #export DH_VERBOSE=1
8
9 build: build-stamp
10 build-stamp:
11 dh_testdir
12
13
14 # A�ada aqu� los comandos para compilar el paquete.
15  $(MAKE)
16
17 touch build-stamp
18
19 clean:
20 dh_testdir
21 dh_testroot
22 rm -f build-stamp install-stamp
23
24 # A�ada aqu� los comandos para limpiar despu�s del proceso de creaci�n.
25 -SPMdollar;(MAKE) clean
26
27 dh_clean
28
29 install: install-stamp
30 install-stamp: build-stamp
31 dh_testdir
32 dh_testroot
33 dh_clean -k
34 dh_installdirs
35
36 # A�ada aqu� los comandos para instalar el paquete en debian/tmp.
37  $(MAKE) install DESTDIR=`pwd`/debian/tmp
38
39 touch install-stamp
40
41 # Construir los ficheros independientes de arquitectura aqu�
42 binary-indep: build install
43 # Por defecto no se hace nada.
44
45 # Construir los ficheros dependientes de arquitectura aqu�.
46 binary-arch: build install
47 # dh_testversion
48 dh_testdir
49 dh_testroot
50 dh_installdocs
51 dh_installexamples
52 dh_installmenu
53 # dh_installemacsen
54 # dh_installinit
55 dh_installcron
56 dh_installmanpages
57 # dh_undocumented
58 dh_installchangelogs
59 dh_strip
60 dh_compress
61 dh_fixperms
62 dh_suidregister
63 dh_installdeb
64 dh_shlibdeps
65 dh_gencontrol
66 # dh_makeshlibs
67 dh_md5sums
68 dh_builddeb
69
70 source diff:
71 @echo >&2 'source y diff est�n obsoletos - use dpkg-source -b'; false
72
73 binary: binary-indep binary-arch
74 .PHONY: build clean binary-indep binary-arch binary
Probablemente est� familiarizado con l�neas como la 1 de scripts hechos en shell o perl. Esto significa que el fichero debe ejecutarse con make. Las l�neas vac�as se ignoran. Las l�neas que comienzan con '#' (almohadilla) se tratan como comentarios y pueden tambi�n ignorarse.
Las l�neas 9 a la 17 describen la regla de construcci�n (en ingl�s: build, n. del t.) y su ``hijo'' 'build-stamp' que ejecuta el Makefile del propio programa para compilarlo.
Las cosas rara vez funcionan perfectamente la primera vez, as� que se especifica la regla de limpieza (del ingl�s 'clean', n. del t.) en las l�neas 18-26 que limpian cualquier resto innecesario dejado de intentos previos fallidos.
El proceso de instalaci�n, la regla 'install', comienza en la l�nea 29. En la l�nea 34, todos los directorios necesarios se crean en el directorio 'debian'. La l�nea 37 llama al objetivo de instalaci�n del Makefile de gentoo - e instala en el directorio debian/tmp - es por esto que espec�ficamos como ra�z del directorio de instalaci�n $(DESTDIR) en el Makefile de gentoo.
Como sugiere el comentario, la regla 'binary-indep' en las l�neas 41-43 se usa para construir paquetes independientes de arquitectura, pero aqu� no hay nada.
Lo siguiente es la regla 'binary-arch', en las l�neas 46 a 68, en la que ejecutamos varias utilidades diversas del paquete debhelper que nos permiten hacer operaciones variads en nuestro paquete para que cumpla la pol�tica de Debian.
Los nombres comienza con dh_ y a continuaci�n se indica lo que realmente hace cada peque�a utilidad:
Cada uno de estos scripts dh_* tiene su propia p�gina de manual, leala para m�s informaci�n. Hay otros scripts con la misma nomenclatura (dh_*) que no se han mencionado aqu�, pero puede necesitar, lea la documentaci�n de debhelper.
Las l�neas 70 a la 74 son s�lo algunas necesidades sobre las que puede leer en el mual de make. Por ahora, no es importante conocerlas.
La parte importante sobre el fichero de reglas creado por dh_make es que s�lo es una sugerencia. Funcionar� para paquetes simples pero para los m�s complicados no se asuste y modifique, borre o a�ada a �ste para ajustarse a sus necesidades. Esto se aplica de forma especial a las secciones binary-arch, donde deber�a comentar las l�neas que llaman a funciones que no necsita, en este caso he comentado las l�neas 47, 53, 54, 57 y 66 porque gentoo no las necesita. La �nica cosas que no debe cambiar son los nombre de las reglas, porque es necesario que se llamen de esta forma para que todas las herramientas que las usan utilizen estos mismos nombres, esto se obliga en nuestro manual de Empaquetamiento.
Por supuesto, se necesita hacer algunos ajustes aqu�: en la l�nea 58 a�adir� 'FIXES' porque ese es nombre del fichero de cambios. Para cualquier otra opci�n por favor lea la p�gina de manual del programa dh_* involucrado.
Este fichero contiene la informaci�n de copyright del paquete. Su formato no est� obligado por la Pol�tica, pero sus contenidos s� (secci�n 6.5). Dh_make crea uno por defecto, que tiene este aspecto:
1 This package was debianized by Josip Rodin [email protected] on
2 Wed, 11 Nov 1998 21:02:14 +0100.
3
4 It was downloaded from <fill in ftp site>
5
6 Upstream Author(s): <put author(s) name and email here>
7
8 Copyright:
9
10 <Must follow here>
(N. del T.: se traduce el fichero de copyright, dh_make s�lo lo ofrece en ingl�s)
1 �ste paquete fue debianizado por Josip Rodin [email protected] el
2 Mie, 11 Nov 1998 21:02:14 +0100.
3
4 Se descarg� de <rellenar el servidor de ftp>
5
6 Autor/es Original/es: <poner el nombre/s de el/los autor/es y
7 direcci�n de correo electr�nico aqu�>
8 Copyright:
9
10 <Debe venir aqu�>
Las cosas importantes a a�idar a este fichero son el lugar donde se obtuvo el paquete y la nota de copyright de �ste (debe incluirla entera). Si el copyright es una de las licencias de software libre populares como GNU, BSD o la licencia Art�stica, puede s�lamente referirse al fichero apropiado en /usr/doc/copyright, que existe en todo sistema Debian. Gentoo est� licenciado bajo la Licencia P�blica General GNU, as� que cambiaremos el fichero a esto:
1 This package was debianized by Josip Rodin <[email protected]> on
2 Wed, 11 Nov 1998 21:02:14 +0100.
3
4 It was downloaded from: ftp://ftp.obsession.se/gentoo/
5
6 Upstream Author: Emil Brink <[email protected]>
7
8 This software is copyright (c) 1998-99 by Emil Brink, Obsession
9 Development.
10
11 You are free to distribute this software under the terms of
12 the GNU General Public License.
13 On Debian GNU/Linux systems, the complete text of the GNU General
14 Public License can be found in /usr/doc/copyright/GPL file.
Cualquier detalle extra en discrepancias entre el programa original y su versi�n debianizada deber�a estar documentada aqu�. Dh_make crea una por defecto, y �ste es su aspecto:
gentoo for DEBIAN
-----------
Comments regarding the Package
Josip Rodin <[email protected]>, Wed, 11 Nov 1998 21:02:14 +0100
Dado que no tenemos que poner nada aqu� - est� permitido borrarla. Por cierto, s�, puede renombrar el fichero a README.Debian :-)
Este es un fichero necesario, tiene un formato especial descrito en el Manual de Empaquetamiento (secci�n 3.2.3). Este formato es usado por dpkg y otros programas para obtener el n�mero de versi�n, revisi�n, distribuci�n y uregncia de su paquete.
Para usted, es tambi�n importante, ya que es bueno tener documentados los cambios que haya hecho. Tambi�n ayudar� a la gente que se descarge su paquete para ver si hay algunos temas sin resolver con el paquete que deber�an saber. Se salvar� como /usr/doc/gentoo/changelog.Debian.gz en el paquete binario.
Dh_make crea uno por defecto, y tiene este aspecto:
1 gentoo (0.9.12-1) unstable; urgency=low
2
3 * Initial Release.
4
5 - Josip Rodin <[email protected]> Wed, 11 Nov 1998 21:02:14 +0100
6
7 Local variables:
8 mode: debian-changelog
9 add-log-mailing-address: "[email protected]"
10 End:
La l�nea 1 es el nombre del paquete, versi�n, distribuci�n, y urgencia. El nombre debe coincidir con el del paquete fuente, por ahora, la distribuci�n deber�a ser 'unstable' (inestable, n. del t.) o 'experimental', y la urgencia no deber�a cambiarse a nada distinto a 'low' (baja, n. del t.). :->
Las l�neas 3 a 5 son una entrada de registro, donde documenta los cambios hechos en esta revisi�n del paquete (nos los cambios en las fuentes hechas por los autores originales - hay un fichero especial para este prop�sito, creado por los autores, y que se instala en /usr/doc/gentoo/changelog.gz). Las nuevas l�neas deben insertarse justo despu�s de la primera l�nea que empieza con un asterisco ('*'). Puede hacer esto con dch, emacs (las l�neas 7 a 10 son informaci�n de modo para el editor Emacs), o cualquier editor de texto que desee. Acabar� con algo as�:
1 gentoo (0.9.12-1) unstable; urgency=low
2
3 * Initial Release.
4 * This is my first Debian package.
5
6 - Josip Rodin <[email protected]> Wed, 11 Nov 1998 21:02:14 +0100
7
8 Local variables:
9 mode: debian-changelog
10 add-log-mailing-address: "[email protected]"
11 End:
Cuando distribuya una nueva versi�n, debe incrementar el n�mero de versi�n del paquete. Puede hacer esto con `dch -v <versi�n>-<revisi�n>` y despu�s insertar los comentarios con su editor preferido. Pisa: �c�mo puede obtener r�pidamente la fecha en el formato requerido? Utilize el comando `822-date` o `date -R`.
Se a�ade informaci�n sobre la nueva versi�n al principio del fichero 'changelog'. Tendr� este aspecto despu�s:
1 gentoo (0.9.12-2) unstable; urgency=low
2
3 * Comments about the second revision
4
5 - Josip Rodin <[email protected]> Wed, 11 Nov 1998 22:15:39 +0100
6
7 gentoo (0.9.12-1) unstable; urgency=low
8
9 * Initial Release.
10 * This is my first Debian package.
11
12 - Josip Rodin <[email protected]> Wed, 11 Nov 1998 21:02:14 +0100
13
14 Local variables:
15 mode: debian-changelog
16 add-log-mailing-address: "[email protected]"
17 End:
Una de las cosas m�s molestas de los programas es cuando pasas mucho tiempo y esfuerzo adaptando un programa y una actualizaci�n destroza todos tus cambios. Debian arregla este problema marcando los ficheros de configuraci�n de forma que cuando actualizas un paquete no se le pregunta si desea mantener la nueva configuraci�n o no. Lo consigue poniendo la ruta completa a cada fichero de configuraci�n (se encuentran generalmente en /etc) una por l�nea, en un fichero llamado 'conffiles'.
Gentoo tiene un fichero de configuraci�n, /etc/gentoorc, y meteremos �ste en el fichero 'conffiles'. No es necesario tener este �ltimo fichero si su programa no tiene ning�n fichero de configuraci�n.
Este fichero especif�ca los directorios que se necesitan pero que no crea un proceso de instalaci�n normal (make install). Por defecto, tiene �ste aspecto:
1 usr/bin
2 usr/sbin
Observe que la barra precedente no est� incluida. Normalmente lo cambiar�amos para gentools a algo as�:
1 usr/X11R6/bin
2 usr/X11R6/man/man1
pero estos directorios ya se crean en el Makefile, as� que no necesitaremos este fichero y lo podremos borrar.
Estos ficheros se llaman scripts de gesti�n, y deber�a intentar evitarlos si puede porque son demasiados complejos. Para m�s informaci�n lea el Manual de Empaquetamiento.
Los ficheros que terminan en *.ex son ejemplos de c�mo a�adir ese tipo de soporte en el paquete. Si usa uno de ellos, editelo y elimine la extensi�n .ex.
Su programa deber�a tener una p�gina de manual. Si no la tiene, �ste es un esqueleto que puede rellenar. Lea las p�ginas de manual para man(7) para una breve descripci�n de c�mo crear una p�gina de manual. Aseg�rese de renombrar este fichero al nombre del programa y modificar la extensi�n para indicar la secci�n a la que deber�a ir. Aqu� hay una corta lista:
Section | Description | Notes
1 Comandos de Usuario Programas ejecutables o scripts.
2 Llamadas al Sistema Funciones dadas por el kernel.
3 Llamadas a Librer�as Funciones dadas por las librer�as del sistema.
4 Ficheros Especiales Generalmente se encuentra en /dev
5 Formatos de Fichero Por ejemplo, el formato del /etc/passwd
6 Juegos U otros programas fr�volos.
7 Paquetes de Macros Como las macros de man.
8 Administraci�n del Sist. Programas que s�lo ejecuta el superusuario.
9 Routinas del Kernel Llamadas al sistema no est�ndar.
As� que la p�gina de manual de gentoo deber�a llamarse gentoo.1, o gentoo.1x porque es un programa de X11. C�mo no hab�a p�gina de manual en las fuentes originales la escrib� del ejemplo.
Los usuarios de X Windows tendr�n un gestor de ventanas con menus que pueden adaptarse para lanzar programas. Si tienen instalado el paquete de menu de Debian, se crear� un conjunto de menus para cada programa del sistema para ellos. No se exige en la pol�tica de Debian, pero los usuarios seguramente lo apreciar�n. Podemos a�adir a Gentoo a los menus editando este fichero. Aqu� est� el fichero que dh_make crea por defecto:
?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual
title="gentoo" command="/usr/bin/gentoo"
El primer campo especifica qu� tipo de interfaz necesita el programa (esto es, texto o X11). La siguiente es el menu y submenu d�nde deber�a aparecer. La lista actual de secciones est� en /usr/doc/menu/html/ch2.html#s2.2 El tercero es el nombre del programa. El cuarto es el icono para el programa o nada si no hay ninguno. El quinto es el texto que aparecer� en el menu. El sexto es la orden que ejecuta el programa. will appear in the menu. The sixth is the command that runs the program.
Ahora cambiaremos la entrada de menu a �sta:
?package(gentoo):needs=X11 section=Apps/Misc
title="gentoo" command="/usr/X11R6/bin/gentoo"
Puede usar este fichero, junto con los programas uscan(1) y uupdate(1) (en el paquete devscripts) para vigilar el servidor de donde obtuvo las fuentes originales. Vea las p�ginas de manuales para m�s detalles. Gentoo no puede usar esta funci�n as� que borraremos el fichero.
Ahora estamos preparados para construir el paquete.
Entre en el directorio principal de Gentoo's (/usr/local/src/gentoo/gentoo-0.9.12/) y ejecute el siguiente comando:
dpkg-buildpackage -rfakeroot
Esto har� todo por usted, s�lo tendr� que dar su clave secreta PGP, dos veces. Una vez haya hecho esto, ver� cuatro nuevos ficheros en el directorio /usr/local/gentoo:
es el paquete binario completo. Puede usar dpkg o deselect para instalar o eliminar �ste como cualquier otro paquete.
Mientras sigue trabajando en el paquete, campiar� su comportamiento y se le a�adir�n nuevas funciones. Las personas que descargen su paquete pueden mirar este fichero y ver qu� ha cambiado. Este fichero es generado a partir del fichero gentoo-0.9.12/debian/changelog file, y contiene los cambios actuales a la revisi�n actual del paquete. Tambi�n lista los ficheros en el paquete. Las largas listas de n�meros son las sumas MD5 para los ficheros. Las personas que descargen estos ficheros pueden probarlos con md5sum(1) y si los n�meros no coinciden, sabr�n que el fichero est� corrupto o ha sido modificado. �ste fichero est� firmado con PGP de forma que cualquiera puede estar a�n m�s seguro de que es realmente suyo.
Estes es el c�digo fuente original junto de forma que si alguien quiere recrear su paquete desde cero puede hacerlo. O si alguien no est� usando el sistema de paquetes de Debian quiere descargarse las fuentes y compilarlo.
Este es un sumario de los contenidos del c�digo fuente. Este fichero es generado con el fichero gentoo-0.9.12/debian/control y se usa cuando se descomprime las fuentes con dpkg-source(1). �ste fichero est� firmado con PGP de forma que cualquier puede estar seguro de que es realmente suyo.
Ejecute lintian(1) sobre su fichero de cambios .changes; �ste programa comprobar� muchos errores comunes al empaquetar. El comando es:
lintian -i gentoo_0.9.12-1_i386.changes
Si parece que hay algunos errores (l�neas que comienzan por E:), lea la explicaci�n (l�neas N:), corriga errores, y reconstruya con dpkg-buildpackage. Si hay l�neas que comienzan con W:, son s�lo avisos (warnings, n. del t.), as� que puede estar seguro de que su paquete est� bien (pero seguramente necesita alg�n ajuste fino).
Mire dentro del paquete usando un gestor de ficheros como mc(1), o descomprimalo en alg�n punto temporal usando dpkg-deb(1).
Instale el paquete para probarlo usted mismo. Intente instalarlo en otroas m�quinas distintas de la suye y mire bien para detectar errores o avisos.
M�s tarde, cuando construya una nueva versi�n, deber�a hacer lo siguiente para asegurar la actualizaci�n b�sica del paquete:
Ahora que ha probado su nuevo paquete en profundidad, necesitar� enviar estos ficheros a master.debian.org, usando dupload(1). Primero debe editar el fichero de configuraci�n de dupload. Copie los valores por defecto del /etc a su directorio personal:
cp /etc/dupload.conf ~/.dupload.conf
Despu�s edite ese fichero (~/.dupload.conf), y encuentre la parte que empieza por '$cfg{master}' y cambie estas l�neas (no necesariamente en �ste orden):
login => getlogin() || SPMdollar;ENV{USER} || SPMdollar;ENV{LOGNAME},
visibleuser => getlogin() || SPMdollar;ENV{USER} || SPMdollar;ENV{LOGNAME},
visiblename => "",
fullname => "",
a valores equivalentes a estos (cambien mis valores por los suyos):
login => "joy",
visibleuser => "jrodin",
visiblename => "jagor.srce.hr",
fullname => "Josip Rodin",
El primero es su login en master.debian.org (es usted ahora un desarrollador oficial de Debian �o no? Si no lo es, lea la Referencia del Desarrollador), el segundo y el tercero son partes de su direcci�n de contacto antes y despu�s de la arroba ('@'), y el cuarto es su nombre completo.
Entonces conecte con su proveedor de Internet, asegurese una vez mas de que est� en el directorio /usr/local/src/gentoo, y ejecute la orden:
dupload -to master gentoo_0.9.12-1_i386.changes
Dupload le preguntar� su password en master.debian.org, env�e sus paquetes, y env�e un peque�o anuncio sobre su env�o en <[email protected]>.
Si vive en Europa, puede usar otras colas de env�o en lugar de master. Para m�s detalles mire lea dupload(1), dupload(5) y la Referencia del Desarrollador.
Antes de que decida preguntar en lugares p�blicos, por favor simplemente RTFM (``Lea el Jodido Manual'', n. del t.). Esto incluye documentaci�n en /usr/doc/dpkg, /usr/doc/debian, /usr/doc/debhelper y las p�ginas de man/info para todos los programas mencionados en este art�culo. Cuando reciva un aviso de fallo (bug report, n. del t.) (s�, avisos de fallos �de verdad!) sabr� que es el momento de indagar en el Sistema de Seguimiento de Fallos de Debian (http://www.debian.org/Bugs/) y leer la documentaci�n all�.
Si se une a la lista de distribuci�n de Mentores de Debian en <[email protected]> puede unirse con desarrolladores de Debian con experiencia que le ayudar�n con las preguntas que pueda tener. Puede subscribirse a ella enviando un correo electr�nico a <[email protected]> con la palabra 'subscribe' en el tema del mensaje.
Si a�n tiene preguntas, hagalas en la lista de distribuci�n de Desarrolladores de Debian en <[email protected]>. Puede subscribirse a ella enviando un correo electr�nico a <[email protected]> con la palabra 'subscribe' en el tema del mensaje. Si ya es un desarrollador de Debian deber�a 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 su paquete, y si cometi� alg�n error cr�tico ser� bombardeado por correos de centenares de usuarios furiosos de Debian.... S�lo bromeaba :-)
Rel�jese y prep�rse 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 lea la documentaci�n real para detalles). �Buena suerte!