<!doctype debiandoc system>
<!-- comentarios:
* URL's a package manual?
* por qué a veces usa tt y otras no para los programas ?
-->

<debiandoc>

 <book>

  <titlepag>

   <title>Guía del Nuevo Desarrollador de Debian</title>

  <author>Josip Rodin <email/jrodin@jagor.srce.hr/</author>
   <author>Traducido por: 
   Javier Fernández-Sanguino Peña <email/jfs@computer.org/
   </author>

   <version>versión 0.9a.19, 25 de enero de 2000</version>

   <copyright>
   <copyrightsummary>Copyright &copy; 1998, 1999 Josip Rodin.
   Translation Copyright &copy; 1999, 2000 Javier Fernández-Sanguino Peña.</copyrightsummary>

   <p>Este documento puede ser usado en los términos descritos en 
   la Licencia Pública GNU versión 2
   o posterior.

   <p>Con permiso de los autores, se han usado u modificado porciones de 
   los siguientes documentos:

   <p>Making a Debian Package (AKA the Debmake Manual), copyright &copy;
   1997 Jaldhar Vyas <email/jaldhar@debian.org/.

   <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
   Will Lowe <email/lowe@debian.org/.
   </copyright>

  </titlepag>

  <toc sect>

  <chapt id="start">Empezando "de la Forma Correcta"

  <p>Este documento tratará de describir cómo se construye un paquete
  Debian GNU/Linux para el usuario normal de Debian (y futuros
  desarrolladores) en un lenguaje informal, y con multitud de
  ejemplos. Hay un antiguo dicho romano que dice,
  <em>¡Longum
  iter est per preaecepta, breve et efficax per exempla!</em> 
(¡Es un largo camino con las reglas, pero corto y eficiente con
ejemplos!)


  <p>Una de las cosas que hace a Debian una de las distribuciones más
  importantes del mercado es su sistema de paquetes. Aunque hay una
  gran cantidad de programas disponibles en formato de paquetes de
  Debian, algunas veces necesitará instalar programas que no estén
  así. Puede preguntarse cómo hará usted sus propios paquetes y que
  quizás esta sea una tarea demasiada difícil. Bueno, si es usted un
  novato en Linux, sí es duro, pero si eres todo un experto, no
  deberías estar leyendo esto ahora mismo. :-)
  Necesitas saber algo sobre programación en Unix, pero desde luego no
  tienes que ser un maestro.

  <p>Se pueden obtener versiones nuevas de este documento en línea
  en <url name="http://www.debian.org/doc/maint-guide" id="http://www.debian.org/doc/maint-guide"> y en el paquete 'maint-guide-es'.

  <sect id="needprogs">Programas que necesitas para el desarrollo

  <p>Antes de empezar nada, deberías asegurarte que tienes instalados 
  algunos paquetes adicionales necesarios para el desarrollo. Observe
  que en la lista no están incluidos paquetes 'esenciales' o 'necesarios'
  que se suponen ya instalados.

  <p>Este documento ha sido escrito cuando la distribución 'slink'
  2.1 era las distribución estable oficial de Debian, y 'potato' 2.2
  estaba en fase de desarrollo, por ello los
  paquetes que se indicarán aquí son principalmente aquellos de 'potato'.

  <p>Los siguientes paquetes vienen en una instalación estándar de
  Debian 2.1, así que probablemente ya los tenga (junto con los
  paquetes de los que depende). Aun así, debería
  comprobarlo con  `dpkg -s &lt;paquete&gt;e`.

  <list>
  <item><em>binutils</em> - estos programas se usan para ensamblar y
  enlazar ficheros objetos - aquellos que componen los programas (vea
  `info binutils`)

  <item><em>cpp</em> - el preprocesador de C. (vea <manref name="cpp" section="1">)

  <item><em>cpio</em> - este es un programa archivador como tar o zip.
  (vea
  <manref name="cpio" section="1">)

  <item><em>dpkg-dev</em> - este paquete contiene las herramientas
  necesarias para desempaquetar, construir y enviar paquetes fuente de
  Debian.  (vea <manref name="dpkg-source" section="1">)

  <item><em>file</em> - este útil programa puede determinar de qué
  tipo es un fichero.
  (vea <manref name="file" section="1">)


  <item><em>gcc</em> - el compilador de C de  GNU. La mayor parte de
  los programas de Linux están escritos en C. Si su programa está
  escrito en algún otro lenguaje de programación como C++, Fortran o
  Pascal, debería instalar g++, g77, o gpc, respectivamente.
  (lea <manref name="gcc" section="1">,
  <manref name="g++" section="1">, <manref name="g77" section="1">,
  <manref name="gpc" section="1">)

  <item><em>libc6-dev</em> - las librerías y cabeceras de fichero de C
  que gcc necesita para enlazar y crear ficheros objeto. Aunque
  algunos programas recomienda y/o usan libc5, le sugiero que utilice
  la nueva versión (libc6).
  (vea `info libc`)

  <item><em>make</em> - habitualmente la creación de un programa tiene
  varios pasos. En lugar de ejecutar los mismos comandos una y otra
  vez, puede utilizar este programa para automatizar el proceso,
  creando `Makefiles'. Algunos programas también usan imake y xmkmf,
  programas para generar Makefiles de un conjunto de funciones
  macro. Algunos programas más nuevos usan guiones de configuración y
  Makefiles con la ayuda de programas como autoconf y automake, así
  que puede necesitarlos también.
   (vea `info make`, <manref name="imake" section="1">,
  <manref name="xmkmf" section="1">, <manref name="autoconf" section="1">,
  <manref name="automake" section="1">)

  <item><em>patch</em> - esta utilidad es muy útil ya que permite
  coger el fichero que contiene un listado de diferencias (producido
  por el programa diff) y aplicárselas al fichero original,
  produciendo una versión "parcheada".
  (vea <manref name="patch" section="1">)

  <item><em>perl5</em> - Perl es uno de los lenguajes interpretados
  para hacer guiones más usados en los sistemas un*x de hoy,
  comúnmente referido como la
 "Sierra Mecánica Suiza de Unix". (vea <manref name="perl" section="1">)
  </list>

  <p>De la sección 'devel' de la distribución posiblemente necesite
  instalar esto usted mismo:

  <list> 
  <item><em>dh-make</em> y <em>debhelper</em> - dh-make es necesario
  para crear el esqueleto de nuestro paquete ejemplo, y se usarán
  algunas de las herramientas de debhelper para crear paquetes. No son 
  imprescindibles para la creación de paquetes, pero se recomienda
  <strong>encarecidamente</strong> para nuevos desarrolladores. Hace
  el proceso mucho más fácil al principio, y más fácil de controlar también
  más adelante. (vea <manref name="dh_make" section="1">,
   <manref name="debhelper" section="1">, /usr/share/doc/debhelper/README)
  
  <item><em>devscripts</em> - este paquete contiene algunos guiones
  útiles para los desarrolladores, pero no son necesarios para 
  crear paquetes. (vea /usr/share/doc/devscripts/README.gz)
    
  <item><em>fakeroot</em> o <em>libtricks</em> - estos le permiten
  emular ser root (superusuario, n. del t.) lo cual es necesario para
  ciertas partes del proceso de construcción.
  (vea <manref name="fakeroot" section="1">)

  <item><em>lintian</em> - este paquete le indica muchos de los
  errores comunes después de construir un paquete, y explica los
  errores. Hace falta tener instalado diffstat también, una pequeña
  utilidad que crea histogramas a partir de la salida de diff.
  (vea <manref name="lintian" section="1">, <manref name="diffstat" section="1">,
  /usr/share/doc/lintian/lintian.html/index.html)
  </list>


  <p>Por último, estos paquetes de <em>gran importancia</em> están en
  la sección 'doc' de la distribución:

  <list>
  <item><em>debian-policy</em> - incluye la estructura y contenidos
  del archivo, ciertas notas sobre diseño del SO, el Estándar de la
  Jerarquía de Ficheros de Linux (Filesystem Hierarchy Standard,
  n. del t), y, lo más importante (para usted) es
  que describe los requisitos que debe satisfacer cada paquete para
  ser incluido en la distribución.
  (vea /usr/share/doc/debian-policy/policy.html/index.html)

  <item><em>developers-reference</em> - para todos los temas no
  específicamente relacionados con los detalles técnicos de cómo
  empaquetar, como la estructura del archivo, como renombrar,
  abandonar, coger paquetes, cómo hacer NMUs (Non-Maintainer Uploads,
  o envíos por personas distintos del desarrollador, n. del t.), como
  gestionar los bugs (errores, n. del t.) y cómo y cuando enviar etc.
<!-- traduzco upload por "enviar" pero no me gusta mucho - jfs -->
  (lea /usr/share/doc/developers-reference/developers-reference.html/index.html)

  <item><em>packaging-manual</em> - describe los aspectos técnicos de
  cómo crear paquetes binarios y fuentes en Debian.
  (lea /usr/share/doc/packaging-manual/packaging.html/index.html)
  </list>

  <p>También necesitará un paquete criptográfico, o bien PGP (los paquetes
  pgp-*) o GPG (el paquete gpg),
  para <em>firmar</em> digitalmente su
  paquete. Esto es especialmente importante si quiere distribuir su
  paquete a otras personas (y hará precisamente esto cuando si su
  paquete se incluye en la distribución de Debian). Sin embargo, debido
  a las leyes de exportación de los EEUU, no puede simplemente obtenerlo
  de su servidor de FTP de Debian más cercano. Pero Debian ofrece
  estos paquetes a través de un servidor que no está físicamente en EEUU,
  llamado non-US.debian.org (ftp://non-us.debian.org/debian-non-US/). 
  Su servidor de FTP
  tendrá un fichero llamado README.non-us, que le indicará dónde está
  la réplica más cercana de este servidor.

  <p>Las breves descripciones dadas anteriormente sólo sirven para
  introducirle a lo que hace cada paquete. Antes de continuar, por
  favor lea la documentación de cada programa, al menos para su uso
  normal. Puede parecerle algo duro ahora, pero más adelante estará
  <em>muy</em> contento de haberla leído.

  Nota: <em>debmake</em> es una paquete que incluye otros programas con
  funciones similares a dh-make, pero su uso específico <strong>no</strong>
  está cubierto en este documento. Lea el <url name="manual de Debmake"
    id="http://www.debian.org/~jaldhar/"> para más información.
  


  <sect id="otherinfo">Más información

  <p>Usted puede construir dos tipos de paquetes, fuentes y
  binarios. Un paquete fuente contiene el código que puede compilar en
  un programa. Un paquete binario contiene sólo el programa
  terminado. ¡No mezcle los términos como fuentes de un programa y
  el paquete fuente de un programa! Por favor lea los otros manuales
  si necesita más detalles sobre terminología.

  <p>Debian usa el término 'desarrollador' para la persona que hace
  paquetes, 'autor fuente' ('upstream author, n. del t.) para la persona que hizo el programa, y
  'desarrollador fuente' ('upstream maintainer', n. del t.) para la
  persona que actualmente mantiene el programa fuera de Debian. Generalmente el autor
  y el desarrollador fuente son la misma persona - y algunas veces
  incluso el desarrollador es el mismo. Si hace usted un programa, y
  quiere incluirlo en Debian, tiene total libertad para solicitar
  convertirse en desarrollador.

  <p>Después de construir su paquete (o mientras lo hace), deberá
  convertirse en un desarrollador oficial de Debian si desea que su
  programa entre en la próxima distribución (si el programa es útil,
  ¿por qué no?). Este proceso se explica en la Referencia del
  Desarrollador, por favor, leala.

  <chapt id="first">Primeros pasos

  <p>Mientras que la documentación en el <url name="Rincón del Desarrollador"
   id="http://www.debian.org/devel/"> no está tan clara sobre dónde y
   cómo debería empezar un nuevo desarrollador empezar su trabajo, este documento
   explicara cada pequeño (y algunas veces incluso irrelevante)
   detalle, para ayudarle crear ese primer paquete, y ganar alguna
   experiencia en la construcción de nuevas versiones de éste y quizás
   otros paquetes más adelante.


  <sect id="choose">Elija su programa.

  <p>Probablemente haya escogido ya el paquete que desea construir,
  pero aquí hay algunos punteros para los novatos:

  <list>
  <item>compruebe si el paquete ya está en la distribución. Si usa la
  distribución `estable', quizás sea mejor que vaya a la 
  <url name="página de búsqueda de paquetes"
  id="http://www.debian.org/distrib/packages.html">.
  Si usa la distribución `inestable' <strong>actual</strong>,
  compruebe esto con los comandos:
  <example>
  dpkg -s programa
  dpkg -l '*programa*'
  </example>

  <item>consulte la <url name="página WNPP"
  id="http://www.debian.org/doc/prospective-packages.html"> y la lista
  de correo de debian-devel para ver
  si alguna otra persona está construyendo ese mismo programa. Si es
  así, contacte el desarrollador actual si creo que lo necesita mantener. Sino,
  intente buscar otro programa interesante que nadie mantenga.</item>


  <item>el programa <strong>debe</strong> tener una licencia, si es
  posible, libre en el sentido marcado por las
  <url name="Guías del Software Libre de Debian"
  id="http://www.debian.org/social_contract.html#guidelines">.
  Si no sigue una de estas reglas, aún puede incluirse en las
  secciones `contrib' o `non-free' de Debian. Si no está seguro sobre
  en qué lugar debería ir, pregunte en 
  <email/debian-legal@lists.debian.org/.
  </item>

  <item>el programa <strong>no</strong> debería ejecutarse con setuid
  root, o aún mejor: no debería estar 'setuid' ni 'setgid' a
  nada.</item>

  <item>el programa no debería ser un demonio, o algo que va en los
  directorios */sbin.</item>

  <item>el programa debería ser binarios ejecutables, no intente
  librerías aún.</item>

  <item>debería estar bien documentado, o al menos legible (para cualquiera)
  </item>

  <item>debería contactar el autor/es del programa para comprobar si
  están de acuerdo con que se empaquete. Esto es importante para
  consultar al autor/es sobre el programa en caso de que haya
  problemas específicos, así que no intente empaquetar programas que
  no estén mantenidos.</item>

  <item>y por último pero no menos importante, debería saber cómo
  funciona, y haberlo utilizado por algún tiempo.</item>
  </list>

  <p>Por supuesto, esta lista es para tomar medidas de seguridad, y
  con la intención de salvarle de usuarios enfurecidos si hace algo
  mal con algún demonio de ftp setuid... Pero cuando tenga más
  experiencia en empaquetar cosas, podrá hacer este tipo de paquetes,
  pero incluso los desarrolladores más experimentados preguntan en la
  lista de distribución de debian-devel cuando tienen dudas. Y la
  gente allí le ayudara gustosamente.


  <p>Para más ayuda sobre esto, lea la Referencia del Desarrollador

  <sect id="getit">Obtenga el programa, y pruebelo.

  <p>La primera cosa a hacer es encontrar y descargar el paquete
  original. Supongo que ya tiene el código fuente que obtuvo de la
  página del autor. Las fuentes de Linux generalmente vienen en el
  formato tar/gzip, con extensión <tt>.tar.gz</tt>, y generalmente
  contienen un subdirectorio llamado programa-versión con todas las
  fuentes en él. Si su programa viene en otro tipo de archivo (como
  por ejemplo, el fichero termina con <tt>.Z</tt> o <tt>.zip</tt>),
  descomprima con las herramientas adecuadas, o pregunte en
  debian-mentors si no está seguro de cómo se puede desempaquetar
  correctamente (pista: pruebe `file archivo.extensión`).


  <p>Como ejemplo, usaré el programa conocido como 'gentoo', un gestor
  de ficheros de X11 con GTK+. Observe que el programa ya ha sido empaquetado
  previamente pero ha cambiado sustancialmente de versión desde que este
  texto se escribió.


  <p>Cree un subdirectorio bajo su directorio personal llamado
  'debian' o 'deb' o lo que crea apropiado (por ejemplo ~/gentoo/
  estaría bien en este caso) Y mueva
  a él el archivo que ha descargado, y descomprimalo de la siguiente
  forma: `tar -xzf gentoo-0.9.12.tar.gz`. Asegúrese de que no hay
  errores, incluso errores "irrelevantes", porque es muy probable que
  haya problemas desempaquetando en sistemas de otras personas, cuyas herramientas de
  desempaquetamiento puede que ignoren o no estas anomalías.

  <p>Ahora tiene otro subdirectorio, llamado 'gentoo-0.9.12'. 
  Muévase a ese directorio y lea <strong>en profundidad</strong> la
  documentación que encuentre. Está generalmente en ficheros que se
  llaman README*, INSTALL*, *.lsm o *.html. Allí encontrará
  instrucciones de cómo compilar e instalar el programa (muy probablemente
  asumirán que quiere instalar en el directorio 
   /usr/local/bin: no hará esto, pero lo veremos más adelante en <ref id="destdir">).

  <p>El proceso varía de programas a programas, pero gran parte de los
  programas modernos vienen con un guión 'configure' que configura
  las fuentes para su sistema y se asegura de que su sistema está en
  condiciones de compilarlo. Después de configurarlo (con
  `./configure`), los programas generalmente se compilan con `make`. Algunos
  de ellos soportan `make check` para ejecutarse incluyendo auto-comprobaciones.
  Generalmente se instalarán en sus directorios de destino ejecutando `make
  install`.
  
  <p>Ahora intente compilar, y ejecutar el programa, para asegurarse de que
  funciona bien y que no rompe nada más mientras está instalándose o
  ejecutándose.

  <P>También, generalmente puede escribir 'make uninstall' para eliminar todos
  los programas instalados, y 'make clean' (o mejor 'make distclean') para
  limpiar el directorio donde se genera e programa.

  <sect id="namever">Cosas antes de  `dh_make'

  <P>Debería empezar a construir su paquete en un directorio de fuentes
  completamente limpio, o simplemente con las fuentes recién desempaquetadas.

  <p>Para construir correctamente el paquete, debe poner el nombre original del
  programa en letras minúsculas (si no lo está ya), y debería mover el
  directorio de fuentes a
   &lt;nombre_de_paquete&gt;-&lt;versión&gt;.

  <P> Si el nombre del programa 
   consiste de una o más palabras, contraigalas a una palabra o haga
   una abreviatura. Por ejemplo, el paquete del programa "el editor
   para X de Javi" se podría llamar javiedx o jle4x, o lo que decida,
   siempre y cuando no se exceda de unos límites razonables, como 20
   caracteres.


  <p>También compruebe la versión exacta del programa (la que se incluye
  en la versión del paquete)
  Si el programa no está numerado con versiones del estilo
  de X.Y.Z, pero con fecha de lanzamiento, es usted libre de utilizar
  la fecha como número de versión, precedida por "0.0" (sólo por si los
 desarrolladores originales deciden sacar una versión nueva como 1.0).
  Así, si la fecha es el 19 de diciembre de 1998, utilizó la
  abreviatura norteamericana 0.0.19981219 como número de versión. Aún
  así habrá algunos que ni siquiera estén numerados, en cualquier caso
  debe contactar con el 'desarrollador fuente' para ver si tienen
  algún otro sistema de seguimiento de revisiones.

  <sect id="dh_make">Ejecutando `dh_make'
  <p>Asegúrese que está en el directorio donde están las fuentes del
  programa, y ejecute lo siguiente:

  <p><example>
  dh_make -e tu.dirección.de.desarrollador@dirección -f gentoo-0.9.12.tar.gz
  </example>


  <p>Por supuesto, cambie la cadena "tu.dirección.de.desarrollador@dirección"
por tu dirección de correo electrónico para que se incluya en la entrada del
fichero de cambios así como en otros ficheros, y el nombre de fichero de tu
archivo fuente original. Lea <manref name="dn_make" section="1"> para
más detalles.
 

  <p>Saldrá alguna información. Le preguntará qué tipo de paquete
  desea crear. Gentoo es un solo paquete de binarios - crea sólo un
  binario, y, por tanto, sólo un fichero .deb - así que
  seleccionaremos la primera opción, con la tecla 's'. Compruebe la información
  que aparece en la pantalla y confirme pulsando la tecla &lt;intro&gt;. 
  Como nuevo desarrollador, está desaconsejado crear paquetes multibinarios, o
  librerías, como se explicó antes. No es extremadamente difícil, pero sí
  necesita algunos conocimientos más, así que aquí no describiremos el proceso.

  <p>Tenga en cuenta que debería ejecutar dh_make <strong>sólo una
  vez</strong>, y que no se comportará correctamente si lo hace otra
  vez en el mismo directorio, ya "debianizado". Esto también significa
  que usará un método distinto para crear una nueva revisión o una
  nueva versión de su paquete en el futuro. Lea más sobre esto más
  adelante en <ref id="update">.

  <chapt id="modify">Modificando las fuentes.

  <p>Normalmente, los programas se instalan a sí mismos en el
  subdirectorio /usr/local. Pero los paquetes Debian no pueden
  utilizar este directorio ya que está reservado para el uso privado
  del administrador (o de los usuario). Esto significa que tiene que
  mirar el sistema de construcción de su programa, generalmente empezando
  por el Makefile. Éste es el guión <manref name="make"
  section="1"> que usará para automatizar la creación de éste
  programa. Para más detalles sobre Makefiles, mire en <ref
  id="rules">.

  <p>Tenga en cuenta que no hay espacio aquí para entrar en
  <em>todos</em> los detalles respecto a los arreglos, pero aquí hay
  algunos de los problemas frecuentes a los que se enfrenta uno.

  <sect id="destdir">Instalación en un subdirectorio

  <p>La mayor parte de los programas tienen alguna manera de instalarse
  en la estructura de directorios existente en su sistema, para que los 
  binarios se incluyan en su $PATH, y para que encuentre la documentación y
  páginas de manual en los lugares habituales. Tiene que asegurarse que
  ésto lo hace de forma correctamente, pero tiene que hacer que se instale
  en un directorio temporal que se creará bajo su directorio debian/, 
  generalmente con el nombre <tt>debian/tmp</tt>, desde el que las herramientas
  de desarrollo construirán un paquete .deb que se pueda instalar. Todo lo
  que se incluye en este directorio será instalado en el sistema del usuario
  cuando instale su paquete, la única diferencia es que dpkg instalará los
  ficheros en el directorio raíz.

  <p>Básicamente, debe hacer que el programa se instale en debian/tmp, pero
  se comporte correctamente cuando se instale en el directorio raíz, esto es
  cuando se instale desde el paquete .deb. Con programas que utilizan la 
  herramienta GNU autoconf, ésto será bien sencillo, porque dh_make pondrá
  las opciones necesarias para hacer esto automáticamente, así que podría
  dejar de leer esta sección. Pero con otros programas, puede ser necesario
  que usted examine y edite los Makefiles.

  <p>Ésta es la parte importante del Makefile de gentoo:

  <p><example>
  # ¿Dónde poner el binario en  'make install'?
  BIN     = /usr/local/bin
  # ¿Dónde poner los iconos en 'make install'? Nota: si cambia esto,
  # gentoo no encontrará los iconos cuando arranque. Deberá cambiar 
  # el path de iconos de gentoo (en la ventana de configuración:
  # "Paths") para que funcione.
  ICONS   = /usr/local/lib/gentoo/
  </example>

  <p>Antes de esto debería insertar dos nuevas líneas que dicen:

  <p><example>
  # Editado para Debian GNU/Linux.
  DESTDIR =
  </example>
  porque el proceso de construcción lo necesita (explicado más tarde, en
  <ref id="rules">).

  <p>Después el Makefile menciona la localización del binario
  final. Sólo necesita cambiar esto:
  <p><example>
  # ¿Dónde poner el binario en  'make install'?
  BIN     = $(DESTDIR)/usr/X11R6/bin
  </example>

  <p>¿Pero por qué en este directorio y no en otro? Porque Debian
  tiene unas reglas definidas de dónde deberían estar instalados los
  programas. Están especificas en el <em>Linux Filesystem Structure
  Standard</em> (/usr/share/doc/debian-policy/fhs) [Estándar de Linux de la
  Estructura de los Sistemas de Ficheros, n. del t.]. Así, deberíamos
  instalar el binario en /usr/X11R6/bin en lugar de /usr/local/bin, y
  la página de manual (no existe aquí, pero casi todos los programas
  tienen una así que haremos una después) en /usr/share/man/man1 en lugar de
  /usr/local/man/man1.


  <p>Después de esto tenemos un situación un poco más complicada. Si
  cambia la línea a:

  <p><example>
  ICONS   = $(DESTDIR)/usr/share/gentoo/
  </example>
  que estará dentro de la política de Debian, deberá editar algunos
  ficheros de fuentes reales de C. Pero, ¿dónde buscar? Puede probar a
  encontrarlos usando:
  <p><example>
  grep -n usr/local/lib *.[ch]
  </example>
  (en cada subdirectorio que contiene ficheros .c y .h). Grep dirá el
  nombre del fichero y la línea, cuando encuentra una
  ocurrencia. Ahora edite esos ficheros y cambie en esas líneas
  usr/local/lib con usr/share - y ya está. Simplemente reemplace
  usr/local/lib por su localización, y sea muy cuidadoso para no
  mezclar el resto del código, si no sabe mucho sobre cómo programas
  en C. :-)

  <p>Después de esto debería encontrar el objetivo 'install' (busque
  una línea que comience por 'install:') y renombre todas las
  referencias a directorios distintos de los definidos al comienzo del
  Makefile. Anteriormente el objetivo 'install' decía:

  <p><example>
  # ----------------------------------------- Installation

  # ¡Debe ser superusuario para hacer esto!
  install:        gentoo-target
                  install ./gentoo $(BIN)
                  install icons $(ICONS)
                  install gentoorc-example $(HOME)/.gentoorc
  </example>

  <p>Después del cambio dice:
  <example>
  # ----------------------------------------- Installation

  # You're going to have to be root to do this!
  install:        gentoo-target
                  install -d $(BIN) $(ICONS) $(DESTDIR)/etc
                  install ./gentoo $(BIN)
                  install -m644 icons/* $(ICONS)
                  install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
                  install -d $(DESTDIR)/usr/doc/gentoo/html
                  cp -a docs/* $(DESTDIR)/usr/doc/gentoo/html
  </example>

  <p>Un lector atento se dará cuenta de que he cambiado 'gentoo' a
  'gentoo-target' en la línea 'install:'. Esto es para arreglar un
  fallo en el programa. :-)

  <p>Siempre que haga cambios que no estén específicamente
  relacionados con el paquete Debian, asegúrese de que los envía al
  desarrollador original para que éste los incluya en la próxima
  revisión del programa. Observe que no tiene que enviar ninguno
  de los fichero s debian/* al desarrollador original, pero debería
  hacerlo con cualquier otro parche. Y sea amable haciendo sus cambios
  no específicos a Debian o Linux (¡ni siquiera a Unix!) antes de enviarlos.

  <sect id="difflibs">Librerías diferentes.

  <p>Hay un problema común: las librerías son generalmente diferentes
  de plataforma a plataforma. Por ejemplo, un Makefile puede contener
  una referencia a una librería que no exista en Debian o ni siquiera
  en Linux. En este caso,
  se necesita cambiarla a una librería que sí existe en Debian y sirve
  para el mismo propósito. La mejor forma es comentar 
  esas líneas porque puede que haber otras personas que
  intenten compilar en diferentes plataformas y éstas les pueden dar
  algunas pistas de dónde puede estar el problema.

  <p>Así, si hay una línea en el Makefile de su programa que dice algo
  como lo siguiente (y su programa no compila):

  <p><example>
  LIBS = -lcurses -lsomething -lsomethingelse
  </example>

  <p>Entonces cambiela a lo siguiente, y funcionará casi con
  seguridad:
  <p><example>
  LIBS = -lncurses -lsomething -lsomethingelse
  #LIBS = -lcurses -lsomething -lsomethingelse
  </example>

  <chapt id="dreq">Las cosas necesarias bajo debian/

  <p>Ahora hay un nuevo subdirectorio bajo el directorio principal del
  programa ('gentoo-0.9.12'), que se llama
  'debian'. Hay bastantes ficheros en este directorio. Empezaremos
  editando éstos para adaptar el comportamiento del paquete. La parte
  más importante es modificar los ficheros 'control', 'rules' (reglas, n. del t.),
  'changelog', y 'copyright' que se necesitan en todos los paquetes.

  <sect id="control">El fichero `control'.

  <p>Este fichero contiene varios valores que dpkg y dselect usarán
  para gestionar el paquete. Aquí está el fichero de control que
  dh_make crea para nosotros.

  <p><example>1 Source: gentoo
  2 Section: unknown
  3 Priority: optional
  4 Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5 Standards-Version: 3.0.1
  6
  7 Package: gentoo
  8 Architecture: any
  9 Depends: ${shlibs:Depends}
  9  Depends: ${shlibs:Depends}
  10 Deguiónion: &lt;insertar unos 60 caracteres de descripción&gt;
  11  &lt;inserta una descripción ligera, indentado con espacios&gt;
  </example>
  (He añadido los número de línea.)


  <p>La línea 3 describe cómo de importante es para el usuario la
  instalación de éste paquete. La sección y prioridad son actualmente
  sólo usadas por dselect cuando ordena paquetes y selecciona valores
  por defecto, y pueden ser modificadas (y generalmente lo serán) por
  nuestros administradores del FTP. Lea el manual de Política de
  Debian para una guía de qué valor deben tener estos campos.
  
  <p>Como es un paquete de prioridad normal, lo dejaremos con prioridad
  'optional' (opcional, n. del t.).

  <p>La línea 4 es el nombre y correo electrónico del desarrollador.

  <p>La línea 5 es la versión de los estándares de la Política de
  Debian que sigue este paquete (dos versiones importantes del paquete
  debian-policy instalado).


  <p>Si se necesita un compilador no estándar o alguna otra herramienta para
  construir el paquete, debería añadir aquí una línea 'Build-depends' y
  listar los paquetes necesarios. Para más información sobre ésto lea
  el Manual de Empaquetamiento (sección 8.7) y la documentación en el paquete
  'build-essential'.

  <p>La línea 7 es el nombre del paquete binario.

  <p>La línea 8 describe la arquitectura de CPU para la que se compiló
  el paquete. Podemos dejar ésta como 'any' (cualquiera, n. del. t),
  ya que <manref name="dpkg-gencontrol" section="1"> lo rellenará con
  el valor apropiado cuando se compile este paquete (lea la Referencia del
  Desarrollador para una explicación de qué es portar paquetes). Si su
  paquete es independiente de la arquitectura (por ejemplo, un documento, un
  programa de shell o un guión en Perl), cambie esto a "all", y lea más
  adelante  <ref id="rules"> sobre cómo usar la regla 'binary-indep' en lugar
  de 'binary-arch' para construir el paquete.

  <p>La línea  9 muestra una de las más poderosas posibilidades del
  sistema de paquetes de Debian. Los paquetes se pueden relacionar
  unos con otros de diversas formas. Aparte de 'Depends:' (depende de,
  n. del t.) otros campos de relación son 'Recommends:' (recomienda,
  n. del t.), 'Suggests:' (sugiere, n. del t.), 'Pre-depends:'
  (predepende de, n. del t.), 'Conflicts:' (entra en conflicto con,
  n. del t.), 'Provides:' (provee, n. del t.), 'Replaces:' (reemplaza
  a, n. del t.). Ésto es lo que significan:


  <p>Esto es lo que generalmente significan:

  <list>
  <item>Depends:
  <p>No se instalará el programa a menos que los paquetes de
  los que depende estén instalados. Use esto si su programa no
  funcionará de ninguna forma (o causará daños)
   a menos que esté disponible un paquete determinado.</item>

  <item>Recommends:
  <p>Dselect no le permitirá instalar el paquete a menos que los
  paquetes que recomienda estén instalados. Dpkg y apt, sin embargo, sí le
  dejará. Use esto para paquetes que no son estrictamente necesarios
  pero generalmente son usados con su programa.</item>

  <item>Suggests:
  <p>Cuando un usuario instale el programa, dselect le sugerirá
  instalar cualquier paquete que éste sugiera. Dpkg y apt no hace caso a
  esto. Utilice esto para paquetes que funcionarán bien con su
  programa pero no son necesarios en absoluto.</item>

  <item>Pre-Depends:
  <p>Esto es más fuerte que 'Depends'. Dpkg y dselect no instalarán el
  paquete a menos que el paquete del que pre-dependa esté instalado
  <em>y correctamente configurado</em>. Utilice esto
  <strong>muy</strong> poco y sólo después de haberlo discutido en la
  lista de distribución de debian-devel. En resumidas cuentas: no lo
  utilice en absoluto. :-> </item>


  <item>Conflicts:
  <p>El paquete no será instalado su programa hasta que todos los
  paquetes con los que entra en conflicto hayan sido eliminados. Utilice
  esto si su programa no funcionará en absoluto (o causará daños) si un
  paquete particular están presentes.
  </item>


  <item>Provides:
  <p>Para algunos tipos determinados de paquetes dónde hay múltiples
  alternativas se han definido nombres virtuales. Puede obtener la
  lista completa en el fichero
  /usr/share/doc/debian-policy/virtual-package-names-list.text.gz.
  Use esto si su programa provee las funciones de un paquete virtual
  existente.</item>

  <item>Replaces:
  <p>Use esto si su programa reemplaza ficheros de otro paquete, o
  reemplaza totalmente otro paquete (generalmente se usa conjuntamente
  con 'Conflicts':). Se eliminarán los ficheros de los
  paquetes indicados antes de instalar el suyo.</item>
  </list>

  <p>Todos estos campos tienen una sintaxis uniforme. Tienen una lista
  de nombres de paquetes separados por comas. Estos nombres de
  paquetes también puede ser listas de paquetes alternativos,
  separados por los símbolos de barra vertical <tt>|</tt> (símbolos
  tubería). Los campos pueden restringir su aplicabilidad a versiones
  determinadas de cada paquete nombrado. Esto se hace entre paréntesis
  para cada nombre de paquete individual; los paréntesis deberían
  contener una relación de la siguiente lista seguida por un número de
  versión. Las relaciones permitidas son <tt>&lt;&lt;</tt>,
  <tt>&lt;=</tt>, <tt>=</tt>, <tt>&gt;=</tt> y <tt>&gt;&gt;</tt>
  estrictamente para anterior, anterior o igual, exactamente igual,
  posterior o igual o estrictamente posterior, respectivamente.

  
  <p>La última funcionalidad que quiero necesita conocer es
  $(shlibs:Depends). Ésta se sustituirá automáticamente por <manref
  name="dh_shlibdeps" section="1"> y rellenada por 
  <manref name="dh_gencontrol" section="1">
  por los nombres de cualquier librería compartida, como libc6 o xlib6g, 
  que use su
  programa, así que no necesita especificar esto usted mismo. Habiendo
  dicho todo esto, puede dejar la línea 9 exactamente como está ahora.

  <p>La línea 10 es donde va la lista de sugerencias. Aquí sólo
  es 'file', porque gentoo  utiliza algunas funciones de este paquete/programa.

  <p>La línea 11 es una descripción corta. La mayor parte de los
  monitores de la gente son de 80 columnas de ancho, así que no
  debería tener más de 60 caracteres. Cambiaré esto a 
   "A fully GUI configurable GTK+ file manager" ("Una GUI GTK+ a un gestor de
   ficheros completamente configurable").

  <p>La línea 12 es donde va la descripción larga del paquete. Debería
  ser al menos un párrafo que da más detalles del paquete. La Columna
  1 de cada línea debería estar vacía. No puede haber líneas en
  blanco, pero puede poner un . (punto) en una columna para
  simularlo. También no debe haber más de una línea en blanco después
  de la descripción completa.


  <p>Aquí está el fichero de control actualizado:

  <p><example>
  1  Source: gentoo
  2  Section: x11
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5  Standards-Version: 3.0.1
  6
  7  Package: gentoo
  8  Architecture: any
  9  Depends: ${shlibs:Depends}
  10 Suggests: file 
  11 Deguiónion: A fully GUI configurable GTK+ file manager
  12 gentoo is a file manager for Linux written from scratch in pure C. It
  13 uses the GTK+ toolkit for all of its interface needs. gentoo provides
  14 100% GUI configurability; no need to edit config files by hand and re-
  15 start the program. gentoo supports identifying the type of various
  16 files (using extension, regular expressions, or the 'file' command),
  17 and can display files of different types with different colors and icons.
  18 .
  19 gentoo borrows some of its look and feel from the classic Amiga file
  20 manager "Directory OPUS" (written by Jonathan Potter).
  </example>

  <sect id="copyright">el fichero `copyright'

  <p>Este fichero contiene la información sobre la licencia y copyright
  de las fuentes originales del paquete. El formato no está definido en
  la Política, pero sí sus contenidos (sección 6.5). Dh_make crea un
  fichero por defecto que es así:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from &lt;fill in ftp site&gt;
  5
  6  Upstream Author(s): &lt;put author(s) name and email here&gt;
  7
  8  Copyright:
  9
  10 &lt;Must follow here&gt;
  </example>
  (He añadido los número de línea)

  <p>Las cosas importantes que se deben añadir a este fichero son el
  lugar de donde obtuvo el paquete y la nota de copyright y licencia
  originales. Debe incluir la licencia completa, a menos que sea una 
  licencia común en el mundo del software libre como GNU GPL o LGPL, BSD
  o la 'Artistic license', basta referirse al fichero apropiado en el
  directorio /usr/share/common-licenses/ que existe en todo sistema Debian.
  Gentoo está licenciado bajo la Licencia Pública General GNU, así que
  cambiaremos el fichero a esto:

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from: ftp://ftp.obsession.se/gentoo/
  5
  6  Upstream author: Emil Brink &lt;emil@obsession.se&gt;
  7
  8  This software is copyright (c) 1998-99 by Emil Brink, Obsession
  9  Development.
  10
  11 You are free to distribute this software under the terms of
  12 the GNU General Public License.
  13 On Debian systems, the complete text of the GNU General Public
  14 License can be found in /usr/share/common-licenses/GPL file.
  </example>
  (He añadido los números de línea)

  (Nota del T.: la política de Debian actual indica que los documentos
  aquí citados estén escritos en inglés, al ser el idioma oficial del,
  proyecto por ello no se traducen  en este documento)

  <sect id="changelog">el fichero `changelog'

  <p>Este es un fichero requerido, que tiene un formato especial descrito en 
  el Manual de Empaquetamiento (sección 3.2.3). Este formato es usado por dpkg
  y otros programas para obtener el número de versión, revisión, distribución
  y urgencia de su paquete.

  <p>Para usted es también importante, ya que es bueno tener documentados
  todos los cambios que haya hecho. Le ayudará a las personas que se descargen
  su paquete para ver si hay temas pendientes en el paquete que deberían 
  conocer de forma inmediata. Se salvará como 
  `/usr/share/doc/gentoo/changelog.Debian.gz' en el paquete binario.

  <p>Dh_make crea uno por defecto, que es algo así:

  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  6
  7  Local variables:
  8  mode: debian-changelog
  9  End:
  </example>
  (He añadido los números de línea)
  <p>(N. del T.: se traduce el fichero de copyright, dh_make sólo lo
  ofrece en inglés)


  <p><example>
  1  Éste paquete fue debianizado por Josip Rodin jrodin@jagor.srce.hr el
  2  Mie, 11 Nov 1998 21:02:14 +0100.
  3
  4  Se descargó de  &lt;rellenar el servidor de ftp&gt;
  5
  6  Autor/es Original/es: &lt;poner el nombre/s de el/los autor/es y
  7  dirección de correo electrónico aquí&gt;
  8  Copyright:
  9
  10 &lt;Debe venir aquí&gt;
  </example>



  <p>La línea 1 es el nombre del paquete, versión, distribución y urgencia.
  El nombre debe coincidir con el nombre del paquete fuente, la distribución
  debería ser, por ahora, `unstable' o `experimental', y la urgencia no debería
  cambiarse a algo mayor que `low'. :-)
  
  <p>Las línea 3-5 son una entrada de registro, donde documenta los cambios
  hechos en esta revisión del paquete (no los cambios de la fuente original -
  hay un fichero especial para este propósito, creado por los autores 
  originales e instalado como
  /usr/share/doc/gentoo/changelog.gz). Las nuevas líneas deben ser insertadas
  justo antes de la línea que hay más arriba que comienza por un asterisco 
  (`*'). Puede hacerlo con <manref name="dch" section="1">, 
   <manref name="emacs" section="1"> (las líneas 7 a la 9 contienen información
  de modo para el editor Emacs), o cualquier otro editor de texto.
  Terminará con algo así:
  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4   * This is my first Debian package.
  5   * Adjusted the Makefile to fix $DESTDIR problems.
  6
  7  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  8
  9  Local variables:
  10  mode: debian-changelog
  11 End:
  </example>
  (He añadido los números de línea.)

  <p>Cuando distribuya una nueva revisión, sólo debe incrementar el número
  de versión. Puede hacer esto sólo con `dch -i` o explícitamente con
  `dch -v &lt;versión&gt;-&lt;revisión&gt;` y después insertar los comentarios
  usando su editor preferido. Pista: ¿cómo obtener rápidamente la fecha
  en el formato necesario?
  Use `822-date`, o `date -R`.

  <p>La nueva información sobre la versión se añade al principio del fichero
  de cambios. Esto es como el fichero de cambios quedará después:

  <p><example>
  1  gentoo (0.9.12-2) unstable; urgency=low
  2
  3   * Fixed a glitch in the menu file.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 22:15:39 +0100
  6
  7  gentoo (0.9.12-1) unstable; urgency=low
  8
  9   * Initial Release.
  10  * This is my first Debian package.
  11  * Adjusted the Makefile to fix $DESTDIR problems.
  12
  13 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  14
  15 Local variables:
  16 mode: debian-changelog
  17 End:
  </example>
  (I've added the line numbers.)

  <p>Puede leer más sobre nuevas versiones/revisiones de paquetes más
  adelante en
  <ref id="update">.


  <sect id="rules">el fichero `rules'.

  <p>Ahora volvemos al directorio 'debian' para mirar las reglas que 
  <manref name="dpkg-buildpackage" section="1"> utilizará para crear
  el paquete. Este fichero es en realidad otro Makefile, ya que es
  ejecutado con 'make -f', pero diferente al que viene en las fuentes
  originales.

  <p>Cada fichero 'rules' (de reglas, n. del t.), como muchos otros
  Makefiles, consiste de varias reglas sobre cómo compilar las
  fuentes. Las reglas consisten en objetivos: ficheros o nombres de
  acciones que se deben llevar a cabo (por ejemplo, 'build:' o
  'install:'). Las reglas que quiere ejecutar deberían llamarse como
  los argumentos de comandos (por ejemplo, './debian/rules build' o 
  'make -f rules
  install'). Después del nombre del objetivo, puede nombrar las
  dependencias, programas o ficheros de los que la regla
  depende. Después de esto hay un número cualquiera de instrucciones
  (¡indentado con &lt;tab&gt;!), hasta que se llega a una línea en
  blanco, ahí empieza otra regla. Líneas múltiples en blanco, o líneas
  que empiezan por   almohadillas ('#') se tratan como comentarios y
  se ignoran.
<!-- 
  Puede llamar
  a las reglas desde otra regla o desde la línea de órdenes (esto es
  `debian/rules clean`).
-->

  <p>Probablemente ya se haya perdido, pero todo quedará más claro
  después de ver un fichero 'rules' que dh_make pone por
  defecto. Debería también leer la entrada de 'make' en info para más
  información.

  <p>La parte importante que debe conocer sobre el fichero de reglas creado
  por dh_make, es que sólo es una sugerencia. Funcionará para paquetes simples
  pero para más complicados, no se asuste y añada o sustraiga de éste para
  ajustarse a sus necesidades. Una cosa que no debe cambiar son los nombres
  de las reglas, porque todas las herramientas utilizan estos nombres, 
  como se indica en el Manual de Empaquetamiento.

  <p><example>
  1  #!/usr/bin/make -f
  2  # Made with the aid of dh_make, by Craig Small
  3  # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
  4  # Some lines taken from debmake, by Christoph Lameter.
  5
  6  # Uncomment this to turn on verbose mode.
  7  #export DH_VERBOSE=1
  8
  9  # This is the debhelper compatability version to use.
  10 export DH_COMPAT=1
  11 build: build-stamp
  12 build-stamp:
  13	dh_testdir
  14
  15	
  16	# Add here commands to compile the package.
  17	$(MAKE)
  18
  19	touch build-stamp
  20
  21 clean:
  22	dh_testdir
  23	dh_testroot
  24	rm -f build-stamp 
  25
  26	# Add here commands to clean up after the build process.
  27	-$(MAKE) clean
  28
  29	dh_clean
  30
  31 install-stamp: build-stamp
  32	dh_testdir
  33	dh_testroot
  34	dh_clean -k
  35	dh_installdirs
  36
  37	# Add here commands to install the package into debian/tmp.
  38	$(MAKE) install DESTDIR=`pwd`/debian/tmp
  39
  40 # Build architecture-independent files here.
  41 binary-indep: build install
  42 # We have nothing to do by default.
  43
  44 # Build architecture-dependent files here.
  45 binary-arch: build install
  46 #	dh_testversion
  47	dh_testdir
  48	dh_testroot
  49 #  dh_installdebconf
  50	dh_installdocs
  51	dh_installexamples
  52	dh_installmenu
  53 #	dh_installemacsen
  54 #	dh_installpam
  55 #	dh_installinit
  56	dh_installcron
  57	dh_installmanpages
  58	dh_installinfo
  59 #	dh_undocumented
  60	dh_installchangelogs
  61	dh_link
  62	dh_strip
  63	dh_compress
  64	dh_fixperms
  65	# You may want to make some executables suid here.
  66	dh_suidregister
  67 #	dh_makeshlibs
  68	dh_installdeb
  69 #	dh_perl
  70	dh_shlibdeps
  71	dh_gencontrol
  72	dh_md5sums
  73	dh_builddeb
  74
  75 binary: binary-indep binary-arch
  76 .PHONY: build clean binary-indep binary-arch binary install
  </example>
  (He añadido los números de línea)

  <p>(N. del T.: se traduce el fichero de reglas, dh_make sólo lo
  ofrece en inglés)

  <p><example>
  1  #!/usr/bin/make -f
  2  # Creado con la ayuda de dh_make, por Craig Small 
  3  # Fichero de ejemplo debian/rules que usa debhelper. Copyright GNU 1997 por Joey Hess.
  4  # Algunas líneas son de debmake, por Christoph Lameter.
  5
  6  # Quitele el comentario para activar el modo verboso
  7  #export DH_VERBOSE=1
  8
  9  # Esta es la versión de compatibilidad con debhelper a usar
  10 export DH_COMPAT=1
  11 build: build-stamp
  12 build-stamp:
  13	dh_testdir
  14
  15	
  16	# Añada aquí los comandos para compilar el paquete.
  17	$(MAKE)
  18
  19	touch build-stamp
  20
  21 clean:
  22	dh_testdir
  23	dh_testroot
  24	rm -f build-stamp 
  25
  26	# Añada aquí los comandos para limpiar después del proceso de creación.
  27	-$(MAKE) clean
  28
  29	dh_clean
  30
  31 install-stamp: build-stamp
  32	dh_testdir
  33	dh_testroot
  34	dh_clean -k
  35	dh_installdirs
  36
  37	# Añada aquí los comandos para instalar el paquete en debian/tmp.
  38	$(MAKE) install DESTDIR=`pwd`/debian/tmp
  39
  40 # Construir los ficheros independientes de arquitectura aquí
  41 binary-indep: build install
  42 # Por defecto no se hace nada.
  43
  44 # Construir los ficheros dependientes de arquitectura aquí.
  45 binary-arch: build install
  46 #	dh_testversion
  47	dh_testdir
  48	dh_testroot
  49 #  dh_installdebconf
  50	dh_installdocs
  51	dh_installexamples
  52	dh_installmenu
  53 #	dh_installemacsen
  54 #	dh_installpam
  55 #	dh_installinit
  56	dh_installcron
  57	dh_installmanpages
  58	dh_installinfo
  59 #	dh_undocumented
  60	dh_installchangelogs
  61	dh_link
  62	dh_strip
  63	dh_compress
  64	dh_fixperms
  65	# Puede hacer algunos ejecutables suid aquí
  66	dh_suidregister
  67 #	dh_makeshlibs
  68	dh_installdeb
  69 #	dh_perl
  70	dh_shlibdeps
  71	dh_gencontrol
  72	dh_md5sums
  73	dh_builddeb
  74
  75 binary: binary-indep binary-arch
  76 .PHONY: build clean binary-indep binary-arch binary install
  </example>


  <p>Probablemente esté familiarizado con líneas como la 1 de guiones
  hechos en shell o perl. Esto significa que el fichero debe
  ejecutarse con make. 
  
  <p>Las líneas 12 a la 19 describen la regla de construcción (en inglés: build,
  n. del t.)  que ejecuta el Makefile del
  propio programa para compilarlo.

  <p>Las cosas rara vez funcionan perfectamente la primera vez, así
  que se especifica la regla de limpieza (del inglés 'clean', n. del
  t.) en las líneas 18-26 que limpian cualquier resto innecesario
  dejado de intentos previos fallidos.

  <p>La regla 'clean' (limpia, n. del t.), como se especifica en las 
  líneas 21-29, limpia cualquier binario innecesario o cosas automáticamente
  generadas, dejadas después de la construcción del paquete. Esta regla
  debe funcionar en todo momento (incluso cuando el árbol de fuentes 
  <em>está</em> limpio!), así que por favor use las opciones que fuerzan
  a hacer cosas (por ejemplo para rm, sería `-f'), o ignore los valores
  devueltos (con un `-' al principio de la orden).

  <p>El proceso de instalación, la regla 'install', comienza en la
  línea 31. Básicamente ejecuta la regla `install' del Makefile del
  programa, pero lo instala en el directorio `pwd`/debian/tmp -
  esto es por lo que especificamos $(DESTDIR) como el directorio
  raíz de instalación del Makefile de gentoo.

  <p>Como sugiere el comentario, la regla 'binary-indep', en la línea
  41, se usa para construir paquetes independientes de arquitectura. Como
  no tenemos ninguno aquí no se hará nada. Si su paquete es del tipo
  `Architecture: all' necesita incluir todas las órdenes para crear el
  paquete bajo esta regla, y dejar las siguiente regla (`binary-arch') 
  vacía en su lugar.

  <p>Lo siguiente es en la regla 'binary-arch', en las líneas 45 a 73, en
  la que ejecutamos varias utilidades diversas del paquete debhelper
  que nos permiten hacer operaciones variadas en nuestro paquete para
  que cumpla la política de Debian.
  
  <p>Los nombres comienza con dh_ y el resto es la descripción de lo 
  que la utilidad en particular realmente hace. Es todo más o menos
  auto-explicativo, pero a continuación se indica lo que
  realmente hace cada pequeña utilidad:


  <list>
  <item><manref name="dh_testdir" section="1"> comprueba que estás en
  el directorio correcto (esto es el directorio raíz de la distribución 
  de las fuentes),
  <item><manref name="dh_testroot" section="1"> comprueba que tienes
  permisos de superusuario que son necesarios para las reglas
  binary* y clean (root, n. del t.),
  <item><manref name="dh_installdirs" section="1"> crea los
  directorios que se mencionan en el fichero 'dirs' [no existe aquí],
  <item><manref name="dh_installdocs" section="1"> copia la
  documentación al directorio debian/tmp/usr/doc/gentoo,
  <item><manref name="dh_installmenu" section="1"> copia el fichero
  'menu' a
  debian/tmp/usr/lib/menu/gentoo,
  <item><manref name="dh_installmanpages" section="1"> copia todas las
  páginas de manual que puede encontrar en el paquete fuente en el paquete
  (cuidado esto es DWIM),
<!-- ¿qué es DWIM? jfs -->
  <item><manref name="dh_installchangelogs" section="1"> copia los
  ficheros 'changelogs' (registros de cambios, n. del t.) en el directorio
  debian/tmp/usr/doc/gentoo,
  <item><manref name="dh_installinit" section="1"> copia los guiones init.d
  [aquí no tenemos ninguno],
  <item><manref name="dh_installcron" section="1"> copia los  guiones
  de crontab a
  debian/tmp/etc/cron.* [aquí no hay ninguno],
  <item><manref name="dh_installexamples" section="1"> copia los
  ficheros de ejemplos a 
  debian/tmp/usr/doc/gentoo/examples [aquí no hay ninguno],
  <item><manref name="dh_strip" section="1"> elimina las cabeceras de
  depuración de los ficheros ejecutables para hacerlos más pequeños,
  <item><manref name="dh_compress" section="1"> comprime con gzip
  las páginas de manual y los ficheros de documentación que sean más
  grandes de 4 kb, 
  <item><manref name="dh_fixperms" section="1"> comprueba y arregla
  permisos no válidos en el directorio debian/tmp,
  <item><manref name="dh_suidregister" section="1"> adapta los
  ficheros para que se registren los ejecutables con 'setuid' con
  <manref name="suidregister" section="8"> [aquí no hay ninguno],
  <item><manref name="dh_installdeb" section="1"> copia los ficheros
  relativos al sistema de paquetes en el directorio debian/tmp,
  <item><manref name="dh_makeshlibs" section="1"> genera el fichero de
  dependencias con librerías compartidas [aquí no existe],
  <item><manref name="dh_builddeb" section="1"> construye el paquete.
  <item><manref name="dh_installedeb" section="1"> copia los ficheros
  relacionados con los paquetes (por ejemplo los guiones del desarrollador)
  bajo el directorio debian/tmp/DEBIAN,
  <item><manref name="dh_shlibdeps" section="1"> calcula las
  dependencias de los ejecutables y librerías con las librerías compartidas ,
  <item><manref name="dh_gencontrol" section="1"> genera e instala el
  fichero de control,
  <item><manref name="dh_md5sums" section="1"> genera las sumas de
  chequeo MD5 para todos los ficheros del paquete.
  </list>

  <p>Para información más completa de lo que hacen cada uno de estos
   guiones dh_* , y qué otras opciones tienen, por favor lea 
   sus páginas de manual respectivas.
  Hay otros guiones con la misma
  nomenclatura (dh_*) que no se han mencionado aquí, pero pueden serle 
  útiles. Si los necesita, lea la documentación de debhelper.

  <p>Las líneas  70 a la 74 son sólo algunas necesidades sobre las que
  puede leer en el manual de make. Por ahora, no es importante
  conocerlas.

  <p>La parte importante sobre el fichero de reglas creado por dh_make
  es que sólo es una sugerencia. Funcionará para paquetes simples pero
  para los más complicados no se asuste y modifique, borre o añada a
  éste para ajustarse a sus necesidades. Esto se aplica de forma
  especial a las secciones binary-arch, donde debería comentar las
  líneas que llaman a funciones que no necesita, en este caso he
  comentado las líneas sobre testversion, emacsen, pam, init, cron, manpages, 
  info, undocumented, suidregister, makeshlibs, and perl, 
  simplemente porque gentoo no las
  necesita. Sólo he añadido en la línea 60, `FIXES', porque este es el
  nombre del fichero de cambios de las fuentes.

  <p>La única cosas que no debe cambiar son los nombre de las
  reglas, porque es necesario que se llamen de esta forma para que
  todas las herramientas que las usan utilicen estos mismos nombres,
  esto se obliga en nuestro manual de Empaquetamiento.

  <p>Las últimas dos líneas (junto con otras que no se explican) son
  cosas más o menos necesarios, sobre las que puede leer en el manual
  de make, y en el Manual de Empaquetamiento. Por ahora no necesita saberlas.

  <chapt id="dother">Otros ficheros en el directorio  debian/.

  <p>Verá que existen otros ficheros en el subdirectorio debian/, muchas
  de las cuales tendrán el sufijo `.ex', que indica que son ejemplos.
  Si quieres o deseas usar cualquiera de éstas, lee la información
  relativa (pista: Manual de Política), renombre-lo para eliminar el 
  sufijo `.ex' , y modifíquelo y el fichero de reglas si fuera necesario.
  Algunos de estos ficheros, los más usados, se explican en las siguientes
  secciones.

  <sect id="readdeb">README.debian (LEEME.debian, n. del t.)

  <p>Cualquier detalle extra en discrepancias entre el programa
  original y su versión debianizada debería estar documentada
  aquí. Dh_make crea una por defecto, y éste es su aspecto:


  <example>
  gentoo for DEBIAN
  ----------------------

  &lt;possible notes regarding this package - if none, delete this file&gt;

  Josip Rodin &lt;jrodin@jagor.srce.hr&gt;, Wed, 11 Nov 1998 21:02:14 +0100
  </example>

  <p>Dado que no tenemos que poner nada aquí - está permitido
  borrarla. Por cierto, sí, puede renombrar el fichero a README.Debian
  :-) 

  <sect id="conffiles">conffiles

  <p>Una de las cosas más molestas de los programas es  cuando 
  pasas mucho tiempo y esfuerzo adaptando un programa y una
  actualización destroza todos tus cambios. Debian arregla este
  problema marcando los ficheros de configuración de forma que cuando
  actualizas un paquete no se le pregunta si desea mantener la nueva
  configuración o no. Lo consigue poniendo la ruta completa a cada
  fichero de configuración (se encuentran generalmente en /etc) una
  por línea, en un fichero llamado 'conffiles'.


  <p>Gentoo tiene un fichero de configuración, /etc/gentoorc, y
  meteremos éste en el fichero 'conffiles'. No es necesario tener este
  último  fichero si su programa no tiene ningún fichero de configuración.

  <sect id="dirs">dirs

  <p>Este fichero especifica los directorios que se necesitan pero que
  por alguna razón no crea un proceso de instalación normal (make install).

  Por defecto, tiene éste aspecto:
  <p><example>
  1 usr/bin
  2 usr/sbin
  </example>

  <p>Observe que la barra precedente no está incluida. Normalmente lo
  cambiaríamos para gentools a algo así:
  <p><example>
  1 usr/X11R6/bin
  2 usr/X11R6/man/man1
  </example>

  pero estos directorios ya se crean en el Makefile, así que no
  necesitaremos este fichero y lo podremos borrar.
  <sect id="manpage">manpage.1.ex

  <p>Los ficheros que terminan en *.ex son ejemplos de cómo añadir ese
  tipo de soporte en el paquete. Si usa uno de ellos, editelo y
  elimine la extensión .ex. Si no lo quiere usar, simplemente borrelo.

  <p>Su programa debería tener una página de manual. Si no la tiene,
  éste es un esqueleto que puede rellenar. Lea las páginas de manual
  para <manref name="man" section="7"> para una breve descripción de
  cómo crear una página de manual. Asegúrese de renombrar este fichero
  al nombre del programa y modificar la extensión para indicar la
  sección a la que debería ir. Aquí hay una corta lista:


  <p><example>
  Section |     Deguiónion        |     Notes
     1     Comandos de Usuario       Programas ejecutables o guiones.
     2     Llamadas al Sistema       Funciones dadas por el kernel.
     3     Llamadas a Librerías      Funciones dadas por las librerías del sistema.
     4     Ficheros Especiales      Generalmente se encuentra en /dev
     5     Formatos de Fichero      Por ejemplo, el formato del /etc/passwd
     6     Juegos                   U otros programas frívolos.
     7     Paquetes de Macros       Como las macros de man.
     8     Administración del Sist. Programas que sólo ejecuta el superusuario.
     9     Rutinas del Kernel      Llamadas al sistema no estándar.
  </example>
  
  <p>Así que la página de manual de gentoo debería llamarse gentoo.1,
  o gentoo.1x porque es un programa de X11. Cómo no había página de
  manual en las fuentes originales la escribí del ejemplo.

  <sect id="menu">menu.ex

  <p>Los usuarios de X Windows tendrán un gestor de ventanas con menús
  que pueden adaptarse para lanzar programas. Si tienen instalado el
  paquete de menu de Debian, se creará un conjunto de menús para cada
  programa del sistema para ellos. No se exige en la política de
  Debian, pero los usuarios seguramente lo apreciarán. Podemos añadir
  a Gentoo a los menús editando este fichero. Aquí está el fichero que
  dh_make crea por defecto:
  
  <p><example>
  ?package(gentoo):needs=X11|text|vc|wm section=Apps/vea-manual-menu\
    title="gentoo" command="/usr/bin/gentoo"
  </example>

  <p>El primer campo especifica qué tipo de interfaz necesita el
  programa (esto es, texto o X11). La siguiente es el menu y submenu
  dónde debería aparecer. La lista actual de secciones está en 
 /usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1
  El  tercero es el nombre del programa. El cuarto es el icono para el
  programa o nada si no hay ninguno. El quinto es el texto que
  aparecerá en el menu. Finalmente, el sexto es la orden que ejecuta 
  el programa.

  <p>Ahora cambiaremos la entrada de menu a ésta:
  <p><example>
  ?package(gentoo):needs=X11 section=Apps/Misc \
    title="gentoo" command="/usr/X11R6/bin/gentoo"
  </example>

  <P>Vea <manref name="menufile" section="5">, <manref name="update-menus" section="1"> y /usr/share/doc/debian-policy/menu-policy.html/ para más información.

  <sect id="watch">watch.ex

  <p>Puede usar este fichero, junto con los programas
<manref name="uscan" section="1">
  y <manref name="uupdate" section="1"> (en el paquete devscripts)
  para vigilar el servidor de donde obtuvo las fuentes originales.


 <p>Esto es lo que he puesto yo:

  <p><example>
  # watch control file for uscan
  # Site		Directory	Pattern			Version	Guión
  ftp.obsession.se	/gentoo		gentoo-(.*)\.tar\.gz	debian	uupdate
  </example>

  <p>Pista: conectese a Internet, e intente ejecutar el programa
  "uscan" en el directorio donde ha creado el fichero. Vea la página 
  de manual para más detalles.

  <sect id="doc-base">ex.doc-base

  <p>Si su paquete tiene documentación en HTML o de otro tipo (excepto 
  páginas de manual y documentos info), debería usar el fichero `doc-base' 
  para registrarlo para que el usuario pueda encontrarlo con por ejemplo
  <manref name="dhelp" section="1"> o
  <manref name="dwww" section="1">.

  <p>Este es el aspecto del fichero doc-base:
  <p><example>
  Document: gentoo
  Title: Gentoo Manual
  Author: Emil Brink
  Abstract: This manual describes what Gentoo is, and how it can be used.
  Section: Apps/Tools

  Format: HTML
  Index: /usr/share/doc/gentoo/html/index.html
  Files: /usr/share/doc/gentoo/html/*.html
  </example>

  <p>Para información sobre el formato del fichero, vea
 <manref name="install-docs" section="8">
  y el manual doc-base en /usr/doc/doc-base/doc-base.html/index.html.


  <sect id="maintguiones">postinst.ex, preinst.ex, postrm.ex, prerm.ex

  <p>Estos ficheros se llaman guiones de gestión, y debería intentar
  evitarlos si puede porque son demasiados complejos. Para más
  información lea el Manual de Empaquetamiento.

  <p>Por ahora, debería intentar evitar editar manualmente estos guiones
  si puede porque suelen hacerse muy complejos. Para más información lea
  el Manual de Empaquetamiento (sección 6) y eche un vistazo a los ejemplos 
  dados por dh_make.

  <p>Ahora estamos preparados para construir el paquete.

  <chapt id="final">Pasos Finales

  <sect id="build">Construir el paquete.

  <p>Entre en el directorio principal de  y ejecute el siguiente
  comando:

  <p><example>
  dpkg-buildpackage -rfakeroot
  </example>

  <p>Esto hará todo por usted, sólo tendrá que dar su clave secreta
  PGP, dos veces. Una vez haya hecho esto, verá cuatro nuevos ficheros
  en el directorio anterior (~/debian/):

  <p><list>
  <item><em>gentoo_0.9.12-1_i386.deb</em>
  <p>es el paquete binario completo. Puede usar dpkg o dselect para
  instalar o eliminar éste como cualquier otro paquete.


  <item><em>gentoo_0.9.12.orig.tar.gz</em>
  <p>Este es el código fuente original empaquetado de forma que si alguien
  quiere recrear su paquete desde cero puede hacerlo. O si alguien no
  está usando el sistema de paquetes de Debian quiere descargarse las
  fuentes y compilarlo manualmente.


  <item><em>gentoo_0.9.12-1.dsc</em>
  <p>Este es un sumario de los contenidos del código fuente. Este
  fichero es generado con el fichero gentoo-0.9.12/debian/control y se
usa cuando se descomprime las fuentes con <manref name="dpkg-source"
section="1">. Éste fichero está firmado con PGP de forma que cualquier
puede estar seguro de que es realmente suyo.

  <item><em>gentoo_0.9.12-1.diff.gz</em>
  <p>Este fichero comprimido contiene todos y cada uno de los cambios que
  hizo al código fuente original, en un formato conocido como "diff unificado".
  Está hecho y lo utiliza 
  <manref name="dpkg-source" section="1">.


  <item><em>gentoo_0.9.12-1_i386.changes</em>
  <p>Este fichero describe todos los cambios hechos en la revisión actual
  del paquete, y se usa por los programas de gestión del archivo FTP para
  instalar los paquetes binarios y fuentes en él. Se genera parcialmente
  gracias al fichero gentoo-0.9.12/debian/changelog y el fichero .dsc.

  <p>Mientras sigue trabajando en el paquete, cambiará su
  comportamiento y se le añadirán nuevas funciones. Las personas que
  descarguen su paquete pueden mirar este fichero y ver qué ha
  cambiado.
  Las largas listas de números son las sumas MD5 para los
  ficheros. Las personas que descarguen estos ficheros pueden probarlos
  con  <manref name="md5sum" section="1"> y si los números no
  coinciden, sabrán que el fichero está corrupto o ha sido
  modificado. Éste fichero está firmado con PGP de forma que 
  cualquiera puede estar aún más seguro de que es realmente suyo.

  </list>

  <p>Con un paquete grande, puede que no quiere recompilar desde cero
  cada vez que toca un detalle en el fichero debian/rules. Para propósitos
  de prueba, puede hacer un fichero .deb sin necesidad de recompilar 
  las fuentes originales de esta forma:

  <p><example>
  fakeroot debian/rules binary
  </example>

  <p>Sólo asegúrese de que su regla `install' *no* tiene un hijo `install-stamp'
  (éste es el valor por defecto actualmente), para asegurarse de que se
  ejecuta `dh_clean -k' cada vez. Y una vez que ha terminado con los 
  cambios, no se olvide de reconstruir el paquete siguiendo el procedimiento
  habitual, para poder enviarlo de la forma correcta.
  

  <sect id="checkit">Comprobar su paquete para encontrar errores.


  <p>Ejecute <manref name="lintian" section="1"> sobre su fichero de
  cambios .changes; éste programa comprobará muchos errores comunes al
  empaquetar. El comando es:
<!-- en qué paquete está lintian? -->
  
  <p><example>
  lintian -i gentoo_0.9.12-1_i386.changes
  </example>
  
  <p>Por supuesto, cambia el nombre de fichero con el nombre del fichero
  de cambios generado por su paquete.
  Si parece que hay algunos errores (líneas que comienzan por E:),
  lea la explicación (líneas N:), corrija errores, y reconstruya como
  se describe en <ref id="build">. Si hay líneas que comienzan con W:, son sólo
  avisos (warnings, n. del t.), así que puede estar seguro de que su
  paquete está bien (pero seguramente necesita algún ajuste fino).

  <p>Observe que puede construir el paquete con dpkg-buildpackage y 
  ejecutar lintian todo de una sola vez con <manref name="debuild" section="1">.

  <p>Mire dentro del paquete usando un gestor de ficheros como <manref
name="mc" section="1">, o descomprimalo en algún punto temporal usando
 <manref name="dpkg-deb" section="1">. Esté atento a ficheros innecesarios
  extra y algunas otras cosas que no se limpiaron. Pista: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz` le dará una lista de sus cambios/modificaciones a las
  fuentes, y `dpkg-deb -c gentoo_0.9.12-1_i386.deb` listará los ficheros
  en el paquete.

  <p>Instale el paquete para probarlo usted mismo, esto es usando la orden
  <manref name="debi" section="1"> como superusuario. Intente instalarlo y
  ejecutarlo en otras máquinas distintas de la suya y esté atento 
  para detectar errores o avisos tanto en la instalación como en la ejecución
  del programa.

  <p>Más tarde, cuando construya una nueva versión, debería hacer lo
  siguiente para asegurar la actualización básica del paquete:

  <list>
  <item>actualízese de la versión previa (y de la versión en la última
  versión de Debian),
  <item>vuelva a la versión anterior de nuevo,
  <item>instale el paquete como uno nuevo (esto es, sin ninguna
  versión instalada previamente),
  <item>desintálelo, reinstálelo y luego purgelo.
  </list>

  <sect id="upload">Enviando su paquete.

  <p>Ahora que ha probado su nuevo paquete en profundidad, necesitará
  enviar estos ficheros a master.debian.org, usando <manref
  name="dupload" section="1">.
  Primero debe editar el fichero de configuración de dupload, ~/.dupload.conf.
  Copie
  los valores por defecto del /etc a su directorio personal:

  Puede poner algo así:
  <p><example>
  package config;
  $default_host = "master";
  
  $cfg{"master"}{"method"} = "scpb";
  $cfg{"master"}{"login"} = "joy";
  $cfg{"master"}{"visibleuser"} = "jrodin";
  $cfg{"master"}{"visiblename"} = "jagor.srce.hr";
  $cfg{"master"}{"fullname"} = "Josip Rodin";
  
  $cfg{"non-us"}{"method"} = "scpb";
  $cfg{"non-us"}{"login"} = "joy";
  $cfg{"non-us"}{"visibleuser"} = "jrodin";
  $cfg{"non-us"}{"visiblename"} = "jagor.srce.hr";
  $cfg{"non-us"}{"fullname"} = "Josip Rodin";
  
  1;
  </example>

  <p>Por supuesto, cambie mis valores personales a los suyos, y lea
  la página de manual <manref name="dupload.conf" section="5"> para
  comprender qué significa cada una de estas opciones.


  <p>Entonces conecte con su proveedor de Internet, asegurese una vez
  mas de que está en el directorio /usr/local/src/gentoo, y ejecute la
  orden:

  
  <p><example>
  dupload --to master gentoo_0.9.12-1_i386.changes
  </example>

  <p>Dupload comprobará que las sumas md5 coinciden con aquellas en el
  fichero .changes, y le avisará de rehacer el paquete como se describe
  en <ref id="build"> para poder enviarlo correctamente.

  <p>Dupload le preguntará su password en master.debian.org, envíe sus
  paquetes, y hará un pequeño anuncio sobre su envío en 
  <email/debian-devel-changes@lists.debian.org/.

  <p>Si vive en Europa, puede usar otras colas de envío en lugar de
  master. Para más detalles mire lea <manref name="dupload" section="1">,
  <manref name="dupload" section="5"> y la Referencia del
  Desarrollador.

  <sect id="update">Actualizar su paquete

  <p>Supongamos que se ha registrado un informe de bug contra su
  paquete, #54321, y que describe un problema que puede solucionar.
  Para crear una nueva revisión del paquete, necesita:

  <list>
  <item>Corregir, por supuesto, el problema en las fuentes del paquete.

  <item>Añadir una nueva revisión en el fichero de cambios (changelog, n.
  del t.) de Debian, con `dch -i`, e incluir una breve descripción del
  error y su solución seguido por: "Closes: #54321". De esta forma,
  el informe del error será automágicamente cerrado por los programas
  de gestión del archivo en el momento en que su paquete se acepte en e
  el archivo de Debian.

  <item>Repita lo que hizo en <ref id="build">, <ref id="checkit">,
  y <ref id="upload">. La diferencia es que esta vez ,las fuentes
  originales del archivo no serán incluidas, dado que no han cambiado y
  ya existen en el archivo de Debian.
  </list>

  <p>Ahora consideremos una situación diferente, algo más complicada:
  una versión nueva de las fuentes originales ha salido, y, por supuesto,
  desea empaquetarla. Debe hacer lo siguiente:

  <list>
  <item>Descargar las nuevas fuentes y ponerlas en un archivo tar (esto 
  es llamado
  `gentoo-0.9.13.tar.gz') un directorio por encima de su antiguo árbol de 
  fuentes (por ejemplo ~/debian/).

  <item>Entre en el antiguo directorio y ejecute:

  <example>
  uupdate -u gentoo-0.9.13.tar.gz
  </example>

  Por supuesto, reemplace este nombre de fichero con el nombre de las 
  fuentes de su programa. <manref name="uupdate" section="1"> renombrará
  apropiadamente este fichero tar, intente aplicar los cambios de su fichero
  .diff.gz previo y actualizar el nuevo fichero debian/changelog.

  <item>Cambie el directorio a `../gentoo-0.9.13', el nuevo directorio
  fuente del paquete, y repita la operación que hizo en <ref id="build">,
  <ref id="checkit">, y
  <ref id="upload">.
  </list>

  <p>Observe que si ha puesto el fichero `debian/watch' como se describe
  en
  <ref id="watch">, puede ejecutar automáticamente
  <manref name="uscan" section="1"> para ver fuentes revisadas, descargarlas,
  y ejecutar uupdate.


  <sect id="whereishelp">Dónde pedir ayuda.

  <p>Antes de que decida preguntar en lugares públicos, por favor
  simplemente RTFM ("Lea el Jodido Manual", n. del t.). Esto incluye
  documentación en /usr/share/doc/dpkg, /usr/share/doc/debian,
  /usr/share/doc/package/* y las páginas de man/info para todos los
  programas mencionados en este artículo. Cuando reciba un aviso de
  fallo (bug report, n. del t.) (sí, avisos de fallos ¡de verdad!)
  sabrá que es el momento de indagar en el
  <url name="Sistema de Seguimiento de Fallos de Debian"
  id="http://www.debian.org/Bugs/"> y leer la documentación allí, para
  poder tratar los informes de forma eficiente.

  <p>Si se une a la lista de distribución de Mentores de Debian en
  <email/debian-mentors@lists.debian.org/ puede unirse con
  desarrolladores de Debian con experiencia que le ayudarán con las
  preguntas que pueda tener. Puede subscribirse a ella enviando un
  correo electrónico a 
  <email/debian-mentors-request@lists.debian.org/ con la palabra 
  'subscribe' en el tema del mensaje.


  <p>Si aún tiene preguntas, hagalas en la lista de distribución de
  Desarrolladores de Debian en
  <email/debian-devel@lists.debian.org/. Puede subscribirse a ella
  enviando un correo electrónico a
  <email/debian-devel-request@lists.debian.org/ con la palabra
  'subscribe' en el tema del mensaje. Si ya es un desarrollador de
  Debian debería estar suscrito a ella de todas formas.

  <p>Aunque todo funcionara bien, es el momento de empezar a
  rezar. ¿Por qué? Por que en sólo unas horas (o días) usuarios de
  todo el mundo empezarán a usar su paquete, y si cometió algún error
  crítico será bombardeado por correos de centenares de usuarios
  furiosos de Debian.... Sólo bromeaba :-)

  <p>Relájese y prepárese para recibir reportes de fallos, porque hay
  mucho más trabajo que hacer antes de seguir completamente las
  políticas de Debian (una vez más lea la <em>documentación real</em>
  para detalles). ¡Buena suerte!

 </book>

</debiandoc>
