/[ddp]/manuals/trunk/maint-guide/maint-guide.es.sgml
ViewVC logotype

Contents of /manuals/trunk/maint-guide/maint-guide.es.sgml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7083 - (show annotations) (download) (as text)
Sun Mar 7 11:40:19 2010 UTC (3 years, 2 months ago) by osamu
File MIME type: text/x-sgml
File size: 110861 byte(s)
rationalize file names etc. in line with recent debiandoc-sgml.

Some breakage may happen for package build and web page may be moved.
Web page breakage will be fixed by DDP updates.
1 <!DOCTYPE debiandoc PUBLIC "-//DebianDoc//DTD DebianDoc//EN" [
2
3 <!-- textual data entities -->
4 <!-- first definition wins in SGML -->
5 <!ENTITY % default SYSTEM "default.ent"> %default;
6
7 ]>
8 <!-- CVS revision of this document "$Revision: 1.45 $" -->
9 <!-- CVS revision of original english document "1.115" -->
10
11 <!-- Comentarios traduccion:
12 - En esta traduccion se utiliza 'tú' en lugar de 'usted' por
13 ser un poco más informal de lo habitual
14 -->
15
16 <!-- Comentarios al original:
17 * URL's a package manual?
18 * por qué a veces usa tt y otras no para los programas ?
19 * no se usa prgn consistentemente cuando se habla de programas ni
20 la etiqueta file
21 -->
22
23 <debiandoc>
24
25 <book>
26
27 <titlepag>
28
29 <title>Guía del nuevo desarrollador de Debian</title>
30
31 <author>Josip Rodin <email/joy-mg@debian.org/
32 </author>
33
34
35 <author>Traducido por:
36 Javier Fernández-Sanguino Peña <email/jfs@debian.org/
37 </author>
38
39 <author>Traducido por:
40 David Martínez <email/ender@debian.org/
41 </author>
42
43 <author>Traducido por:
44 Ana Beatriz Guerrero López <email/ana@debian.org/
45 </author>
46
47 <version>version 1.2.11, 12 de enero de 2007.</version>
48
49 <copyright>
50 <copyrightsummary>Copyright &copy; 1998-2002 Josip Rodin.<copyrightsummary>
51 <copyrightsummary>Copyright &copy; 2005-2007 Osamu Aoki.</copyrightsummary>
52 <copyrightsummary>Translation Copyright &copy; 1999, 2000, 2001, 2007 Javier Fernández-Sanguino Peña, David Martínez y Ana Guerrero López.</copyrightsummary>
53
54 <p>Este documento puede utilizarse en los términos descritos en
55 la Licencia Pública GNU versión 2 o posterior.
56
57 <p>Este documento se ha escrito usando estos dos documentos como
58 ejemplo:
59
60 <p>Making a Debian Package (AKA the Debmake Manual), copyright &copy;
61 1997 Jaldhar Vyas.
62
63 <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
64 Will Lowe.
65
66 <!--
67 <p><em>Nota:</em> Esta versión está muy desactualizada con respecto
68 a la versión original en inglés (actualmente la 1.2.x). Se ofrece
69 como ayuda a los usuarios que tengan problemas con el idioma inglés
70 pero si está realmente interesado le recomendamos que consulte
71 la versión original por el momento. Es posible que esta traducción
72 se actualice en el futuro, cuando así se haga se eliminará esta nota.</p>
73 -->
74 </copyright>
75
76 </titlepag>
77
78 <toc sect>
79
80 <chapt id="start">Empezando «de la forma correcta».
81
82 <!-- 'Prospectus developer' podría traducirse también como
83 "desarrollador en potencia" o "desarrollador potencial" -->
84 <p>Este documento tratará de describir cómo se construye un paquete
85 Debian GNU/Linux para el usuario común de Debian y para futuros
86 desarrolladores en un lenguaje informal, y con multitud de
87 ejemplos. Hay un antiguo dicho romano que dice, <em>Longum iter est
88 per preaecepta, breve et efficax per exempla!</em> (¡Es un largo
89 camino con las reglas, pero corto y eficiente con ejemplos!)
90
91 <p>Una de las cosas que hace a Debian una de las distribuciones más
92 importantes del mercado es su sistema de paquetes. Aunque hay una
93 gran cantidad de programas disponibles en forma de paquetes de
94 Debian, algunas veces necesitarás instalar programas que no están
95 disponible en este formato. Puede que te preguntes cómo hacer
96 tus propios paquetes y que pienses que
97 quizás ésta es una tarea demasiado difícil. Bueno, si eres un
98 principiante en Linux, sí es duro, pero si eres un novato, no
99 deberías estar leyendo esto ahora mismo. :-) Necesitas saber algo
100 sobre programación en Unix, pero, desde luego, no tienes que ser un
101 maestro.
102
103 <p>Sin embargo, hay una cosa que es verdad: para crear y mantener
104 paquetes Debian adecuadamente, necesitarás muchas horas.
105 Para que nuestro sistema trabaje sin errores, nuestros desarrolladores
106 necesitan ser técnicamente competentes y concienzudos.
107
108 <p>Este documento explicará cada pequeño paso (al principio quizás
109 irrelevantes), te ayudará a crear tu primer paquete, ganar
110 alguna experiencia en construir próximas versiones de él, y quizás
111 otros paquetes después.
112
113 <p>Se pueden obtener versiones nuevas de este documento en línea
114 en <url name="http://www.debian.org/doc/maint-guide/"
115 id="http://www.debian.org/doc/maint-guide/"> y en el paquete
116 «maint-guide-es».
117
118 <sect id="needprogs">Programas que necesitas para el desarrollo
119
120 <p>Antes de empezar nada, deberías asegurarte de que tienes
121 instalados algunos paquetes adicionales necesarios para el
122 desarrollo. Observa que en la lista no están incluidos paquetes
123 cuyas prioridades son «esencial» o «requerido», que se suponen ya
124 instalados.
125
126 <p>En la revisión de este documento se han actualizado los paquetes
127 para Debian 2.2 («potato») y 3.0 («woody»).
128
129 <p>Los siguientes paquetes vienen en una instalación estándar de
130 Debian, así que probablemente ya los tengas (junto con los
131 paquetes de los que dependen). Aún así, deberías comprobarlo con
132 «dpkg -s &lt;paquete&gt;».
133
134
135 <list>
136 <item><package/dpkg-dev/ - este paquete contiene las herramientas
137 necesarias para desempaquetar, construir y enviar paquetes fuente de
138 Debian (véase <manref name="dpkg-source" section="1">).
139
140 <item><package/file/ - este útil programa puede determinar de qué
141 tipo es un fichero (véase <manref name="file" section="1">).
142
143 <item><package/gcc/ - el compilador de C de GNU, necesario si el
144 programa, como la gran mayoría, está escrito en el lenguaje de
145 programación C (véase <manref name="gcc" section="1">).
146 Este paquete también vendrá con otros paquetes como
147 <package/binutils/ que incluye programas para ensamblar y enlazar
148 ficheros objeto
149 (véase «info binutils» en el paquete <package/binutils-doc/)
150 y el preprocesador de C en el paquete <package/cpp/
151 (véase <manref name="cpp" section="1">).
152
153 <item><package/libc6-dev/ - las bibliotecas y archivos de cabecera de C
154 que gcc necesita para enlazar y crear ficheros objeto
155 (véase «info libc» en el paquete <package/glibc-doc/).
156
157 <item><package/make/ - habitualmente la creación de un programa consta de
158 varios pasos. En lugar de ejecutar las mismas órdenes una y otra
159 vez, puedes utilizar este programa para automatizar el proceso,
160 creando ficheros «Makefile» (véase «info make»).
161
162 <item><package/patch/ - esta utilidad es muy práctica, ya que permite
163 tomar un fichero que contiene un listado de diferencias (producido
164 por el programa diff) y aplicárselas al fichero original,
165 produciendo una versión "parcheada". (véase <manref name="patch"
166 section="1">)
167
168 <item><package/perl/ - Perl es uno de los lenguajes interpretados
169 para hacer guiones (o «scripts») más usados en los sistemas Un*x de hoy
170 en dia, comúnmente se refiere a él como la «navaja suiza de Unix»
171 (véase <manref name="perl" section="1">).
172 </list>
173
174
175 <p>Probablemente, necesitarás instalar además los siguientes paquetes:
176
177 <list>
178 <item><package/autoconf/ y <package/automake/ - muchos programas
179 nuevos usan ficheros de configuración y ficheros «Makefile» que se
180 procesan con la ayuda de programas como éstos (véase «info
181 autoconf», «info automake»).
182
183 <item><package/dh-make/ y <package/debhelper/ - dh-make es necesario
184 para crear el esqueleto de nuestro paquete ejemplo, y se usarán
185 algunas de las herramientas de debhelper para crear los paquetes. Aunque
186 no son imprescindibles para la creación de paquetes se recomiendan
187 <strong>encarecidamente</strong> para nuevos desarrolladores. Hacen
188 el proceso mucho más fácil al principio, y más fácil de controlar
189 también más adelante (véase <manref name="dh_make" section="1">,
190 <manref name="debhelper" section="1">,
191 /usr/share/doc/debhelper/README).
192
193 <item><package/devscripts/ - este paquete contiene algunos guiones
194 útiles para los desarrolladores, pero no son necesarios para crear
195 paquetes (véase /usr/share/doc/devscripts/README.gz).
196
197 <item><package/fakeroot/ - esta utilidad te permite emular al
198 usuario administrador (o «root», N. del T.), lo cual es necesario
199 para ciertas partes del proceso de construcción (véase <manref
200 name="fakeroot" section="1">).
201
202 <item><package/gnupg/ - herramienta que te permite <em>firmar</em>
203 digitalmente los paquetes.
204 Esto es especialmente importante si quieres distribuir tu paquete
205 a otras personas, y ciertamente, tendrás que hacerlo cuando tu trabajo vaya a
206 incluirse en la distribución de Debian
207 (véase <manref name="gpg" section="1">).
208
209 <item><package/g77/ - el compilador GNU de Fortran 77,
210 necesario si el programa está escrito en Fortran
211 (véase <manref name="g77" section="1">).
212
213 <item><package/gpc/ - el compilador GNU de Pascal,
214 necesario si el programa está escrito en Pascal.
215 Merece la pena mencionar aquí <package/fp-compiler/,
216 un compilador libre de Pascal, que también es bueno en esta tarea
217 (véase <manref name="gpc" section="1">, <manref name="ppc386" section="1">).
218
219 <item><package/xutils/ - algunos programas,
220 normalmente aquellos hechos para X11, también usan programas para
221 generar Makefiles de un conjunto de funciones de macro
222 (véase <manref name="imake" section="1">, <manref name="xmkmf" section="1">).
223
224 <item><package/lintian/ - este es el comprobador de paquetes de Debian,
225 que te indica muchos de los errores comunes después de construir un
226 paquete, y explica los errores encontrados
227 (véase <manref name="lintian" section="1">,
228 /usr/share/doc/lintian/lintian.html/index.html).
229
230 <item><package/pbuilder/ - este paquete contiene programas para
231 crear y mantener entornos chroot. Al construir paquetes Debian en
232 estos entornos chroot se verifica que las dependencias son las
233 adecuadas y se evitan fallos al construir desde el código
234 fuente (véase <manref name="pbuilder" section="8"> y <manref
235 name="pdebuild" section="1">).
236
237 </list>
238
239 <p>Por último, la documentación que se indica a continuación
240 es de <em>gran importancia</em> y debería leerse junto con este documento:
241
242 <list>
243 <item><package/debian-policy/ - incluye la estructura y contenidos
244 del archivo, ciertas notas sobre el diseño del sistema operativo, el estándar de la
245 jerarquía del sistema de ficheros («Filesystem Hierarchy Standard»,
246 N. del T.), y, lo más importante para ti, describe los
247 requisitos que debe satisfacer cada paquete para ser incluido en la
248 distribución (véase &debian-policy;).
249
250 <item><package/developers-reference/ - para todos los temas no
251 específicamente relacionados con los detalles técnicos de cómo
252 empaquetar, tales como la estructura del archivo, cómo renombrar,
253 abandonar, adoptar paquetes, cómo hacer NMUs («Non-Maintainer Uploads»,
254 o envíos por personas distintas del desarrollador, N. del T.), como
255 gestionar los errores que los usuarios envían, buenas prácticas de
256 empaquetado, cómo y cuando
257 enviar los paquetes, etc.
258 <!-- traduzco upload por "enviar" pero no me gusta mucho - jfs -->
259 (véase &developers-reference;).
260 </list>
261
262 <p>Las breves descripciones dadas anteriormente sólo sirven para
263 introducirte a lo que hace cada paquete. Antes de continuar, por
264 favor, lee la documentación de cada programa, al menos para su uso
265 normal. Puede parecerte algo duro ahora, pero más adelante estarás
266 <em>muy</em> contento de haberla leído.
267
268 <p>Nota: <package/debmake/ es un paquete que incluye otros programas
269 con funciones similares a dh-make, pero su uso específico
270 <strong>no</strong> está cubierto en este documento porque
271 se trata de una herramienta obsoleta.
272
273 <sect id="debiandeveloper">Desarrollador oficial de Debian
274
275 <p>Puede que quieras convertir en un desarrollador oficial de Debian
276 una vez hayas construido tu paquete (o incluso mientras lo estás
277 haciendo) para que el paquete se introduzca en la nueva distribución
278 (si el programa es útil, ¿por qué no?).
279
280 <p>No puedes convertirte en desarrollador oficial de Debian de la
281 noche a la mañana porque hace falta más que sólo habilidades
282 técnicas. No te sientas desilusionado por esto. Aún puedes subir tu
283 paquete, si es útil a otras personas, como su mantenedor a través de
284 un patrocinador mientras tu entras en el <url name="proceso de
285 nuevos desarrolladores de Debian" id="&nm-home;">. En este caso el
286 patrocinador es un desarrollador oficial de Debian que ayuda a la
287 persona que mantiene el paquete a subirlo al archivo de
288 Debian. Encontrarás más información de este procedimiento en el
289 documento <url id="&mentors-faq;" name="preguntas frecuentes de
290 debian-mentors">.
291
292 <p>Ten en cuenta que no tienes que crear un paquete nuevo para poder
293 convertirte en desarrollador oficial de Debian. Un camino posible para
294 ser desarrollador oficial es contribuir al mantenimiento de los
295 paquetes ya existentes en la distribución.
296
297 <sect id="otherinfo">Más información
298
299 <p>Puedes construir dos tipos de paquetes: fuentes y binarios. Un
300 paquete fuente contiene el código que puedes compilar en un programa.
301 Un paquete binario contiene sólo el programa terminado. ¡No mezcles
302 los términos como «fuentes de un programa» y el «paquete fuente de
303 un programa»! Por favor, lee los otros manuales si necesitas más
304 detalles sobre terminología.
305
306 <p>Debian usa el término desarrollador («maintainer», N. del T.)
307 para la persona que hace paquetes, autor original («upstream
308 author», N. del T.) para la persona que hizo el programa, y
309 desarrollador original («upstream maintainer», N. del T.) para la
310 persona que actualmente mantiene el programa fuera de
311 Debian. Generalmente el autor y el desarrollador fuente son la misma
312 persona - y algunas veces incluso el desarrollador es el mismo. Si
313 haces un programa, y quieres incluirlo en Debian, tienes total
314 libertad para solicitar convertirte en desarrollador.
315
316 <chapt id="first">Primeros pasos
317
318 <sect id="choose">Elige el programa
319
320 <p>Probablemente hayas escogido ya el paquete que deseas construir.
321 Lo primero que debes hacer es comprobar si el paquete está ya
322 en el archivo de la distribución utilizando <prgn>aptitude</prgn>.
323 Si usas la distribución «estable», quizás sea mejor que vayas a la <url
324 name="página de búsqueda de paquetes"
325 id="http://www.debian.org/distrib/packages">.
326
327 <p>Si el paquete ya existe, ¡instálalo! :-) Si te encuentras con que
328 el paquete es un paquete huérfano (cuando su desarrollador es el «Debian QA
329 Group», es decir, el grupo de calidad de Debian), entonces
330 podrías adoptarlo.
331
332 <p>Consulta <url name="la lista de paquetes en prospección y que
333 necesitan trabajo" id="http://www.debian.org/devel/wnpp/"> así como
334 las páginas enlazadas a ésta para verificar si el paquete está
335 huérfano o está siendo adoptado.
336
337 <p>Si puedes adoptar el paquete, descarga las fuentes (con algo como
338 <tt/apt-get source packagename/) y examínalas.
339 Este documento, desafortunadamente, no incluye aún información exhaustiva
340 sobre la adopción de paquetes.
341 No debería ser díficil entender cómo funciona el paquete
342 ya que alguien ha hecho el trabajo inicial por ti.
343 Aún así es mejor que sigas leyendo, muchos de los consejos
344 que se dan a continuación serán también aplicables para tu caso.
345
346 <p>Si el paquete es nuevo y decides que te gustaría verlo en Debian
347 debes seguir los pasos indicados a continuación:
348
349 <list>
350 <item>Comprueba que no hay nadie más trabajando ya en el paquete consultando
351 <url name="la lista de paquetes en los que se está trabajando" id="http://www.de.debian.org/devel/wnpp/being_packaged">.
352 Si ya hay alguien trabajando en él, contacta con esa persona.
353 Si no, intenta encontrar otro programa interesante que nadie mantenga.
354 </item>
355
356 <item>El programa <strong>debe</strong> tener una
357 licencia. Preferiblemente la licencia deberá ser libre en el sentido
358 marcado por las <url name="Directrices de Debian para el software
359 libre" id="http://www.debian.org/social_contract.html#guidelines"> y
360 <strong>no puede</strong> depender de un paquete que no esté dentro
361 de «main» para compilarse o para poder utilizarse. Si la licencia
362 no sigue alguna de estas reglas aún puede incluirse en las secciones
363 «contrib» o «non-free» de Debian dependiendo de su situación. Si no
364 estás seguro sobre en qué lugar debería ir, envía el texto de
365 la licencia y pide consejo con un correo (en inglés) dirigido a
366 <email/debian-legal@lists.debian.org/. </item>
367
368 <item>El programa <strong>no</strong> debería ejecutarse con «setuid
369 root», o aún mejor: no debería ser «setuid» ni
370 «setgid».</item>
371
372 <item>El programa no debería ser un demonio, o algo que vaya en los
373 directorios */sbin, o abrir un puerto como usuario administrador.</item>
374
375 <item>El programa debería estar compuesto por binarios ejecutables,
376 no intentes empaquetar aún con bibliotecas.</item>
377
378 <item>El programa debería tener una buena documentación, o al menos
379 un código fuente legible y no ofuscado.
380 </item>
381
382 <item>Deberías contactar con el autor o autores del programa para
383 comprobar si está/n de acuerdo con que se empaquete. Es importante
384 que el autor o autores sigan manteniendo el programa para que puedas
385 en el futuro consultarle/s en caso de que haya problemas
386 específicos. No deberías intentar empaquetar programas que no estén
387 mantenidos.</item>
388
389 <item>Y por último, pero no menos importante, deberías saber cómo
390 funciona, y haberlo utilizado durante algún tiempo.</item>
391 </list>
392
393 <p>Por supuesto, esta lista es para tomar medidas de seguridad, y
394 con la intención de salvarte de usuarios enfurecidos si haces algo
395 mal con algún demonio «setuid»... Cuando tengas más experiencia
396 en empaquetar, podrás hacer este tipo de paquetes,
397 incluso los desarrolladores más experimentados preguntan en la
398 lista de correo de debian-devel cuando tienen dudas. La
399 gente allí te ayudará gustosamente.
400
401 <p>Para más ayuda sobre esto, lee la Referencia del desarrollador.
402
403 <sect id="getit">Obtén el programa y pruébalo
404
405 <p>Lo primero que debes hacer es encontrar y descargar el paquete
406 original. A partir de este punto se da por supuesto
407 que ya tienes el código fuente que obtuviste de la
408 página del autor. Las fuentes de los programas libres de Linux
409 generalmente vienen en formato tar/gzip, con extensión .tar.gz, y
410 generalmente contienen un subdirectorio llamado «programa-versión»
411 con todas las fuentes en él. Si tu programa viene en otro tipo de
412 archivo (por ejemplo, el fichero termina en ".Z" o ".zip"),
413 descomprímelo con las herramientas adecuadas, o pregunta en
414 la lista de correo debian-mentors si tienes dudas de cómo se puede desempaquetar
415 correctamente (pista: prueba «file archivo.extensión»).
416
417 <p>Como ejemplo, usaré el programa conocido como «gentoo», un gestor
418 de ficheros de X11 en GTK+. Observa que el programa ya ha sido
419 empaquetado previamente pero ha cambiado sustancialmente de versión
420 desde que este texto se escribió.
421
422 <p>Crea un subdirectorio bajo tu directorio personal llamado
423 «debian» o «deb» o lo que creas apropiado (por ejemplo <file>~/gentoo/</file>
424 estaría bien en este caso). Mueve a él el archivo que has
425 descargado, y descomprímelo de la siguiente forma: «tar xzf
426 gentoo-0.9.12.tar.gz». Asegúrate de que no hay errores, incluso
427 errores «irrelevantes», porque es muy probable que haya problemas
428 al desempaquetarlo en sistemas de otras personas, cuyas herramientas de
429 desempaquetado puede que no ignoren estas anomalías.
430
431 <p>Ahora tienes otro subdirectorio, llamado «gentoo-0.9.12».
432 Muévete a ese directorio y lee <strong>en profundidad</strong> la
433 documentación que encuentres. Generalmente se encuentra en ficheros que se
434 llaman README*, INSTALL*, *.lsm o *.html. Allí encontrarás
435 instrucciones de cómo compilar e instalar el programa (muy
436 probablemente asumirán que lo quieres instalar en el directorio
437 /usr/local/bin, no harás esto, pero eso lo veremos más adelante en
438 <ref id="destdir">).
439
440 <p>El proceso varía de un programa a otro, pero gran parte de los
441 programas modernos vienen con un guión «configure» que configura
442 las fuentes para tu sistema y se asegura de que el sistema está en
443 condiciones de compilarlo. Después de configurarlo (con
444 «./configure»), los programas generalmente se compilan con «make».
445 Algunos de ellos soportan «make check» para ejecutarse incluyendo
446 comprobaciones automáticas. Generalmente se instalarán en sus
447 directorios de destino ejecutando «make install».
448
449 <p>Ahora intenta compilar, y ejecutar el programa, para asegurarte
450 de que funciona bien y de que no rompe nada mientras está
451 instalándose o ejecutándose.
452
453 <P>También, generalmente, puedes ejecutar «make clean» (o mejor
454 «make distclean») para limpiar el directorio donde se genera el
455 programa. A veces hay incluso un «make uninstall» que se puede utilizar
456 para borrar todos los archivos instalados.
457
458 <sect id="namever">Nombre del paquete y versión
459
460 <P>Deberías empezar a construir tu paquete en un directorio de
461 fuentes completamente limpio, o simplemente con las fuentes recién
462 desempaquetadas.
463
464 <p>Para construir correctamente el paquete, debes cambiar el nombre
465 original del programa a letras minúsculas (si no lo está ya), y
466 deberías renombrar el directorio de fuentes a
467 &lt;nombre_de_paquete&gt;-&lt;versión&gt;.
468
469 <P> Si el nombre del programa está formado por varias palabras, contráelas a una
470 palabra o haz una abreviatura. Por ejemplo, el paquete del programa
471 «el editor para X de Javi» se podría llamar javiedx o jle4x, o lo
472 que decidas, siempre y cuando no se exceda de unos límites
473 razonables, como 20 caracteres.
474
475 <p>Comprueba también la versión exacta del programa (la que se
476 incluye en la versión del paquete). Si el programa no está numerado
477 con versiones del estilo de X.Y.Z, pero sí con fecha de publicación,
478 eres libre de utilizar la fecha como número de versión, precedida
479 por «0.0» (sólo por si los desarrolladores originales deciden sacar
480 una versión nueva como 1.0). Así, si la fecha de las fuentes es el
481 19 de diciembre de 1998, puedes utilizar la cadena
482 0 0.0.19981219 (que utiliza el formato de fecha ISO 8601, N. del T.)
483 como número de versión.
484
485 <p>Aún así habrá
486 algunos programas que ni siquiera estén numerados, en cuyo caso deberás
487 contactar con el desarrollador original para ver si tienen algún
488 otro sistema de seguimiento de revisiones.
489
490 <sect id="dh_make">«Debianización» inicial
491 <p>Asegúrate que te encuentras en el directorio donde están las fuentes del
492 programa y ejecuta lo siguiente:
493
494 <p><example>
495 dh_make -e tu.dirección@de.desarrollador -f ../gentoo-0.9.12.tar.gz
496 </example>
497
498 <p>Por supuesto, cambia la cadena
499 «tu.dirección@de.desarrollador» por tu dirección de correo
500 electrónico para que se incluya en la entrada del fichero de cambios
501 así como en otros ficheros, y el nombre de fichero de tu archivo
502 fuente original. Lee <manref name="dh_make" section="1"> para más
503 detalles.
504
505 <p>Saldrá alguna información. Te preguntará qué tipo de paquete
506 deseas crear. Gentoo es un sólo paquete de binarios - crea sólo un
507 binario, y, por tanto, sólo un fichero .deb - así que
508 seleccionaremos la primera opción, con la tecla «s». Comprueba la
509 información que aparece en la pantalla y confirma pulsando la tecla
510 &lt;intro&gt;.
511
512 <p>Tras ejecutar <prgn>dh_make</prgn>, se crea una copia del código
513 original con el nombre <file>gentoo_0.9.12.orig.tar.gz</file> en el
514 directorio raíz para facilitar la creación del paquete de fuentes
515 no nativo de Debian con el <file>diff.gz</file>.
516 Observa que hay dos cambios clave en este nombre de fichero:
517 <list compact>
518 <item>El nombre del paquete y la versión están separados por «<tt>_</tt>».
519 <item>Hay un «<tt>orig.</tt>» antes de «<tt>tar.gz</tt>».
520 </list>
521
522 <p>Como nuevo desarrollador, se desaconseja crear paquetes
523 complicados, por ejemplo:
524
525 <list compact>
526 <item>múltiples paquetes binarios
527 <item>paquetes de bibliotecas
528 <item>paquetes en los que el formato del archivo fuente no es en <tt>tar.gz.</tt> ni en <tt>tar.bz2</tt>, o
529 <item>paquetes cuyas fuentes contienen partes que no se pueden distribuir.
530 </list>
531
532 Estos casos no son extremadamente difíciles, pero sí necesita
533 algunos conocimientos más, así que aquí no se describirá el proceso
534 de empaquetado para este tipo de paquetes.
535
536 <p>Ten en cuenta que deberías ejecutar <prgn>dh_make</prgn> <strong>sólo una
537 vez</strong>, y que no se comportará correctamente si lo haces otra
538 vez en el mismo directorio ya «debianizado». Esto también significa
539 que usarás un método distinto para crear una nueva revisión o una
540 nueva versión de tu paquete en el futuro. Lee más sobre esto más
541 adelante, en <ref id="update">.
542
543 <chapt id="modify">Modificar las fuentes
544
545 <p>Por lo general, los programas se instalan a sí mismos en el
546 subdirectorio <file>/usr/local</file>. Pero los paquetes Debian no pueden
547 utilizar este directorio ya que está reservado para el uso privado
548 del administrador (o de los usuarios). Esto significa que tienes que
549 mirar el sistema de construcción de tu programa, generalmente
550 empezando por el fichero «Makefile». Éste es el guión <manref name="make"
551 section="1"> que se usará para automatizar la creación de este programa.
552 Para más detalles sobre los ficheros «Makefiles», consulta <ref id="rules">.
553
554 <p>Observa que si tu programa usa GNU <manref name="automake"
555 section="1"> y/o <manref name="autoconf" section="1">, lo que quiere
556 decir que las fuentes incluyen ficheros Makefile.am y Makefile.in,
557 respectivamente, ya que necesitarás modificar esos ficheros, porque
558 cada invocación de automake reescribirá los ficheros «Makefile.in»
559 con información generada a partir de los ficheros «Makefile.am», y
560 cada llamada a <file>./configure</file> hará lo mismo con los
561 ficheros «Makefile», con información de los ficheros
562 «Makefile.in». Editar los ficheros «Makefile.am» requiere algunos
563 conocimientos de <prgn>automake</prgn>, que puedes obtener leyendo
564 la entrada de <prgn>info</prgn> para automake, mientras que editar
565 los ficheros «Makefile.in» es casi lo mismo que editar ficheros
566 «Makefile», simplemente basta con poner atención en las variables,
567 es decir, cualquier cadena que empiece y acabe con el caracter «@»,
568 como por ejemplo @CFLAGS@ o @LN_S@, que se sustituyen por otros
569 valores cada vez que se ejecute <file>./configure</file>. Por favor,
570 lee <file>&autotools-dev;</file> antes de empezar.
571
572 <p>Ten en cuenta que no hay espacio aquí para entrar en
573 <em>todos</em> los detalles respecto a los arreglos que deben
574 hacerse en las fuentes originales. Sin embargo, a continuación se
575 detallan algunos de los problemas más frecuentes.
576
577 <sect id="destdir">Instalación en un subdirectorio
578
579 <p>La mayor parte de los programas tienen alguna manera de
580 instalarse en la estructura de directorios existente en tu sistema,
581 para que los binarios sean incluidos en tu $PATH, y para que
582 encuentre la documentación y páginas de manual en los lugares
583 habituales. Sin embargo, si lo instalas de esta forma, el programa
584 se instalará con los demás binarios que ya están en tu sistema.
585 Esto dificultará a las herramientas de paquetes averiguar qué
586 archivos pertenecen a tu paquete y cuales no.
587
588 <p>Por lo tanto, necesitas hacer algo más: instalar el programa en
589 un subdirectorio temporal desde el cual las herramientas de desarrollo
590 construirán el paquete .deb que se pueda instalar. Todo
591 lo que se incluye en este directorio será instalado en el sistema
592 del usuario cuando instale su paquete, la única diferencia es que
593 dpkg instalará los ficheros en el directorio raíz.
594
595 <p>Este directorio temporal se creará bajo el directorio debian/
596 que está dentro del árbol del código descomprimido,
597 generalmente con el nombre
598 <file>debian/nombre_de_paquete</file>.
599
600 <p>Ten en cuenta que, aunque necesitas que el programa se instale en
601 <file>debian/nombre_de_paquete</file>, también necesitas que se comporte correctamente cuando se
602 instale en el directorio raíz, es decir, cuando se instale desde el
603 paquete .deb. Así que no deberías permitir que al construirse
604 lo haga con cadenas como
605 <tt>/home/me/deb/gentoo-0.9.12/usr/share/gentoo</tt>
606 dentro de los archivos del paquete a distribuir.
607
608 <p>Esto será sencillo con los de programas que utilicen la
609 herramienta GNU <prgn>autoconf</prgn>. La mayoría de estos
610 programas tienen ficheros «Makefile» por omisión que permiten
611 configurar la instalación en un subdirectorio cualquiera, aunque
612 recordando que, por ejemplo, <file>/usr</file> es el prefijo normal.
613 Cuando detecte que tu programa usa <prgn>autoconf</prgn>,
614 <prgn>dh_make</prgn> fijará las opciones necesarias para hacer esto
615 automáticamente, así que puedes dejar de leer esta sección. Pero con
616 otros programas puede
617 ser necesario que examines y edites los ficheros «Makefile».
618
619 <p>Esta es la parte importante del Makefile de gentoo:
620
621 <p><example>
622 # ¿Dónde poner el binario en «make install»?
623 BIN = /usr/local/bin
624
625 # ¿Dónde poner los iconos en «make install»?
626 ICONS = /usr/local/share/gentoo/
627 </example>
628
629 <p>Vemos que los ficheros están configurados para instalarse bajo
630 <file>/usr/local</file>.
631 Cambia estas rutas a:
632
633 <p><example>
634 # ¿Dónde poner el binario en «make install»?
635 BIN = $(DESTDIR)/usr/bin
636
637 # ¿Dónde poner los iconos en «make install»?
638 ICONS = $(DESTDIR)/usr/share/gentoo
639 </example>
640
641 <p>Pero: ¿por qué en este directorio y no en otro? Porque los paquetes
642 de Debian nunca se instalan bajo <file>/usr/local</file>, este árbol
643 de directorio, está reservado para el uso del administrador del sistema.
644 Así que estos ficheros deben instalarse en <file>/usr</file>.
645
646 <p>La localización correcta de los binarios, iconos, documentación,
647 etc, está especificada en el «Estándar de la jerarquía del
648 sistema de ficheros»
649 (véase /usr/share/doc/debian-policy/fhs).
650 Te recomiendo que leas las secciones que podrían aplicar a tu
651 paquete.
652
653 <p>Así pues, deberíamos instalar el
654 binario en /usr/bin en lugar de /usr/local/bin y la página de
655 manual en /usr/share/man/man1 en lugar de /usr/local/man/man1.
656 No hemos mencionado ninguna página de manual en el Makefile de gentoo,
657 pero en Debian se requiere que cada programa debe tener una, así que
658 haremos una más tarde y la instalaremos en /usr/share/man/man1.
659
660 <p>Algunos programas no usan variables en el makefile para definir
661 rutas como éstas. Esto significa que tendrás que editar algunos de los
662 ficheros de código C para arreglarlos y que usen las rutas correctas.
663 Pero, ¿dónde buscar?, y exactamente, ¿el qué?
664 Puedes probar a encontrarlos usando:
665
666 <p><example>
667 grep -nr -e 'usr/local/lib' --include='*.[c|h]' .
668 </example>
669
670 <p>(En cada subdirectorio que contenga ficheros .c y .h, <prgn/grep/
671 nos indicará el nombre del fichero y la línea cuando encuentre una
672 ocurrencia.
673
674 <p>Ahora edita esos ficheros y cambia en esas líneas usr/local/lib con
675 usr/share y ya está. Sólo tienes que reemplazar usr/local/lib por tu
676 localización, pero debes ser muy cuidadoso para no modificar el
677 resto del código, especialmente si no sabes mucho sobre cómo
678 programar en C. :-)
679
680 <p>Después de esto deberías encontrar el objetivo «install» (busca
681 una línea que comience por «install:») y renombra todas las
682 referencias a directorios distintos de los definidos al comienzo del
683 Makefile. Anteriormente el objetivo «install» decía:
684
685 <p><example>
686 install: gentoo
687 install ./gentoo $(BIN)
688 install icons $(ICONS)
689 install gentoorc-example $(HOME)/.gentoorc
690 </example>
691
692 <p>Después del cambio dice:
693 <example>
694 install: gentoo-target
695 install -d $(BIN) $(ICONS) $(DESTDIR)/etc
696 install ./gentoo $(BIN)
697 install -m644 icons/* $(ICONS)
698 install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
699 </example>
700
701 <p>Seguramente has notado que ahora hay una orden <tt>install
702 -d</tt> antes de las demás órdenes de la regla. El makefile original
703 no lo tenía porque normalmente /usr/local/bin y otros directorios ya
704 existen en el sistema donde se ejecuta «make install». Sin embargo,
705 dado que lo instalaremos en un directorio vacío (o incluso
706 inexistente), tendremos que crear cada uno de estos directorios
707
708 <p>También podemos añadir otras cosas al final de la regla,
709 como la instalación de documentación adicional que los desarrolladores
710 originales a veces omiten:
711
712 <p><example>
713 install -d $(DESTDIR)/usr/share/doc/gentoo/html
714 cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
715 </example>
716
717 <p>Un lector atento se dará cuenta de que he cambiado «gentoo» a
718 «gentoo-target» en la línea «install:». A eso se le llama arreglar
719 un fallo en el programa. :-)
720
721 <p>Siempre que hagas cambios que no estén específicamente
722 relacionados con el paquete Debian, asegúrate de que los envías al
723 desarrollador original para que éste los pueda incluir en la próxima
724 revisión del programa y así le puedan ser útiles a alguien más.
725 Además, recuerda hacer que tus cambios no sean específicos para
726 Debian o Linux (¡ni siquiera para Unix!) antes de enviarlos, hazlo portable.
727 Esto hará que tus arreglos sean más fáciles de aplicar.
728
729 <p>Ten en cuenta que no tienes que enviar ninguno de los ficheros debian/*
730 al desarrollador original.
731
732 <sect id="difflibs">Bibliotecas diferentes
733
734 <p>Hay otro problema común: las bibliotecas son generalmente diferentes
735 de plataforma a plataforma. Por ejemplo, un Makefile puede contener
736 una referencia a una biblioteca que no exista en Debian o ni siquiera
737 en Linux. En este caso, se necesita cambiarla a una biblioteca que sí
738 exista en Debian y sirva para el mismo propósito.
739
740 <p>Así, si hay una línea en el Makefile (o Makefile.in) de tu
741 programa que dice algo como lo siguiente (y tu programa no compila):
742
743 <p><example>
744 LIBS = -lcurses -lcosas -lmáscosas
745 </example>
746
747 <p>Entonces cámbiala a lo siguiente, y funcionará casi con
748 seguridad:
749 <p><example>
750 LIBS = -lncurses -lcosas -lmáscosas
751 </example>
752
753 <p>(El autor se ha dado cuenta de que éste no es el mejor ejemplo ya
754 que ahora el paquete <package/libncurses/ incluye un enlace
755 simbólico a libcurses.so, pero no puedo pensar uno mejor. Cualquier
756 sugerencia sería muy bien recibida :-)
757
758 <chapt id="dreq">Las cosas necesarias bajo debian/
759
760 <p>Ahora hay un nuevo subdirectorio bajo el directorio principal del
761 programa («gentoo-0.9.12»), que se llama «debian».
762 Hay algunos ficheros en este directorio que debemos editar para adaptar
763 el comportamiento del paquete. La parte más importante es modificar
764 los ficheros «control», «rules», «changelog», y
765 «copyright» que son necesarios en todos los paquetes.
766
767 <sect id="control">El fichero «control»
768
769 <p>Este fichero contiene varios valores que <prgn/dpkg/, <prgn/dselect/
770 y otras herramientas de gestión de paquetes
771 usarán para gestionar el paquete.
772
773 <p>Aquí está el fichero de control que dh_make crea para nosotros:
774
775 <p><example>
776 1 Source: gentoo
777 2 Section: unknown
778 3 Priority: optional
779 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
780 5 Build-Depends: debhelper (>> 3.0.0)
781 6 Standards-Version: 3.6.2
782 7
783 8 Package: gentoo
784 9 Architecture: any
785 10 Depends: ${shlibs:Depends}
786 11 Description: &lt;insertar hasta 60 caracteres de descripción&gt;
787 12 &lt;inserta una descripción larga, indentada con espacios.&gt;
788 </example>
789 (He añadido los números de línea).
790
791 <p>Las líneas 1 a 6 son la información de control para el paquete
792 fuente.
793
794 <p>La línea 1 es el nombre del paquete fuente.
795
796 <p>La línea 2 es la sección de la distribución dentro de la que
797 estará este paquete.
798
799 <p>Como puede que hayas notado, Debian está dividida
800 en secciones: «main» (principal, N. del T.) (el software libre),
801 «non-free» (no libre, N. del T.) (el software que realmente no es
802 libre) y «contrib» (software libre que depende de software no libre).
803 Bajo ellas hay subdivisiones lógicas que describen en una palabra
804 qué paquetes hay dentro. Así que tenemos «admin» para programas que
805 sólo usa un administrador, «base» para las herramientas básicas,
806 «devel» para las herramientas de programación, «doc» para la
807 documentación, «libs» para las bibliotecas, «mail» para
808 lectores y demonios de correo-e, «net» para aplicaciones y demonios
809 de red, «x11» para programas específicos de X11, y muchos más.
810
811 <p>Vamos a cambiarla para que ponga x11. El prefijo "main/" ya va
812 implícito, así que podemos omitirlo.
813
814 <p>La línea 3 describe cómo de importante es para el usuario la
815 instalación de este paquete. Podrás consultar en el manual de normas
816 de Debian («Debian Policy», N. del T.) la guía de los valores que
817 deberían tener estos campos. La prioridad «optional» suele ser lo
818 mejor para los paquetes nuevos.
819
820 <p>«Section» y «Priority» se usan en las interfaces
821 como <prgn/dselect/ cuando ordenan los paquetes. Una vez que envies el
822 paquete a Debian, el valor de estos dos campos puede no ser aceptado
823 por los responsables del archivo, en cuyo caso te lo notificarán por
824 correo electrónico.
825
826 <p>Como es un paquete de prioridad normal y no tiene conflictos con
827 ningún otro, lo dejaremos con prioridad «optional» (opcional, N. del T.).
828
829 <p>La línea 4 es el nombre y correo electrónico del desarrollador.
830 Asegúrate de que este campo incluye una cabecera válida «To: »,
831 para una dirección de correo electrónico, porque despueé de que envíes
832 el paquete, el sistema de seguimiento de errores («Bug Tracking System», N. del T.)
833 utilizará esta dirección para enviarte los mensajes de los bugs.
834 Evita usar comas, el signo «&amp;» y paréntesis.
835
836 <p>La línea 5 incluye la lista de paquetes requeridos para construir
837 tu paquete. Algunos paquetes como gcc y make están implícitos,
838 consulta el paquete <package/build-essential/ para más detalles.
839 Si se necesita algún compilador no estándar u otra herramienta
840 para construir tu paquete, deberías añadirla en la línea «Build-Depends».
841 Las entradas múltiples se separan con comas, lee la explicación de las
842 dependencias binarias para averiguar más sobre la sintaxis de este campo.
843
844 <p>También tienes los campos «Build-Depends-Indep» y «Build-Conflicts»
845 entre otros. Estos datos los usarán los programas de construcción
846 automática de paquetes de Debian para crear paquetes binarios para
847 el resto de arquitecturas.
848 Consulta las normas de Debian para más información sobre las dependencias
849 de construcción y la Referencia del Desarrollador para más información
850 sobre las otras arquitecturas y sobre cómo migrar los programas
851 a ellas.
852
853 <p>Aquí tienes un truco que puedes usar para averiguar qué paquetes
854 necesitará tu paquete en su construcción:
855 <example>
856 strace -f -o /tmp/log ./configure
857 # o make en lugar de ./configure, si el paquete no usa autoconf
858 for x in `dpkg -S $(grep open /tmp/log|\
859 perl -pe 's!.* open\(\"([^\"]*).*!$1!' |\
860 grep "^/"| sort | uniq|\
861 grep -v "^\(/tmp\|/dev\|/proc\)" ) 2>/dev/null|\
862 cut -f1 -d":"| sort | uniq`; \
863 do \
864 echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 -d":"` "), "; \
865 done
866 </example>
867
868 <p>Para encontrar manualmente las dependencias exactas de
869 <prgn><var>/usr/bin/foo</var></prgn>, ejecuta
870 <example>
871 objdump -p <var>/usr/bin/foo</var> | grep NEEDED
872 </example>
873 y para cada biblioteca, por ejemplo, <prgn>libfoo.so.6</prgn>, ejecuta
874 <example>
875 dpkg -S libfoo.so.6
876 </example>
877 Debes utilizar la versión «-dev»
878 de cada uno de los paquetes dentro de la entrada «Build-deps». Si usas
879 <prgn>ldd</prgn> para este propósito, también te informará de las
880 dependencias de bibliotecas indirectas, lo que puede llevar a que se
881 introduzcan demasiadas dependencias de construcción.
882
883 <p>Gentoo también requiere <package/xlibs-dev/,
884 <package/libgtk1.2-dev/ y <package/libglib1.2-dev/
885 para su construcción, así que lo añadiremos junto a
886 <package/debhelper/.
887
888 <p>La línea 6 es la versión de los estándares definidos en las normas de
889 Debian que sigue este paquete, es decir, la versión del manual de normas
890 que has leído mientras haces tu paquete.
891
892 <p>La línea 8 es el nombre del paquete binario. Este suele ser el mismo
893 que el del paquete fuente, pero no tiene que ser necesariamente así siempre.
894
895 <p>La línea 9 describe la arquitectura de CPU para la que el paquete binario
896 puede ser compilado. Dejaremos puesto «any» (cualquiera, N. del T.),
897 porque <manref name="dpkg-gencontrol" section="1"> la rellenará con
898 el valor apropiado cuando se compile este paquete en cualquier
899 arquitectura para la cual pueda ser compilado.
900
901 <p>Si tu paquete es independiente de la arquitectura (por ejemplo, un
902 documento, un guión escrito en Perl o para el intérprete de órdenes), cambia esto a
903 «all», y consulta más adelante <ref id="rules"> sobre cómo usar la regla
904 «binary-indep» en lugar de «binary-arch» para construir el paquete.
905
906 <p>La línea 10 muestra una de las más poderosas posibilidades del
907 sistema de paquetes de Debian. Los paquetes se pueden relacionar
908 unos con otros de diversas formas. Aparte de «Depends:» (depende de,
909 N. del T.) otros campos de relación son «Recommends:» (recomienda,
910 N. del T.), «Suggests:» (sugiere, N. del T.), «Pre-Depends:»
911 (predepende de, N. del T.), «Conflicts:» (entra en conflicto con,
912 N. del T.), «Provides:» (provee, N. del T.), «Replaces:» (reemplaza
913 a, N. del T.).
914
915 <p>Las herramientas de gestión de paquetes se comportan habitualmente
916 de la misma forma cuando tratan con esas relaciones entre paquetes;
917 si no es así, se explicará en cada caso.
918 (véase <manref name="dpkg" section="8">,
919 <manref name="dselect" section="8">,
920 <manref name="apt" section="8">,
921 <manref name="aptitude" section="1">, etc.)
922
923 <p>A continuación se detalla el significado de las dependencias:
924
925 <list>
926 <item>Depends:
927 <p>No se instalará el programa a menos que los paquetes de los que
928 depende estén ya instalados. Usa esto si tu programa no funcionará de
929 ninguna forma (o se romperá fácilmente) a no ser que se haya instalado un
930 paquete determinado.</item>
931
932 <item>Recommends:
933 <p>Programas como dselect o aptitude informarán en la instalación
934 de los paquetes recomendados por tu paquete, dselect incluso insistirá.
935 dpkg y apt-get ignorarán este campo. Usa esto para paquetes que no
936 son estrictamente necesarios pero que se usan habitualmente con tu programa.
937 </item>
938
939 <item>Suggests:
940 <p>Cuando un usuario instale el paquete, todos los programas le
941 informarán de que puede instalar los paquetes sugeridos. Salvo
942 <prgn/dpkg/ y <prgn/apt/, que ignorarán estas dependencias. Utiliza
943 esto para paquetes que funcionarán bien con tu programa pero que no
944 son necesarios en absoluto.</item>
945
946 <item>Pre-Depends:
947 <p>Esto es más fuerte que «Depends». El paquete no se instalará a menos
948 que los paquetes de los que pre-dependa esté instalados
949 <em>y correctamente configurados</em>. Utiliza esto
950 <strong>muy</strong> poco y sólo después de haberlo discutido en la
951 lista de distribución de debian-devel. En resumidas cuentas: no lo
952 utilices en absoluto :-)</item>
953
954 <item>Conflicts:
955 <p>El paquete no se instalará hasta que todos los paquetes con los
956 que entra en conflicto hayan sido eliminados. Utiliza esto si tu
957 programa no funcionará en absoluto (o fallará fácilmente) si un paquete
958 en concreto está instalado.
959 </item>
960
961 <item>Provides:
962 <p>Se han definido nombres virtuales para algunos tipos determinados de
963 paquetes que ofrecen múltiples alternativas para la misma función.
964 Puedes obtener la lista completa en el fichero
965 /usr/share/doc/debian-policy/virtual-package-names-list.text.gz.
966 Usa esto si tu programa ofrece las funciones de un paquete virtual
967 que ya exista.</item>
968
969 <item>Replaces:
970 <p>Usa esto si tu programa reemplaza ficheros de otro paquete o
971 reemplaza totalmente otro paquete (generalmente se usa conjuntamente
972 con «Conflicts:»). Se eliminarán los ficheros de los paquetes
973 indicados antes de instalar el tuyo.</item>
974 </list>
975
976 <p>Todos estos campos tienen una sintaxis uniforme: se trata de una lista
977 de nombres de paquetes separados por comas. Estos nombres de
978 paquetes también puede ser listas de paquetes alternativos,
979 separados por los símbolos de barra vertical <tt>|</tt> (símbolos
980 tubería).
981
982 <p>Los campos pueden restringir su aplicación a versiones
983 determinadas de cada paquete nombrado. Esto se hace listando después
984 de cada nombre de paquete individual las versiones entre paréntesis,
985 e indicando antes del número de versión una relación de la siguiente
986 lista. Las relaciones permitidas son: <tt>&lt;&lt;</tt>,
987 <tt>&lt;=</tt>, <tt>=</tt>, <tt>&gt;=</tt> y <tt>&gt;&gt;</tt>
988 para estrictamente anterior, anterior o igual, exactamente igual,
989 posterior o igual o estrictamente posterior, respectivamente.
990 Por ejemplo:
991
992 <p><example>
993 Depends: foo (>= 1.2), libbar1 (= 1.3.4)
994 Conflicts: baz
995 Recommends: libbaz4 (>> 4.0.7)
996 Suggests: quux
997 Replaces: quux (<< 5), quux-foo (<= 7.6)
998 </example>
999
1000 <p>La última funcionalidad que necesitas conocer es
1001 $(shlibs:Depends). Después de que tu paquete se compile y se
1002 instale en el directorio temporal,
1003 <manref name="dh_shlibdeps" section="1"> lo escaneará en busca
1004 de binarios y bibliotecas para determinar las dependencias
1005 de bibliotecas compartidas y en qué paquetes están, tales como
1006 como libc6 o xlib6g. Luego pasará la lista a
1007 <manref name="dh_gencontrol" section="1"> que rellenará estas
1008 dependencias en el lugar adecuado. De esta forma no tendrás que preocuparte
1009 por esto.
1010
1011 <p>Después de decir todo esto, podemos dejar la línea de «Depends:»
1012 exactamente como está ahora e insertar otra línea tras ésta que diga
1013 <tt>Suggests: file</tt>, porque gentoo utiliza algunas funciones de
1014 este paquete/programa.
1015
1016 <p>La línea 11 es una descripción corta. La mayor parte de los
1017 monitores de la gente son de 80 columnas de ancho, así que no
1018 debería tener más de 60 caracteres. Cambiaré esto a «fully GUI
1019 configurable GTK+ file manager» («Gestor de ficheros GTK+
1020 completamente configurable por GUI»).
1021
1022 <p>La línea 12 es donde va la descripción larga del paquete. Debería
1023 ser al menos un párrafo que dé más detalles del paquete. La primera
1024 columna de cada línea debería estar vacía. No puede haber líneas en
1025 blanco, pero puede poner un . (punto) en una columna para simularlo.
1026 Tampoco debe haber más de una línea en blanco después de la
1027 descripción completa.
1028
1029
1030 <p>Aquí está el fichero de control actualizado:
1031
1032 <p><example>
1033 1 Source: gentoo
1034 2 Section: x11
1035 3 Priority: optional
1036 4 Maintainer: Josip Rodin &lt;joy-mg@debian.org&gt;
1037 5 Build-Depends: debhelper (>> 3.0.0), xlibs-dev, libgtk1.2-dev, libglib1.2-dev
1038 6 Standards-Version: 3.5.2
1039 7
1040 8 Package: gentoo
1041 9 Architecture: any
1042 10 Depends: ${shlibs:Depends}
1043 11 Suggests: file
1044 12 Description: fully GUI configurable X file manager using GTK+
1045 13 gentoo is a file manager for Linux written from scratch in pure C. It
1046 14 uses the GTK+ toolkit for all of its interface needs. gentoo provides
1047 15 100% GUI configurability; no need to edit config files by hand and re-
1048 16 start the program. gentoo supports identifying the type of various
1049 17 files (using extension, regular expressions, or the «file» command),
1050 18 and can display files of different types with different colors and icons.
1051 19 .
1052 20 gentoo borrows some of its look and feel from the classic Amiga file
1053 21 manager "Directory OPUS" (written by Jonathan Potter).
1054 </example>
1055 (He añadido los números de línea).
1056
1057 <sect id="copyright">El fichero «copyright»
1058
1059 <p>Este fichero contiene la información sobre la licencia y
1060 copyright de las fuentes originales del paquete. El formato no está
1061 definido en las normas, pero sí en sus contenidos (sección 12.5
1062 «Copyright information»).
1063
1064 <p>dh_make crea por omisión un fichero como este:
1065
1066 <p><example>
1067 1 This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
1068 2 Wed, 11 Nov 1998 21:02:14 +0100.
1069 3
1070 4 It was downloaded from &lt;rellena con el sitio ftp site&gt;
1071 5
1072 6 Upstream Author(s): &lt;pon el nombre del autor y dirección de correo&gt;
1073 7
1074 8 Copyright:
1075 9
1076 10 &lt;Debe incluirse aquí&gt;
1077 </example>
1078 (He añadido los números de línea).
1079
1080 <p>Las cosas importantes que se deben añadir a este fichero son el
1081 lugar de donde obtuviste el paquete junto con la nota de copyright y
1082 licencia originales. Debes incluir la licencia completa, a menos que
1083 sea una licencia común en el mundo del software libre como GNU GPL o
1084 LGPL, BSD o la «Licencia artística», donde basta referirse al fichero
1085 apropiado en el directorio /usr/share/common-licenses/ que existe en
1086 todo sistema Debian.
1087
1088 <p>Gentoo está publicado bajo la Licencia Pública
1089 General GNU, así que cambiaremos el fichero a esto:
1090
1091 <p><example>
1092 1 This package was debianized by Josip Rodin &lt;joy-mg@debian.org&gt; on
1093 2 Wed, 11 Nov 1998 21:02:14 +0100.
1094 3
1095 4 It was downloaded from: ftp://ftp.obsession.se/gentoo/
1096 5
1097 6 Upstream author: Emil Brink &lt;emil@obsession.se&gt;
1098 7
1099 8 This software is copyright (c) 1998-99 by Emil Brink, Obsession
1100 9 Development.
1101 10
1102 11 You are free to distribute this software under the terms of
1103 12 the GNU General Public License either version 2 of the License,
1104 13 or (at your option) any later version.
1105 14 On Debian systems, the complete text of the GNU General Public
1106 15 License can be found in the file `/usr/share/common-licenses/GPL-2'.
1107 </example>
1108 (He añadido los números de línea).
1109
1110 <p>Por favor, sigue el COMO de debian-devel-announce:
1111 <url id="&copyright-howto;"> .
1112
1113 <p>(Nota del T.: las normas actuales de Debian actuales indican que los
1114 documentos aquí citados estén escritos en inglés, al ser el idioma
1115 oficial del proyecto, por lo que no se traducen en este documento).
1116
1117 <sect id="changelog">El fichero «changelog»
1118
1119 <p>Este es un fichero requerido, que tiene un formato especial
1120 descrito en las normas, sección 4.4 "debian/changelog". Este es el
1121 formato que usan dpkg y otros programas para obtener el número de
1122 versión, revisión, distribución y urgencia de tu paquete.
1123
1124 <p>Para ti es también importante, ya que es bueno tener documentados
1125 todos los cambios que hayas hecho. Esto ayudará a las personas que se
1126 descarguen tu paquete para ver si hay temas pendientes en el paquete
1127 que deberían conocer de forma inmediata. Se guardará como
1128 «/usr/share/doc/gentoo/changelog.Debian.gz» en el paquete binario.
1129
1130 <p>dh_make crea uno por omisión, el cual es como sigue:
1131
1132 <p><example>
1133 1 gentoo (0.9.12-1) unstable; urgency=low
1134 2
1135 3 * Initial Release.
1136 4
1137 5 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1138 6
1139 </example>
1140 (He añadido los números de línea).
1141
1142 <p>La línea 1 es el nombre del paquete, versión, distribución y
1143 urgencia. El nombre debe coincidir con el nombre del paquete fuente,
1144 la distribución debería ser, por ahora, «unstable» (o incluso «experimental»)
1145 y la urgencia no debería cambiarse a algo mayor que «low». :-)
1146
1147 <p>Las línea 3-5 son una entrada de registro, donde se documentan
1148 los cambios hechos en esta revisión del paquete (no los cambios en
1149 las fuentes originales - hay un fichero especial para este
1150 propósito, creado por los autores originales y que instalarás luego como
1151 /usr/share/doc/gentoo/changelog.gz). Las nuevas líneas deben
1152 insertarse justo antes de la línea que hay más arriba que comienza
1153 por un asterisco («*»). Puede hacerlo con <manref name="dch"
1154 section="1">, o manualmente con cualquier editor de texto.
1155
1156 <p>Terminarás con algo así:
1157
1158 <p><example>
1159 1 gentoo (0.9.12-1) unstable; urgency=low
1160 2
1161 3 * Initial Release.
1162 4 * This is my first Debian package.
1163 5 * Adjusted the Makefile to fix $DESTDIR problems.
1164 6
1165 7 -- Josip Rodin &lt;joy-mg@debian.org&gt; Wed, 11 Nov 1998 21:02:14 +0100
1166 8
1167 </example>
1168 (He añadido los números de línea).
1169
1170 <p>Puedes leer más sobre cómo actualizar el fichero changelog más
1171 adelante en <ref id="update">.
1172
1173 <sect id="rules">El fichero «rules»
1174
1175 <p>Ahora necesitamos mirar las reglas exactas que <manref
1176 name="dpkg-buildpackage" section="1"> utilizará para crear el
1177 paquete. Este fichero es en realidad otro Makefile,
1178 pero diferente al que viene en las fuentes originales.
1179 A diferencia de otros ficheros en debian/, éste necesita ser
1180 un fichero ejecutable.
1181
1182 <p>Cada fichero «rules» (de reglas, N. del T.), como muchos otros
1183 Makefiles, se compone de varias reglas que especifican cómo tratar
1184 las fuentes. Cada regla se compone de objetivos, ficheros o nombres
1185 de acciones que se deben llevar a cabo (por ejemplo, «build:» o
1186 «install:»). Las reglas que quieras ejecutar deberían llamarse como
1187 argumentos de la línea de órdenes (por ejemplo, «./debian/rules
1188 build» o «make -f rules install»). Después del nombre del objetivo,
1189 puedes nombrar las dependencias, programas o ficheros de los que la
1190 regla dependa. Después de esto, hay un número cualquiera de
1191 instrucciones (¡indentado con &lt;tab&gt;!), hasta que se llega a
1192 una línea en blanco. Ahí empieza otra regla. Las líneas múltiples en
1193 blanco, y las líneas que empiezan por almohadillas («#») se tratan
1194 como comentarios y se ignoran.
1195
1196 <p>Probablemente ya te hayas perdido, pero todo quedará más claro
1197 después de ver el fichero «rules» que dh_make pone por omisión.
1198 Deberías leer también la entrada de «make» en info para más
1199 información.
1200
1201 <p>La parte importante que debes conocer sobre el fichero de reglas
1202 creado por dh_make, es que sólo es una sugerencia. Funcionará para
1203 paquetes simples pero para más complicados, no te asustes y añade o
1204 quita cosas de éste para ajustarlo a tus necesidades. Una cosa que
1205 no debes cambiar son los nombres de las reglas, porque todas las
1206 herramientas utilizan estos nombres, como se describe en las normas.
1207
1208 <p>Éste es, más o menos, el contenido del fichero debian/rules que
1209 dh_make genera por omisión:
1210
1211 <p><example>
1212 &makefile;
1213 </example>
1214 (He añadido los números de línea. En el fichero <file>debian/rules</file>
1215 los espacios iniciales de las líneas son códigos de tabulación)
1216
1217 <p>(N. del T.: se han traducido los comentarios del fichero de
1218 reglas, pero en el fichero generado por dh_make estarán en inglés)
1219
1220 <p>Probablemente estés familiarizado con líneas como la primera de guiones
1221 escritos en shell o Perl. Esta línea indica que el fichero debe
1222 ejecutarse con /usr/bin/make.
1223
1224 <p>El significado de las variables DH_* que se mencionan en las
1225 líneas 8 y 9 debería ser evidente de la descripción corta.
1226 Para más información sobre DH_COMPAT consulte la sección
1227 «Debhelper compatibility levels» del manual de
1228 <manref name="debhelper" section="1">.
1229
1230 <p>Las líneas de la 11 a la 16 son el esqueleto de apoyo para
1231 los parámetros de DEB_BUILD_OPTIONS, descritos en las normas sección
1232 10.1 «Binarios». Basicamente, estas cosas controlan si los binarios
1233 se construyen con los símbolos del depurador
1234 y si deberían eliminarse tras la instalación.
1235 De nuevo, es sólo un esqueleto, una pista de lo que deberías hacer.
1236 Deberías comprobar cómo el sistema de construcción de las fuentes
1237 maneja la inclusión de los símbolos del depurador y su eliminación
1238 en la instalación e implementarlo por ti mismo.
1239
1240 <p>Habitualmente puedes decirle a gcc que compile con "-g" usando la variable
1241 CFLAGS. Si este es el caso de tu paquete, pon la variable
1242 <em>añadiendo</em> <tt>CFLAGS="$(CFLAGS)"</tt> a la invocación de
1243 $(MAKE) en la regla de construcción (ver más abajo). Alternativamente,
1244 si tu paquete usa un guión de configuración de autoconf puedes definir
1245 la cadena arriba mostrada <em>anteponiéndola</em> a la llamada a ./configure
1246 en la regla de construcción.
1247
1248 <p>Los programas a los que se le quitan los símbolos del depurador
1249 con <prgn/strip/ se configuran normalmente para instalarse sin pasar
1250 por <prgn/strip/, y a menudo sin una opción para cambiar esto.
1251 Afortunadamente, tienes <manref name="dh_strip" section="1"> que
1252 detectará cuando la bandera (N. del T., «flag»)
1253 DEB_BUILD_OPTIONS=nostrip está activada y finalizará silenciosamente.
1254
1255 <p>Las líneas 18 a la 26 describen la regla build (y su hija
1256 «build-stamp»), que ejecuta make con el propio Makefile de la
1257 aplicación para compilar el programa. Si el programa utiliza las
1258 utilidades de configuración de GNU para construir los binarios, por
1259 favor, asegúrate de leer <file>&autotools-dev;</file>. Hablaremos
1260 sobre el ejemplo comentado docbook-to-man más adelante en <ref
1261 id="manpage">.
1262
1263 <p>La regla «clean» (limpiar, N. del T.), como se especifica en las
1264 líneas 28 a la 36, limpia cualquier binario innecesario o cosas
1265 generadas automáticamente, dejadas después de la construcción del
1266 paquete.
1267 Esta regla debe funcionar en todo momento (¡incluso cuando
1268 el árbol de fuentes <em>esté</em> limpio!), así que, por favor, usa
1269 las opciones que fuercen a hacer cosas (por ejemplo para rm, sería
1270 «-f»), o ignora los valores devueltos (con un «-» al principio de la
1271 orden).
1272
1273 <p>El proceso de instalación, la regla «install», comienza en la
1274 línea 38. Básicamente ejecuta la regla «install» del Makefile del
1275 programa, pero lo instala en el directorio <tt>$(CURDIR)/debian/gentoo</tt>.
1276 Esta es la razón por la que especificamos $(DESTDIR) como el directorio
1277 raíz de instalación del Makefile de gentoo.
1278
1279 <p>Como sugiere el comentario, la regla «binary-indep», en la línea 48,
1280 se usa para construir paquetes independientes de arquitectura.
1281 Como no tenemos ninguno, aquí no se hará nada.
1282
1283 <p>Lo siguiente es la regla «binary-arch», en las líneas 52 a 79, en
1284 la que ejecutamos varias pequeñas utilidades del paquete debhelper
1285 que nos permiten hacer diversas operaciones en nuestro paquete para
1286 que cumpla las normas de Debian.
1287
1288 <p>Si tu paquete es del tipo «Architecture: all» necesitarás incluir
1289 todas las órdenes para crear el paquete bajo esta regla, y dejar la
1290 siguiente regla («binary-arch») vacía en su lugar.
1291
1292 <p>Los nombres comienzan con dh_ y el resto del nombre es la descripción
1293 de lo que la utilidad en particular realmente hace. Es todo más o menos
1294 auto-explicativo, pero a continuación tienes algunos añadidos a las
1295 explicaciones:
1296
1297 <list>
1298 <item><manref name="dh_testdir" section="1"> comprueba que estás en
1299 el directorio correcto (esto es, el directorio raíz de la
1300 distribución de las fuentes),
1301 <item><manref name="dh_testroot" section="1"> comprueba que tienes
1302 permisos de superusuario que son necesarios para las reglas
1303 «binary-arch», «binary-indep» and «clean»,
1304 <item><manref name="dh_installman" section="1"> copiará todas las
1305 páginas de manual que encuentre en el paquete fuente en
1306 el paquete, sólo has de indicarle donde están de forma relativa,
1307 desde el nivel más alto del directorio de codigo.
1308 <item><manref name="dh_strip" section="1"> elimina las cabeceras de
1309 depuración de los ficheros ejecutables para hacerlos más
1310 pequeños,
1311 <item><manref name="dh_compress" section="1"> comprime las
1312 páginas de manual y los ficheros de documentación que sean más
1313 grandes de 4 kB con <manref name="gzip" section="1">,
1314 <item><manref name="dh_installdeb" section="1"> copia los ficheros
1315 relativos al paquete (es decir, los guiones del desarrollador
1316 que mantiene el paquete)
1317 bajo el directorio <file>debian/gentoo/DEBIAN</file>,
1318 <item><manref name="dh_shlibdeps" section="1"> calcula las
1319 dependencias de los ejecutables y bibliotecas con las bibliotecas
1320 compartidas,
1321 <item><manref name="dh_gencontrol" section="1"> genera e instala el
1322 fichero de control en <file>debian/gentoo/DEBIAN</file>,
1323 <item><manref name="dh_md5sums" section="1"> genera las sumas de
1324 comprobación MD5 para todos los ficheros del paquete.
1325 </list>
1326
1327 <p>Para información más completa de lo que hacen cada uno de estos
1328 guiones dh_* , y qué otras opciones tienen, por favor lee sus
1329 páginas de manual respectivas. Hay otros guiones con la misma
1330 nomenclatura (dh_*) que no se han mencionado aquí, pero pueden serte
1331 útiles. Si los necesitas, lee la documentación de debhelper.
1332
1333 <p>La sección binary-arch es en una de las que deberías comentar o eliminar
1334 las líneas que llamen a funciones que no necesites. Para gentoo,
1335 comentaré de ejemplos, cron, init, man e info,
1336 simplemente porque gentoo no las necesita.
1337 Tan sólo, en la línea 68, reemplazaré «ChangeLog» con «FIXES»,
1338 porque este es el nombre del fichero de cambios de las fuentes.
1339
1340 <p>Las últimas dos líneas (junto con otras que no se explican) son
1341 cosas más o menos necesarias, sobre las que puedes leer en el manual
1342 de make, y las normas. Por ahora no es importante que sepas nada de
1343 ellas.
1344
1345 <chapt id="dother">Otros ficheros en el directorio debian/.
1346
1347 <p>Verás que existen otros ficheros en el subdirectorio debian/,
1348 muchas de los cuales tendrán el sufijo «.ex», que indica que son
1349 ejemplos. Echale un vistazo a todos. Si lo deseas o necesitas usar
1350 alguna de estas características:
1351
1352 <list>
1353 <item>revisa todo la documentación relacionada (sugerencia: las normas de Debian),
1354 <item>si es necesario, modifica los ficheros para ajustarlos a tus necesidades,
1355 <item>renómbralos para eliminar el sufijo «ex.», si lo tiene,
1356 <item>renómbralos para eliminar el prefijo «.ex», si lo tiene,
1357 <item>modifica el fichero «rules» si fuera necesario.
1358 </list>
1359
1360 <p>Algunos de los ficheros que se usan habitualmente se detallan en
1361 las secciones que siguen.
1362
1363 <sect id="readme">README.debian (LÉEME.debian, N. del T.)
1364
1365 <p>Cualquier detalle extra o discrepancias entre el programa
1366 original y su versión debianizada debería documentarse aquí.
1367
1368 <p>dh_make crea una por omisión, y éste es su aspecto:
1369
1370 <p><example>
1371 gentoo for Debian
1372 -----------------
1373
1374 &lt;possible notes regarding this package - if none, delete this file&gt;
1375
1376 -- Josip Rodin &lt;joy-mg@debian.org&gt;, Wed, 11 Nov 1998 21:02:14 +0100
1377 </example>
1378
1379 <p>Dado que no tenemos que poner nada aquí - está permitido
1380 borrarlo.
1381
1382 <sect id="conffiles">conffiles
1383
1384 <p>Una de las cosas más molestas de los programas es cuando pasas
1385 mucho tiempo y esfuerzo adaptando un programa y una actualización
1386 destroza todos tus cambios. Debian resuelve este problema marcando
1387 los ficheros de configuración de forma que cuando actualizas un
1388 paquete se te pregunta si deseas mantener la nueva
1389 configuración o no.
1390
1391 <p>Eso se consigue poniendo la ruta completa a cada
1392 fichero de configuración (se encuentran generalmente en /etc), una
1393 por línea, en un fichero llamado «conffiles» (abreviatura de ficheros de confguración, N. del T.).
1394 Gentoo tiene un fichero de configuración, /etc/gentoorc, y
1395 meteremos éste en el fichero <tt/conffiles/.
1396
1397 <p>En el caso de que tu programa utilice ficheros de configuración pero también los
1398 reescriba él mismo es mejor no marcarlos como «conffiles». Si lo haces,
1399 dpkg informará a los usuarios que verifiquen los cambios de estos ficheros
1400 cada vez que lo actualicen.
1401
1402 <p>También deberías considerar no marcar el fichero como un conffile
1403 si el programa que estás empaquetando requiere que cada usuario
1404 modifique su fichero de configuración para poder trabajar.
1405
1406 <p>Puedes tomar ejemplos de ficheros de configuración de los
1407 guiones ya existentes de desarrolladores, para más información
1408 consulta <ref id="maintscripts">.
1409
1410 <p>Puedes eliminar el fichero
1411 <tt/conffiles/ del directorio debian/ si tu programa no tiene «conffiles».
1412
1413 <sect id="crond">cron.d.ex
1414
1415 <p>Si tu paquete requiere tareas periódicas para funcionar adecuadamente,
1416 puedes usar este fichero como patrón.
1417
1418 <p>Ten en cuenta que ésto no incluye la rotación de archivos de registro,
1419 para hacer eso consulta
1420 <manref name="dh_installlogrotate" section="1"> y
1421 <manref name="logrotate" section="8">.
1422
1423 <p>Elimina el fichero si el paquete no utiliza dichas tareas.
1424
1425 <sect id="dirs">dirs
1426
1427 <p>Este fichero especifica los directorios que se necesitan pero que
1428 por alguna razón no se crean en un proceso de instalación normal
1429 («make install»).
1430
1431 <p>Por omisión, tiene este aspecto:
1432 <p><example>
1433 1 usr/bin
1434 2 usr/sbin
1435 </example>
1436
1437 <p>Observa que la barra precedente no está incluida. Normalmente lo
1438 cambiaríamos a algo así:
1439 <p><example>
1440 1 usr/bin
1441 2 usr/man/man1
1442 </example>
1443
1444 pero estos directorios ya se crean en el Makefile, así que no
1445 necesitaremos este fichero y lo podremos borrar.
1446
1447 <sect id="docs">docs
1448
1449 <p>Este fichero especifica los nombres de los ficheros
1450 de documentación que dh_installdocs instalará en el directorio
1451 temporal.
1452
1453 <p>Por omisión, se incluirán todos los ficheros existentes en los directorios
1454 de más alto nivel del código que se llamen «BUGS», «README*», «TODO» etc.
1455
1456 <p>También incluiré algunos otros para gentoo:
1457
1458 <p><example>
1459 BUGS
1460 CONFIG-CHANGES
1461 CREDITS
1462 ONEWS
1463 README
1464 README.gtkrc
1465 TODO
1466 </example>
1467
1468 <p>También podemos eliminar este fichero y en su lugar listar
1469 estos ficheros en la línea de órdenes de
1470 <tt/dh_installdocs/ en el fichero <tt/rules/, de esta forma:
1471
1472 <p><example>
1473 dh_installdocs BUGS CONFIG-CHANGES CREDITS ONEWS README \
1474 README.gtkrc TODO
1475 </example>
1476
1477 <p>Es posible que no tengas ninguno de estos ficheros en las fuentes
1478 de tu paquete. Puedes eliminar este fichero si este es tú caso. Pero
1479 no elimines la llamada a <tt/dh_installdocs/ desde el fichero
1480 <tt/rules/ porque también se usa para instalar el fichero
1481 <tt/copyright/ entre otras cosas.
1482
1483 <sect id="emacsen">emacsen-*.ex
1484
1485 <p>Si tu paquete proporciona ficheros Emacs que pueden ser
1486 compilados a bytes en el momento de la instalación, puede usar estos
1487 ficheros.
1488
1489 <p><manref name="dh_installemacsen" section="1"> los instala en el
1490 directorio temporal, así que no olvides descomentar esta línea en el
1491 fichero <tt/rules/ si los usas.
1492
1493 <p>Elimínalos si no los necesitas.
1494
1495 <sect id="initd">init.d.ex
1496
1497 <p>Si tu paquete es un demonio que necesita ejecutarse en el arranque
1498 del sistema, obviamente has desatendido mi recomendación inicial, ¿o no?
1499 :-)
1500
1501 <p>Este fichero es prácticamente un esqueleto genérico para un fichero de
1502 guiones en <file>/etc/init.d/</file>, así que probablemente tendrás que
1503 editarlo y mucho.
1504 <manref name="dh_installinit" section="1"> lo instalará en el directorio temporal.
1505
1506 <p>Elimina el fichero si no lo necesitas.
1507
1508 <sect id="manpage">manpage.1.ex, manpage.sgml.es
1509
1510 <p>El programa debería tener una página de manual. Cada uno de
1511 estos ficheros es una plantilla que puedes rellenar en el caso de que
1512 no tengas una.
1513
1514 <p>Las páginas de manual se escriben normalmente con <manref name="nroff" section="1">.
1515 El ejemplo <tt/manpage.1.ex/ está también escrito con nroff.
1516 Consulta la página de manual <manref name="man" section="7"> para una breve
1517 descripción de como editar el fichero.
1518
1519 <p>Por otro lado, puede que prefieras escribir usando SGML en lugar de
1520 nroff. En este caso, puedes usar la plantilla <tt/manpage.sgml.ex/.
1521 Si haces esto, tendrás que:
1522 <list>
1523 <item>instalar el paquete <package/docbook-to-man/
1524 <item>añadir <tt/docbook-to-man/ a la línea de <tt/Build-Depends/
1525 en el fichero de <tt/control/
1526 <item>eliminar el comentario de la llamada a docbook-to-man en
1527 la regla «build» de tu fichero <tt/rules/
1528 </list>
1529
1530 <p>¡Y recuerda renombrar el fichero a algo como <tt/gentoo.sgml/!
1531
1532 <p>La página final del nombre debería incluir el nombre del programa
1533 que está documentando, asi que lo renombraremos de "manpage" a "gentoo".
1534 El nombre del fichero incluye también ".1" como primer sufijo,
1535 lo que significa que es una página de manual para una programa de usuario.
1536 Asegurate de verificar que esa sección es la correcta.
1537 Aquí tienes una pequeña lista de las secciones de las páginas de manual.
1538
1539 <p><example>
1540 Sección | Descripción | Notas
1541 1 Ordenes de Usuario Programas o guiones ejecutables.
1542 2 Llamadas al Sistema Funciones que ofrece el núcleo.
1543 3 Llamadas a Bibliotecas Funciones dadas por las bibliotecas del sistema.
1544 4 Ficheros Especiales Generalmente se encuentran en /dev.
1545 5 Formatos de Fichero Por ejemplo, el formato del /etc/passwd.
1546 6 Juegos U otros programas frívolos.
1547 7 Paquetes de Macros Como las macros de man.
1548 8 Administración del Sist. Programas que sólo suele ejecutar el superusuario.
1549 9 Rutinas del Núcleo Llamadas al sistema no estándar.
1550 </example>
1551
1552 <p>Así que la página de manual de gentoo debería llamarse <tt/gentoo.1/.
1553 No había una página de manual gentoo.1 en el paquete fuente
1554 asi que la escribí usando la información del ejemplo y de los documentos
1555 del programador original.
1556
1557 <sect id="menu">menu.ex
1558
1559 <p>Los usuarios de X Windows suelen tener un gestor de ventanas con menús
1560 que pueden adaptarse para lanzar programas. Si tienen instalado el
1561 paquete <package/menu/ de Debian, se creará un conjunto de menús para cada
1562 programa del sistema para ellos.
1563
1564 <p>Éste es el fichero <tt/menu.ex/ que dh_make crea por omisión:
1565
1566 <p><example>
1567 ?package(gentoo):needs="X11|text|vc|wm" section="Apps/lea-manual-menu"\
1568 title="gentoo" command="/usr/bin/gentoo"
1569 </example>
1570
1571 <p>El primer campo tras la coma («needs») son las necesidades, y especifica
1572 qué tipo de interfaz necesita el programa. Cambia ésta a una de las
1573 alternativas que se listan, como por ejemplo «text» o «X11».
1574
1575 <p>Lo siguiente («section») es la sección donde deberían aparecer la entrada del menú y
1576 del submenú. La lista actual de secciones está en:
1577 <file>/usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1</file>
1578
1579 <p>El campo «title» es el nombre del programa. Puedes comenzar este
1580 en mayúsculas si lo quieres, pero hazlo lo más corto que puedas.
1581
1582 <p>Finalmente, el campo «command» es la orden que ejecuta el programa.
1583
1584 <p>Ahora cambiaremos la entrada del menú por ésta:
1585
1586 <p><example>
1587 ?package(gentoo): needs="X11" section="Apps/Tools" title="Gentoo" command="gentoo"
1588 </example>
1589
1590 <p>También puedes añadir otros campos como son «longtitle» (título largo), «icon» (icono), «hints» (pistas), etc.
1591 Para más información consulta <manref name="menufile" section="5">,
1592 <manref name="update-menus" section="1">
1593 y <file>/usr/share/doc/debian-policy/menu-policy.html/</file>.
1594
1595
1596 <sect id="watch">watch.ex
1597
1598 <p>Este fichero se usa para configurar los programas <manref
1599 name="uscan" section="1"> y <manref name="uupdate" section="1">
1600 (en el paquete <package/devscripts/), que se usan para vigilar
1601 el servidor de donde obtuviste las fuentes originales.
1602
1603 <p>Esto es lo que he puesto yo:
1604
1605 <p><example>
1606 # watch control file for uscan
1607 # Site Directory Pattern Version Script
1608 ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate
1609 </example>
1610
1611 <p>Pista: conéctate a Internet, e intenta ejecutar el programa
1612 «uscan» en el directorio donde has creado el fichero. Consulta la página
1613 de manual para más detalles.
1614
1615 <sect id="doc-base">ex.package.doc-base
1616
1617 <p>Si tu paquete tiene documentación aparte de las páginas de manual
1618 y documentos «info», deberías usar el fichero «<package/doc-base/»
1619 para registrarla, así el usuario puede encontrarlos con
1620 <manref name="dhelp" section="1">,
1621 <manref name="dwww" section="1"> o <manref name="doccentral" section="1">.
1622
1623 <p>Esto incluye generalmente ficheros HTML, PS y PDF que se instalen en
1624 <file>/usr/share/doc/nombre_de_paquete/</file>.
1625
1626 <p>Así es como el fichero doc-base de gentoo <tt>gentoo.doc-base</tt> debe
1627 ser:
1628
1629 <p><example>
1630 Document: gentoo
1631 Title: Gentoo Manual
1632 Author: Emil Brink
1633 Abstract: This manual describes what Gentoo is, and how it can be used.
1634 Section: Apps/Tools
1635
1636 Format: HTML
1637 Index: /usr/share/doc/gentoo/html/index.html
1638 Files: /usr/share/doc/gentoo/html/*.html
1639 </example>
1640
1641 <p>Para información sobre el formato del fichero revisa <manref
1642 name="install-docs" section="8"> y el manual de <package/doc-base/ en
1643 <file>/usr/share/doc/doc-base/doc-base.html/index.html</file>.
1644
1645 <p>Encontrará más detalles de la instalación de documentación
1646 adicional en <ref id="destdir">.
1647
1648 <sect id="maintscripts">postinst.ex, preinst.ex, postrm.ex y prerm.ex
1649
1650 <p>Estos ficheros se llaman guiones del desarrollador («maintainer
1651 scripts», N. del T.), y son guiones que se colocan en el área de
1652 control del paquete y que <package/dpkg/ ejecuta cuando tu paquete
1653 se instala, se actualiza o se elimina.
1654
1655 <p>Por ahora, deberías intentar evitar editar manualmente estos
1656 guiones si puedes porque suelen hacerse muy complejos. Para más
1657 información lee el manual de normas, capítulo 6, y echa un
1658 vistazo a los ejemplos dados por dh_make.
1659
1660
1661 <chapt id="build">Construir el paquete
1662
1663 <p>Deberíamos estar preparados para construir el paquete.
1664
1665 <sect id="completebuild">Reconstrucción completa
1666
1667 <p>Entra en el directorio principal del programa y ejecuta la
1668 siguiente orden:
1669
1670 <p><example>
1671 dpkg-buildpackage -rfakeroot
1672 </example>
1673
1674 <p>Esto lo hará todo por tí:
1675
1676 <list>
1677 <item>limpia el árbol del código (debian/rules clean), usando <prgn/fakeroot/
1678 <item>construye el paquete de código (dpkg-source -b)
1679 <item>construye el programa (debian/rules build)
1680 <item>construye el paquete binario (debian/rules binary), usando <prgn/fakeroot/
1681 <item>firma el fichero fuente <tt/.dsc/, usando <prgn/gnupg/
1682 <item>crea y firma el fichero de subida <tt/.changes/, usando
1683 <prgn/dpkg-genchanges/ y <prgn/gnupg/
1684 </list>
1685
1686 <p>Lo único que se te pedirá es que escribas tu contraseña secreta
1687 de la clave GPG, dos veces.
1688
1689 <p>Después de hacer todo esto, verás las siguientes líneas en el directorio
1690 encima del que está (<file>~/gentoo/</file>):
1691
1692 <p><list>
1693 <item><em>gentoo_0.9.12.orig.tar.gz</em>
1694 <p>Este es el código fuente original comprimido, simplemente se ha renombrado
1695 para seguir los estándares de Debian. Nótese que ha sido creado usando
1696 la opción «-f» de <prgn/dh_make/ cuando lo ejecutamos en el inicio.
1697
1698 <item><em>gentoo_0.9.12-1.dsc</em>
1699 <p>Este es un sumario de los contenidos del código fuente. Este
1700 fichero se genera a partir del fichero de «control»
1701 y se usa cuando se descomprimen las fuentes con <manref
1702 name="dpkg-source" section="1">. Este fichero está firmado con GPG
1703 de forma que cualquiera pueda estar seguro de que es realmente suyo.
1704
1705 <item><em>gentoo_0.9.12-1.diff.gz</em>
1706 <p>Este fichero comprimido contiene todos y cada uno de los cambios
1707 que hizo al código fuente original, en un formato conocido como «diff
1708 unificado». El programa que lo hace y lo usa es <manref name="dpkg-source"
1709 section="1">. Precaución: si no renombras el archivo comprimido original
1710 nombre_de_paquete_versión.orig.tar.gz ¡<prgn/dpkg-source/
1711 fallará al generar el fichero .diff.gz!
1712
1713 <p>Si alguien quiere volver a crear tu paquete desde cero, puede hacerlo
1714 fácilmente usando los tres ficheros de arriba. El proceso de extracción
1715 es trivial: sólo se debe copiar los tres ficheros en algún lado y ejecutar
1716 <tt>dpkg-source -x gentoo_0.9.12-1.dsc</tt>.
1717
1718 <item><em>gentoo_0.9.12-1_i386.deb</em>
1719 <p>Este es el paquete binario completo. Puedes usar <prgn/dpkg/
1720 para instalar o eliminar tanto este paquete como cualquier otro.
1721
1722 <item><em>gentoo_0.9.12-1_i386.changes</em>
1723 <p>Este fichero describe todos los cambios hechos en la revisión
1724 actual del paquete, y se usa por los programas de gestión del
1725 archivo FTP para instalar los paquetes binarios y fuentes en él. Se
1726 genera parcialmente a partir del fichero «changelog» y el fichero «.dsc».
1727 Este fichero está firmado con GPG, de forma que
1728 cualquiera puede estar aún más seguro de que es realmente tuyo.
1729
1730 <p>Mientras sigues trabajando en el paquete, éste cambiará su
1731 comportamiento y se le añadirán nuevas funciones. Las personas que
1732 descarguen tu paquete pueden leer este fichero y ver qué ha
1733 cambiado. Los programas de mantenimiento del archivo de Debian, también
1734 enviarán el contenido de este fichero a la lista de correo
1735 debian-devel-changes.
1736 </list>
1737
1738 <p>Las largas listas de números en los ficheros .dsc y .changes
1739 son las sumas MD5 para los ficheros.
1740 Las personas que descarguen estos ficheros pueden
1741 comprobarlos con <manref name="md5sum" section="1"> y si los números
1742 no coinciden, sabrán que el fichero está corrupto o ha sido
1743 modificado.
1744
1745
1746 <sect id="quickrebuild">Reconstrucción rápida
1747
1748 <p>Con un paquete grande, puede que no quieras recompilar desde cero
1749 cada vez que tocas un detalle en el fichero <file>debian/rules</file>.
1750 Para propósitos de prueba, puedes hacer un fichero .deb sin necesidad de
1751 recompilar las fuentes originales de esta forma:
1752
1753 <p><example>
1754 fakeroot debian/rules binary
1755 </example>
1756
1757
1758 <p>Una vez que has terminado la puesta a punto, recuerda reconstruir
1759 el paquete siguiendo el procedimiento adecuado que está
1760 arriba. Puede que no seas capaz de enviar correctamente el paquete
1761 si intentas enviar los archivos .deb construidos de esta forma.
1762
1763 <!-- JFS: REVIEW -->
1764 <sect id="debuild">La orden <prgn>debuild</prgn>
1765
1766 <p>Puedes automatizar aún más el proceso de construcción de paquetes
1767 con la orden <prgn>debuild</prgn>. Veáse <manref name="debuild"
1768 section="1">.
1769
1770 <p>La personalización de la orden debuild puede hacerse a través de
1771 <file>/etc/devscripts.conf</file> o <file>~/.devscripts</file>.
1772 Te sugiero al menos los siguientes valores:
1773
1774 <p><example>
1775 DEBSIGN_KEYID="Tu_ID_clave_GPG"
1776 DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -ICVS -I.svn"
1777 </example>
1778 Con estos valores, puedes construir paquetes siempre con tu clave
1779 GPG y evitar incluir componentes no deseados. (Esto también es bueno
1780 para patrocinar). Por ejemplo, limpiar el código y reconstruir el
1781 paquete desde una cuenta de usuario es tan simple como:
1782
1783 <p><example>
1784 debuild clean
1785 debuild
1786 </example>
1787
1788 <!-- JFS: REVIEW -->
1789 <sect id="dpatch">Los sistemas <prgn>dpatch</prgn> y <prgn>quilt</prgn>
1790
1791 <p>El uso de las órdenes <prgn>dh_make</prgn> y
1792 <prgn>dpkg-buildpackage</prgn> creará un gran fichero
1793 <file>diff.gz</file> que contendrá los archivos de mantenimiento del
1794 paquete en <file>debian/</file> así como los parches de los ficheros
1795 fuente. Este tipo de paquetes es un poco engorroso de inspeccionar y
1796 entender para cada una de las modificaciones de código
1797 posteriores. Esto no es muy bueno.
1798 <footnote>
1799 Si no eres todavía un Desarrollador de Debian y le pides a tu
1800 patrocinador que te suba un paquete tras revisarlo, deberías hacer
1801 el paquete lo más fácil posible para que él pueda revisarlo.
1802 </footnote>
1803
1804 <p>Se han propuesto y se utilizan distintos métodos para la gestión
1805 de conjuntos de parches en Debian. Los sistemas <prgn>dpatch</prgn> y
1806 <prgn>quilt</prgn> son los dos más simples de todos los propuestos.
1807 Otros son dbs, cdbs, etc.
1808
1809 <p> Un paquete que haya sido empaquetado correctamente con el
1810 sistema <prgn>dpatch</prgn> o <prgn>quilt</prgn> tiene las
1811 modificaciones al código fuente claramente documentadas como un
1812 conjunto de ficheros parche de tipo «-p1» en
1813 <file>debian/patches/</file> y el árbol de código permanece más
1814 alládel directorio <file>debian/</file>. Si estás pidiendo a un
1815 patrocinador que suba tu paquete, este clara separación y
1816 documentación de los cambios son muy importantes para acelerar la
1817 revisión del paquete por parte del patrocinador. El modo de empleo
1818 de <prgn>dpatch</prgn> y <prgn>quilt</prgn> se explica en <manref
1819 section="1" name="dpatch">, <manref section="1"
1820 name="dpatch-edit-patch"> y <manref section="1" name="quilt">.
1821 Ambos programas ofrecen ficheros que se pueden incluir en
1822 <file>debian/rules</file>:
1823 <file>/usr/share/dpatch/dpatch.make</file> y
1824 <file>/usr/share/quilt/quilt.make</file>.
1825
1826 <p>Cuando alguien (incluyéndote a ti) proporciona un parche para
1827 las fuentes, modificar el paquete con es muy sencillo:
1828
1829 <list compact>
1830 <item>Edita el parche para crear un parche -p1 sobre el árbol el
1831 código fuente.
1832 <item>En el caso de <prgn>dpatch</prgn>, añade una cabecera
1833 empleando la orden <tt>dpatch patch-template</tt>.
1834 <item>Pon ese fichero en <file>debian/patches</file>
1835 <item>Añade el nombre de fichero de este parche a
1836 <file>debian/patches/00list</file> (en <prgn>dpatch</prgn>) o
1837 <file>debian/patches/series</file> (en <prgn>quilt</prgn>).
1838 </list>
1839
1840 <p>Además, <prgn>dpatch</prgn> puede crear parches dependientes de
1841 la arquitectura usando macros CPP.
1842
1843 <sect id="option-sa">Incluir <file>orig.tar.gz</file> para subir
1844
1845 <p>Cuando subes por primera vez un paquete al archivo, necesitas
1846 incluir las fuentes originales <file>orig.tar.gz</file>. Si la
1847 versión del paquete no es una revisión de Debian <tt>-0</tt> o
1848 <tt>-1</tt>, debes proporcionarle la opción «<tt>-sa</tt>» a la
1849 orden <prgn>dpkg-buildpackage</prgn>. Por otro lado, la opción
1850 «<tt>-sd</tt>» forzará la exclusión del código original
1851 <file>orig.tar.gz</file>.
1852
1853 <chapt id="checkit">Cómo comprobar tu paquete para encontrar fallos
1854
1855 <sect id="lintians">Los paquetes <package>lintian</package>
1856
1857 <p>Ejecuta <manref name="lintian" section="1"> sobre tu fichero de cambios .changes.
1858 Estos programas comprobarán muchos errores comunes al empaquetar. Las
1859 órdenes es:
1860
1861 <p><example>
1862 lintian -i gentoo_0.9.12-1_i386.changes
1863 </example>
1864
1865 <p>Por supuesto, cambia el nombre de fichero con el nombre del
1866 fichero de cambios generado por tu paquete. Si parece que hay
1867 algunos errores (líneas que comienzan por E:), lee la explicación
1868 (líneas N:), corrige errores, y reconstruye como se describe en <ref
1869 id="completebuild">. Las líneas que comienzan con W: son sólo avisos
1870 (warnings, N. del T.), así que afina el paquete o verifica que los
1871 avisos son falsos (y haz que lintian
1872 los acepte, consulta la documentación para más detalles).
1873
1874 <p>Observa que puedes construir el paquete con
1875 <prgn/dpkg-buildpackage/ y ejecutar <prgn/lintian/
1876 todo con sólo una orden si utilizas <manref name="debuild" section="1">.
1877
1878 <sect id="mc">La orden <prgn>mc</prgn>
1879
1880 <p>Puedes descomprimir el contenido del paquete <file>*.deb</file> con
1881 la orden <manref name="dpkg-deb" section="1">.
1882 Puedes listar el contenido de un paquete Debian con
1883 <manref name="debc" section="1">.
1884
1885 <p>Este proceso puede ser muy intuitivo si empleamos un gestor de
1886 ficheros como <manref name="mc" section="1">, que permite visionar
1887 tanto el contenido del paquete <file>*.deb</file>, como el de los
1888 ficheros <file>*.diff.gz</file> y <file>*.tar.gz</file>.
1889
1890 <p>Vigila que no haya ficheros innecesarios extra o de tamaño cero,
1891 tanto en el binario como en el paquete fuente. A veces, hay cosas
1892 que no se limpiaron adecuadamente, debes ajustar tu fichero «rules»
1893 para arreglar esto.
1894
1895 <p>Pista: «<tt>zgrep ^+++ ../gentoo_0.9.12-1.diff.gz</tt>» te dará
1896 una lista de tus cambios o contribuciones a las fuentes, y
1897 «<tt>dpkg-deb -c gentoo_0.9.12-1_i386.deb</tt>» o «<tt>debc
1898 gentoo_0.9.12-1_i386.changes</tt>» listará los ficheros en el
1899 paquete binario.
1900
1901 <sect id="debdiff">La orden <prgn>debdiff</prgn>
1902
1903 <p>Puedes comparar la lista de ficheros de dos paquetes binarios de
1904 Debian con la orden <manref name="debdiff" section="1">. Este
1905 programa es útil para verificar que no hay ficheros que se hayan
1906 cambiado de sitio o eliminado por error, y que no se ha realizado
1907 ningún otro cambio no deseado al actualizar el paquete. Puedes
1908 comprobar un grupo de ficheros <file>*.deb</file> simplemente con
1909 «<tt>debdiff paquete-viejo.change paquete-nuevo.change</tt>».
1910
1911 <!-- JFS: REVIEW -->
1912 <sect id="interdiff">La orden <prgn>interdiff</prgn>
1913
1914 <p>Puedes comparar dos ficheros <file>diff.gz</file> con la orden
1915 <manref name="interdiff" section="1">. Esto es muy útil para
1916 verificar que no se han realizado cambios inadvertidos por el
1917 mantenedor al actualizar el paquete. Ejecuta «<tt>interdiff -z
1918 paquete-viejo.diff.gz paquete-nuevo.diff.gz</tt>».
1919
1920 <sect id="debi">La orden <prgn>debi</prgn>
1921
1922 <p>Instala el paquete para probarlo tú mismo, por ejemplo, usando la
1923 orden <manref name="debi" section="1"> como superusuario. Intenta
1924 instalarlo y ejecutarlo en otras máquinas distintas de la tuya, y
1925 presta atención para detectar errores o avisos tanto en la instalación
1926 como en la ejecución del programa.
1927
1928 <sect id="pbuilder">El paquete <package>pbuilder</package>
1929
1930 <p>El paquete <package>pbuilder</package> es muy útil para conseguir
1931 un entorno limpio (chroot) donde verificar las dependencias. Esto
1932 asegura una construcción limpia desde el código en los programas que
1933 realizan la compilación automática de paquetes para diferentes
1934 arquitecturas y evita fallos serios del tipo FTBFS (Fallo al
1935 construir desde la fuente o «Fail to Build From Source»), que son
1936 siempre del tipo RC (fallos criticos o «release critical»). Para
1937 más informacon del paquete debian <package/auto-builder/ véase <url
1938 id="&buildd-home;">.
1939
1940 <p>El uso más básico del paquete <package>pbuilder</package> es la
1941 ejecución directa de la orden <prgn>pbuilder</prgn> como
1942 administrador. Por ejemplo, puedes construir un paquete si escribes
1943 las siguientes órdenes en el directorio donde se encuentran los
1944 ficheros <file>.orig.tar.gz</file>, <file>.diff.gz</file> y
1945 <file>.dsc</file>.
1946
1947 <example>
1948 root # pbuilder create # si se ejecuta por segunda vez, pbuilder update
1949 root # pbuilder build foo.dsc
1950 </example>
1951
1952 Los paquetes recién construidos se pueden encontrar en
1953 <file>/var/cache/pbuilder/result/</file> y el propietario será el
1954 usuario administrador.
1955
1956 <p>La orden <prgn>pdebuild</prgn> te ayuda a usar las funciones del
1957 paquete <package>pbuilder</package> como usuario sin permisos de
1958 administración. Desde el directorio raíz del código fuente, con el
1959 archivo <file>orig.tar.gz</file> en el directorio padre, escribe las
1960 siguientes órdenes:
1961
1962 <example>
1963 $ sudo pbuilder create # si se ejecuta por segunda vez, sudo pbuilder update
1964 $ pdebuild
1965 </example>
1966
1967 Los paquetes construidos se pueden encontrar en
1968 <file>/var/cache/pbuilder/result/</file> y el propietario no será el
1969 administrador.
1970
1971 <footnote>
1972 Actualmente, te sugiero configurar el sistema dando al directorio
1973 <file>/var/cache/pbuilder/result/</file> permisos de escritura a los
1974 usuarios, y editando <file>~/.pbuilderrc</file> o
1975 <file>/etc/pbuilderrc</file> para incluir:
1976
1977 <example>
1978 AUTO_DEBSIGN=yes
1979 </example>
1980
1981 Esto te permitirá firmar los paquetes generados con la clave secreta
1982 GPG que tienes en <file>~/.gnupg/</file>. Puesto que el paquete
1983 <package>pbuilder</package> está aun en desarrollo, tendrás que
1984 comprobar como funciona la configuración consultando la última
1985 documentación oficial.
1986
1987 </footnote>
1988
1989 <p>Si deseas añadir fuentes de apt para que las utilice el paquete
1990 <package>pbuilder</package>, configura <tt>OTHERMIRROR</tt> en
1991 <file>~/.pbuilderrc</file> o <file>/etc/pbuilderrc</file> y ejecuta
1992 (para sarge):
1993
1994 <example>
1995 $ sudo pbuilder update --distribution sarge --override-config
1996 </example>
1997
1998 Es necesario el uso de <tt>--override-config</tt> para actualizar las
1999 fuentes de apt dentro del entorno chroot.
2000
2001 <p>
2002 Véase <url id="&pbuilder-home;">,
2003 <manref section="1" name="pdebuild">,
2004 <manref section="5" name="pbuilderrc">, y
2005 <manref section="8" name="pbuilder"> .
2006
2007 <chapt id="upload">Enviar el paquete
2008
2009 <p>Ahora que has probado tu nuevo paquete en profundidad, estarás
2010 preparado para comenzar el proceso de nuevo desarrollador de Debian
2011 tal y como se describe en:
2012 <url id="http://www.debian.org/devel/join/newmaint">
2013
2014 <sect id="upload-debian">Enviar al archivo de Debian
2015
2016 <p>Tendrás subir el paquete al archivo de Debian una vez que llegues
2017 a ser un desarrollador oficial. Puedes hacer esto manualmente,
2018 pero es más fácil hacerlo con las herramientas automáticas ya disponibles
2019 como
2020 <manref name="dupload" section="1"> o <manref name="dput" section="1">.
2021 A continuación describiremos como hacerlo con <prgn/dupload/.
2022
2023 <p>En primer lugar, tienes que crear un fichero de configuración de dupload.
2024 Puedes hacerlo editando el fichero general del sistema <file>/etc/dupload.conf</file>,
2025 o creando tu propio fichero <file>~/.dupload.conf</file> con lo que tu quieras
2026 cambiar.
2027 Pon algo como esto en el fichero:
2028
2029 <p><example>
2030 package config;
2031
2032 $default_host = "anonymous-ftp-master";
2033
2034 $cfg{'anonymous-ftp-master'} = {
2035 fqdn => "ftp-master.debian.org",
2036 method => "ftp",
2037 incoming => "/pub/UploadQueue/",
2038 # files pass on to dinstall on ftp-master which sends emails itself
2039 dinstall_runs => 1,
2040 };
2041
2042 1;
2043 </example>
2044
2045 <p>Por supuesto, cambia el nombre por el tuyo y lee
2046 la página de manual <manref name="dupload.conf" section="5"> para
2047 comprender qué significa cada una de estas opciones.
2048
2049 <p>La opción $default_host es la más problemática, determina cual de las
2050 colas de envios se usará por defecto. "anonymous-ftp-master" es la primaria,
2051 pero es posible que quieras usar otra más rápida.
2052 Para más información sobre las colas de envío, consulta la Referencia del
2053 desarrollador, en concreto la sección
2054 «Uploading a package», en
2055 <file>&uploading;</file>
2056
2057 <p>Ahora conecta con tu proveedor de Internet, y ejecuta la
2058 orden:
2059
2060 <p><example>
2061 dupload gentoo_0.9.12-1_i386.changes
2062 </example>
2063
2064 <p><prgn/dupload/ comprueba que las sumas md5 coinciden con aquellas en el
2065 fichero .changes, y te avisará de rehacer el paquete como se
2066 describe en <ref id="completebuild"> para poder enviarlo correctamente.
2067
2068 <p>Si encuentras algún problema con la subida del paquete a <url
2069 id="&ftp-uploadqueue;">, puedes arreglarlo subiendo manualmente a
2070 <url id="&ftp-uploadqueue;"> a través de <prgn>ftp</prgn> un fichero
2071 «<file>*.commands</file>» firmado con gnupg.
2072
2073 <footnote>
2074 Véase <url id="&ftp-command;">. Como alternativa, puedes usar la orden
2075 <prgn>dcut</prgn> de el paquete <package>dput</package>.
2076 </footnote>.
2077
2078 Por ejemplo, usando «<file>hello.commands</file>»:
2079 <example>
2080 -----BEGIN PGP SIGNED MESSAGE-----
2081
2082 Uploader: Roman Hodek &lt;Roman.Hodek@informatik.uni-erlangen.de&gt;
2083 Commands:
2084 rm hello_1.0-1_i386.deb
2085 mv hello_1.0-1.dsx hello_1.0-1.dsc
2086
2087 -----BEGIN PGP SIGNATURE-----
2088 Version: 2.6.3ia
2089
2090 iQCVAwUBNFiQSXVhJ0HiWnvJAQG58AP+IDJVeSWmDvzMUphScg1EK0mvChgnuD7h
2091 BRiVQubXkB2DphLJW5UUSRnjw1iuFcYwH/lFpNpl7XP95LkLX3iFza9qItw4k2/q
2092 tvylZkmIA9jxCyv/YB6zZCbHmbvUnL473eLRoxlnYZd3JFaCZMJ86B0Ph4GFNPAf
2093 Z4jxNrgh7Bc=
2094 =pH94
2095 -----END PGP SIGNATURE-----
2096 </example>
2097
2098 <sect id="upload-private">Enviar a un archivo privado
2099
2100 <p>Puedes crear un repositorio personal de paquetes en
2101 <tt>URL="http://people.debian.org/~<var>nombre_de_cuenta</var>"</tt>
2102 (si eres desarrollador oficial) con una simple llamada a <tt>dupload
2103 -t <var>nombre_de_objetivo</var></tt>. Para hacerlo deberías añadir
2104 lo siguiente al fichero «<file>/etc/dupload.conf</file>»:
2105
2106 <example>
2107 # Cuenta de desarrollador
2108 $cfg{'<var>nombre_de_objetivo</var>'} = {
2109 fqdn =&gt; "people.debian.org",
2110 method =&gt; "scpb",
2111 incoming =&gt; "/home/<var>nombre_de_cuenta</var>/public_html/package/",
2112 # No necesitas anunciarlo
2113 dinstall_runs =&gt; 1,
2114 };
2115 $cfg{'<var>nombre_de_objetivo</var>'}{preupload}{'changes'} = "
2116 echo 'mkdir -p public_html/package' | ssh people.debian.org 2&gt;/dev/null ;
2117 echo '¡Directorio de paquetes creado!'";
2118
2119 $cfg{'<var>nombre_de_objetivo</var>'}{postupload}{'changes'} = "
2120 echo 'cd public_html/package ;
2121 dpkg-scanpackages . /dev/null &gt;Packages || true ;
2122 dpkg-scansources . /dev/null &gt;Sources || true ;
2123 gzip -c Packages >Packages.gz ;
2124 gzip -c Sources &gt;Sources.gz ' | ssh people.debian.org 2&gt;/dev/null ;
2125 echo '¡Archivo de paquetes creado!'";
2126
2127 </example>
2128
2129 Aquí, el repositorio APT se construye mediante una simple ejecución
2130 remota con SSH. Los ficheros de sobreescritura que necesitan
2131 <prgn>dpkg-scanpackages</prgn> y <prgn>dpkg-scansources</prgn> se
2132 especifican como <file>/dev/null</file>.
2133
2134 Esta técnica la puede emplear alguien que no es desarrollador de
2135 Debian para almacenar sus paquetes en su página personal. También se
2136 pueden usar <prgn>apt-ftparchive</prgn> o otros programas para crear
2137 un repositorio APT.
2138
2139 <chapt id="update">Actualizar el paquete
2140
2141 <sect id="newrevision">Nueva revisión Debian del paquete
2142
2143 <p>Supongamos que se ha creado un informe de fallo en tu paquete
2144 con el número #54321, y que describe un problema que puedes solucionar.
2145 Para crear una nueva revisión del paquete, necesitas:
2146
2147 <list>
2148 <item>Corregir, por supuesto, el problema en las fuentes del
2149 paquete.
2150
2151 <item>Añadir una nueva revisión en el fichero de cambios (changelog,
2152 N. del T.) de Debian, con «<tt>dch -i</tt>», o explícitamente con
2153 «<tt>dch -v &lt;versión&gt;-&lt;revisión&gt;</tt>» y entonces insertar los
2154 comentarios con tu editor favorito.
2155
2156 <p>Sugerencia: ¿Como obtener la fecha fácilmente en el formato requerido?
2157 Usa «<tt>822-date</tt>», o «<tt>date -R</tt>».
2158
2159 <item>Incluir una breve descripción del error y su solución
2160 en la entrada del fichero de cambios, seguido por: «Closes: #54321».
2161 De esta forma, el informe del error será automágicamente cerrado por los
2162 programas de gestión del archivo en el momento en que tu paquete se
2163 acepte en el archivo de Debian.
2164
2165 <item>Repite lo que hiciste en <ref id="completebuild">, <ref id="checkit">,
2166 y <ref id="upload">. La diferencia es que esta vez, las fuentes
2167 originales del archivo no se incluirán, dado que no han cambiado y
2168 ya existen en el archivo de Debian.
2169 </list>
2170
2171
2172 <sect id="newupstream">Nueva versión del programa fuente (básico)
2173
2174 <p>Ahora consideremos una situación diferente y algo más complicada:
2175 ha salido una versión nueva de las fuentes originales, y, por
2176 supuesto, deseas empaquetarla. Debes hacer lo siguiente:
2177
2178 <list>
2179 <item>Descarga las nuevas fuentes y pon el archivo tar (pongamos que
2180 se llama <file>gentoo-0.9.13.tar.gz</file>) un directorio por encima del
2181 antiguo árbol de fuentes (por ejemplo ~/gentoo/).
2182
2183 <item>Entra en el antiguo directorio de las fuentes y ejecuta:
2184
2185 <example>
2186 uupdate -u gentoo-0.9.13.tar.gz
2187 </example>
2188
2189 <p>Por supuesto, reemplaza este nombre de fichero con el nombre de
2190 las fuentes de tu programa. <manref name="uupdate" section="1">
2191 renombrará apropiadamente este fichero tar, intentará aplicar los
2192 cambios de tu fichero <file>.diff.gz</file> previo y actualizará el
2193 nuevo fichero <file>debian/changelog</file>.
2194
2195 <item>Cambia al directorio «<file>../gentoo-0.9.13</file>», el nuevo
2196 directorio fuente del paquete, y repite la operación que hiciste en
2197 <ref id="completebuild">, <ref id="checkit">, y <ref id="upload">.
2198 </list>
2199
2200 <p>Observa que si has puesto el fichero «<file>debian/watch</file>»
2201 como se describe en <ref id="watch">, puedes ejecutar <manref
2202 name="uscan" section="1"> para buscar automáticamente fuentes
2203 revisadas, descargarlas, y ejecutar <prgn/uupdate/
2204
2205 <sect id="newupstream-real">Nueva versión de las fuentes (realista)
2206
2207 <p>Cuando prepares paquetes para el archivo de Debian, debes
2208 comprobar los paquetes resultantes en detalle. A continuación,
2209 tienes un ejemplo más realista de este procedimiento.
2210
2211 <enumlist compact>
2212
2213 <item>Verificar los cambios en las fuentes.
2214
2215 <list compact>
2216
2217 <item>De las fuentes, lee los ficheros <file>changelog</file>,
2218 <file>NEWS</file>, y cualquier otra documentación que se haya
2219 publicado con la nueva versión.
2220
2221 <item>Ejecuta «<tt>diff -urN</tt>» entre las fuentes viejas y las
2222 nuevas para obtener una visión del alcance de los cambios, donde se
2223 ha trabajado más activamente (y por tanto donde podrían aparecer
2224 nuevas erratas), y también busca cualquier cosa que pudiera parecer
2225 sospechosa. </list>
2226
2227 <item>
2228 Porta el paquete Debian viejo a la nueva versión.
2229
2230 <list compact>
2231 <item>Descomprime el código fuente original y renombra la raíz del
2232 árbol de las fuentes como
2233 <file>&lt;nombrepaquete&gt;-&lt;versión_original&gt;/</file> y haz
2234 «<tt>cd</tt>» en este directorio.
2235
2236 <item>Copia el código fuente en el directorio padre y renombrarlo como
2237 <file>&lt;nombrepaquete&gt;_&lt;versión_original&gt;.orig.tar.gz</file> .
2238
2239 <item>Aplica el mismo tipo de modificación a el nuevo código que al viejo.
2240 Algunos posibles métodos son:
2241 <list compact>
2242 <item>orden «<tt>zcat
2243 <var>/path/to/</var>&lt;nombrepaquete&gt;_&lt;versión-vieja&gt;.diff.gz
2244 | patch -p1</tt>»,
2245 <item>orden «<prgn>uupdate</prgn>»,
2246 <item>orden «<tt>svn merge</tt>» si gestionas el código con un
2247 repositorio Subversion o,
2248 <item>simplemente copia el directorio <file>debian/</file> del árbol
2249 de código viejo si se empaquetó con <package>dpatch</package> o <package>quilt</package>.
2250 </list>
2251
2252 <item>Conserva las entradas viejas del fichero «changelog» (puede parecer
2253 obvio, pero se han dado casos...)
2254
2255 <item>La nueva versión del paquete es la versión original
2256 añadiéndole el número de revisión de Debian <tt>-1</tt>, por ejemplo,
2257 `<tt>0.9.13-1</tt>'.
2258
2259 <item>Añade una entrada en el fichero «changelog» para esta nueva
2260 versión al comienzo <file>debian/changelog</file> que ponga «New
2261 upstream release» (nueva versión original, N. del T.). Por ejemplo,
2262 «<tt>dch -v 0.9.13-1</tt>».
2263
2264 <item>Describe de forma resumida los cambios <em>en</em> la nueva
2265 versión del código fuente que arreglan fallos de los que ya se ha
2266 informado y cierra esos fallos en el fichero «changelog».
2267
2268 <item>Describe de forma resumida los cambios hechos <em>a</em> la nueva
2269 versión del código por el mantenedor para arreglar fallos de los que
2270 se ha informado y cierra esos fallos en el fichero «changelog».
2271
2272 <item>Si el parche/fusión no se aplicó limpiamente, inspecciona la
2273 situación para determinar qué ha fallado (la clave está en los
2274 ficheros <file>.rej</file>). A menudo el problema es que un parche
2275 que has aplicado a las fuentes se ha integrado en el código fuente
2276 original, y, por lo tanto, el parche ya no es necesario.
2277
2278 <item>Las actualizacioens de versión deberían ser silenciosas y no
2279 intrusivas (los usuarios sólo deberían advertir la actualización al
2280 descubrir que se han arreglado viejos fallos y porque se han
2281 introducido algunas nuevas características).
2282
2283 <footnote>
2284 Asegúrate de que tu paquete actualiza adecuadamente los ficheros de
2285 configuración con <prgn>postinst</prgn> etc, bien diseñados, para
2286 que ¡<strong>no</strong> se hagan cosas que el usuario no quiere!
2287 Estas son las mejoras que explican <strong>por qué</strong> la gente
2288 escoge Debian.
2289
2290 <p>Cuando la actualización es necesariamente intrusiva (por ejemplo,
2291 en la nueva versión se han repartido los ficheros de configuración
2292 en distintos directorios personales con estructuras totalmente
2293 diferentes), puedes considerar hacer que el paquete tome un valor
2294 seguro por omisión (por ejemplo, deshabilitando el servicio) y
2295 proporcionar la documentación necesaria (tal y como lo exigen las
2296 normas: en ficheros <file>README.Debian</file> y
2297 <file>NEWS.Debian</file>) como último recurso. Pero no te molestes
2298 en incluir una nota con debconf. </footnote>
2299
2300 <item>Si necesitas añadir plantillas eliminadas por alguna razón,
2301 puedes ejecutar <prgn>dh_make</prgn> otra vez en el mismo directorio
2302 ya «debianizado», con la opción <tt>-o</tt>. Una vez hecho esto
2303 edítalo como sea necesario.
2304
2305 <item>Deberías reconsiderar todos los cambios introducidos para
2306 Debian: elimina aquello que el autor original haya incorporado (de
2307 una forma u otra) y recuerda mantener aquellos que no hayan sido
2308 incorporados, a menos que haya una razón convincente para no incluirlos.
2309
2310 <item>Si se ha realizado algún cambio en el sistema de construcción
2311 (esperemos que lo supieras desde el primer paso), actualiza los
2312 ficheros <file>debian/rules</file> y las dependencias de
2313 construcción en <file>debian/control</file> si es necesario.
2314
2315 </list>
2316
2317 <item>Construye el nuevo paquete como se describe en <ref
2318 id="debuild"> o <ref id="pbuilder">. Es conveniente el uso de
2319 <package>pbuilder</package>.
2320
2321 <item>Comprueba que los paquetes nuevos se han construido correctamente.
2322
2323 <list compact>
2324
2325 <item>Ejecuta <ref id="checkit">.
2326
2327 <item>Ejecuta <ref id="upgrading">.
2328
2329 <item>Comprueba de nuevo si se ha arreglado alguno de los fallos que
2330 actualmente están abiertos en <url name="el sistema de seguimiento
2331 de fallos de Debian (BTS)" id="http://www.debian.org/Bugs/"> .
2332
2333 <item>Comprueba el contenido del fichero «.changes» para asegurarte
2334 de que lo estás enviando a la distribución correcta, que se cierran
2335 los fallos adecuadamente en el campo «Closes:», que los campos
2336 «Maintainer:» y «Changed-By:» coinciden, que el fichero se ha
2337 firmado con GPG, etc.
2338
2339 </list>
2340
2341 <item>Si realizaste algún cambio en el empaquetado durante el proceso,
2342 vuelve al segundo paso hasta que todo esté correcto.
2343
2344 <item>Si tu envío necesita que se patrocine, asegúrate de comentar
2345 cualquier opción especial que se requiera en la construcción del
2346 paquete (como «<tt>dpkg-buildpackage -sa -v ...</tt>») y de informar
2347 a tu patrocinador, así podrá construirlo correctamente.
2348
2349 <item>Si lo envías tú, ejecuta <ref id="upload">.
2350 </enumlist>
2351
2352 <sect id="orig-tar">El archivo <file>orig.tar.gz</file>
2353
2354 <p>Si intentas construir los paquetes sólo desde el nuevo código
2355 fuente con el directorio <file>debian/</file>, sin que exista el
2356 fichero <file>orig.tar.gz</file> en el directorio padre, acabarás
2357 creando un paquete de fuentes nativo sin querer. Estos paquetes se
2358 distribuyen sin el fichero <file>diff.gz</file>. Este tipo de
2359 empaquetamiento sólo debe hacerse para aquellos paquetes que son
2360 específicos de Debian, es decir, aquellos que no serían útiles en
2361 otra distribución.
2362
2363 <footnote>
2364 Algunas personas argumentan que, incluso en el caso de paquetes
2365 específicos de Debian, es una práctica mejor de empaquetamiento que los
2366 contenidos del directorio <file>debian/</file> estén en el archivo
2367 <file>diff.gz</file> en lugar de incluirse en el archivo
2368 <file>orig.tar.gz</file>.
2369 </footnote>
2370
2371 <p>Para obtener un paquete no nativo de fuentes que consista tanto
2372 en un archivo <file>orig.tar.gz</file> como en un archivo
2373 <file>diff.gz</file>, debes copiar manualmente el archivo tar del
2374 código fuente original al directorio padre con el nombre cambiado a
2375 <file>&lt;nombrepaquete&gt;_&lt;versión&gt;.orig.tar.gz</file>. Igual
2376 que como lo hizo la orden <prgn>dh_make</prgn> en <ref
2377 id="dh_make">.
2378
2379 <sect id="cvs-buildpackage">La orden <prgn>cvs-buildpackage</prgn> y similares
2380
2381 <p>Deberías considerar el utilizar algún sistema de administración de
2382 código para gestióna el proceso de empaquetado. Hay varios guiones
2383 adaptados para que puedan utilizarse en algunos de los sistemas de
2384 control de versiones más populares.
2385
2386 <list compact>
2387 <item>CVS
2388 <list compact>
2389 <item><package>cvs-buildpackage</package>
2390 </list>
2391 <item>Subversion
2392 <list compact>
2393 <item><package>svn-buildpackage</package>
2394 </list>
2395 </list>
2396 <p>
2397
2398 Estas órdenes también automatizan el empaquetado de nuevas versiones
2399 del código fuente.
2400
2401 <sect id="upgrading">Verificar actualizaciones del paquete
2402
2403 <p>Cuando construyas una nueva versión del paquete, deberías hacer
2404 lo siguiente para verificar que el paquete puede actualizarse
2405 de forma segura:
2406
2407 <list>
2408 <item>actualiza el paquete a partir de la versión previa,
2409 <item>vuelve a la versión anterior y elimínala,
2410 <item>instala el paquete nuevo,
2411 <item>elimínalo y reinstálalo de nuevo,
2412 <item>púrgalo.
2413 </list>
2414
2415 <p>Si el paquete hace uso de unos guiones pre/post/inst/rm
2416 complicados, asegúrate de probar éstos con las distintas rutas
2417 posibles en la actualización del paquete.
2418
2419
2420 <p>Ten en cuenta que si tu paquete ha estado previamente en Debian,
2421 lo más frecuente es que gente actualice el paquete desde la versión
2422 que estaba en la última versión de Debian. Recuerda que debes probar
2423 también las actualizaciones desde esa versión.
2424
2425 <chapt id="helpme">Dónde pedir ayuda
2426
2427 <p>Antes de que te decidas a preguntar en lugares públicos, por
2428 favor, simplemente RTFM («Lee el dichoso manual», N. del T.), que
2429 incluye la documentación en <file>/usr/share/doc/dpkg</file>,
2430 <file>/usr/share/doc/debian</file>, <file>&autotools-dev;</file>,
2431 <file>/usr/share/doc/package/*</file> y las páginas de man/info para
2432 todos los programas mencionados en este documento. Consulta toda la
2433 información en <url id="&nm-home;"> y <url id="&mentors-faq;">.
2434
2435 <p>Si tienes dudas sobre empaquetado a las que no has podido encontrar
2436 respuesta en la documentación, puedes preguntar en la lista de correo
2437 de Debian Mentors <email/debian-mentors@lists.debian.org/.
2438 Los desarrolladores más experimentados de Debian, te ayudarán gustosamente,
2439 pero ¡leete la documentación antes de preguntar!
2440
2441 <p>Consulta <url id="http://lists.debian.org/debian-mentors/"> para más
2442 información sobre esta lista de correo.
2443
2444 <p>Cuando recibas un aviso de fallo (sí,
2445 avisos de fallos, ¡de verdad!) sabrás que es el momento de indagar en
2446 el <url name="Sistema de seguimiento de fallos de Debian"
2447 id="http://www.debian.org/Bugs/"> y leer la documentación de allí
2448 para poder tratar los informes de forma eficiente.
2449 Te recomiendo la lectura de la Refencia del Desarrollador,
2450 en particular el capítulo de «Manejo de Bugs» (Handling Bugs, N. del T.), en
2451 <file>&bughandling;</file>.
2452
2453 <p>Si aún tienes preguntas, házlas en la lista de distribución de
2454 Desarrolladores de Debian en <email/debian-devel@lists.debian.org/.
2455 Véase <url id="http://lists.debian.org/debian-devel/"> para más
2456 información sobre esta lista de correo.
2457
2458 <p>Aunque todo funcione bien, es el momento de empezar a rezar. ¿Por
2459 qué? Por que en sólo unas horas (o días) usuarios de todo el mundo
2460 empezarán a usar tu paquete, y si cometiste algún error crítico
2461 centenares de usuarios furiosos de Debian te bombardearán con
2462 correos... sólo bromeaba :-)
2463
2464 <p>Relájate y prepárate para recibir informes de fallos, porque hay
2465 mucho más trabajo que hacer antes de seguir completamente las
2466 Normas de Debian (una vez más lee la <em>documentación real</em>
2467 para más detalles). ¡Buena suerte!
2468
2469 <appendix id="pkg-eg">Ejemplos.
2470
2471 <p>En este ejemplo mpaquetaremos el código fuente original
2472 <var>gentoo-1.0.2</var>.tar.gz y subiremos todos los paquetes al
2473 <tt><var>nm_objetivo</var></tt>.
2474
2475 <sect id="pkg-simple">Ejemplo de empaquetado sencillo
2476 <p>
2477 <example>
2478 $ mkdir -p <var>/ruta/a</var> # nuevo directorio vacío
2479 $ cd <var>/ruta/a</var>
2480 $ tar -xvzf <var>/ruta/desde/gentoo-1.0.2</var>.tar.gz # obtén la fuente
2481 $ cd <var>gentoo-1.0.2</var>
2482 $ dh_make -e <var>nombre@dominio.com</var> -f <var>/ruta/desde/gentoo-1.0.2</var>.tar.gz
2483 ... Responde a las preguntas
2484 ... Arregla el árbol de las fuentes
2485 ... Si es un paquete que contiene programas guiones, indica en debian/control «Architecture: all»
2486 ... No borres ../<var>gentoo_1.0.2</var>.orig.tar.gz
2487 $ debuild
2488 ... Asegúrate de que no hay ningún aviso
2489 $ cd ..
2490 $ dupload -t <var>nm_objetivo</var> <var>gentoo_1.0.2-1</var>_i386.changes
2491 </example>
2492
2493 <sect id="pkg-dpatch">Ejemplo de empaquetado con <package>dpatch</package> y <package>pbuilder</package>
2494
2495 <p>
2496 <example>
2497 $ mkdir -p <var>/ruta/a</var> # nuevo directorio vacío
2498 $ cd <var>/ruta/a</var>
2499 $ tar -xvzf <var>/ruta/desde/gentoo-1.0.2</var>.tar.gz
2500 $ cp -a <var>gentoo-1.0.2</var> <var>gentoo-1.0.2-orig</var>
2501 $ cd <var>gentoo-1.0.2</var>
2502 $ dh_make -e <var>nombre@dominio.com</var> -f /ruta/de/<var>gentoo-1.0.2</var>.tar.gz
2503 ... Responde a las preguntas
2504 </example>
2505 En un principio, <file>debian/rules</file> es así:
2506 <example>
2507 configure: configure-stamp
2508 configure-stamp:
2509 dh_testdir
2510 # Add here commands to configure the package.
2511 touch configure-stamp
2512 build: build-stamp
2513 build-stamp: configure-stamp
2514 dh_testdir
2515 # Add here commands to compile the package.
2516 $(MAKE)
2517 #docbook-to-man debian/gentoo.sgml > gentoo.1
2518 touch $@
2519 clean:
2520 dh_testdir
2521 dh_testroot
2522 rm -f build-stamp configure-stamp
2523 # Add here commands to clean up after the build process.
2524 -$(MAKE) clean
2525 dh_clean
2526 </example>
2527
2528 Cambia lo siguiente con un editor en <file>debian/rules</file> para
2529 usar <package>dpatch</package> y añade <package>dpatch</package> a la
2530 línea <tt>Build-Depends:</tt> en el fichero
2531 <file>debian/control</file>:
2532 <example>
2533 configure: configure-stamp
2534 configure-stamp: patch
2535 dh_testdir
2536 # Add here commands to configure the package.
2537 touch configure-stamp
2538 build: build-stamp
2539 build-stamp: configure-stamp
2540 dh_testdir
2541 # Add here commands to compile the package.
2542 $(MAKE)
2543 #docbook-to-man debian/gentoo.sgml > gentoo.1
2544 touch $@
2545 clean: clean-patched unpatch
2546 dh_testdir
2547 dh_testroot
2548 rm -f build-stamp configure-stamp
2549 # Add here commands to clean up after the build process.
2550 -$(MAKE) clean
2551 dh_clean
2552 patch: patch-stamp
2553 patch-stamp:
2554 dpatch apply-all
2555 dpatch call-all -a=pkg-info >patch-stamp
2556 unpatch:
2557 dpatch deapply-all
2558 rm -rf patch-stamp debian/patched
2559 </example>
2560 <p>
2561 Ahora está todo preparado para reempaquetar el árbol de código con el sistema
2562 <package>dpatch</package> y con la ayuda de
2563 <prgn>dpatch-edit-patch</prgn>.
2564 <example>
2565 $ dpatch-edit-patch patch 10_firstpatch
2566 ... Arregla el arbol de fuentes con el editor
2567 $ exit 0
2568 ... Intenta construir el paquete con «debuild -us -uc»
2569 ... Limpia las fuentes con «debuild clean»
2570 ... Repite con dpatch-edit-patch hasta que las fuentes compilen.
2571 $ sudo pbuilder update
2572 $ pdebuild
2573 $ cd /var/cache/pbuilder/result/
2574 $ dupload -t <var>nm_objetivo</var> <var>gentoo_1.0.2-1</var>_i386.changes
2575 </example>
2576
2577 </book>
2578
2579 </debiandoc>

  ViewVC Help
Powered by ViewVC 1.1.5