Hola
Gracias a todos por las aportaciones.
Aquí va rehecho, con la aportación de Martín y para soname lo que he
hecho es ponerle comillas.
Un saludo
Laura Arjona
#use wml::debian::template title="Distribución <q>testing</q> de Debian" BARETITLE=true
#include "$(ENGLISHDIR)/releases/info"
#use wml::debian::translation-check translation="1.31"

<p>Si desea información básica, orientada al usuario, sobre la
distribución <q>en pruebas</q> o <q>testing</q>, diríjase a
<a href="$(DOC)/manuals/debian-faq/ch-ftparchives#s-testing">las FAQ de Debian</a>.</p>

<p>Algo que es importante que tengan en cuenta tanto los usuarios
habituales como los desarrolladores de testing, es que sus actualizaciones
de seguridad <strong>no son gestionadas por el equipo de
seguridad</strong>. Si desea más información lea por favor las <a
href="../security/faq#testing">FAQ del equipo de seguridad</a>.</p>

<p>Esta página cubre principalmente los aspectos de <q>testing</q> importantes
para desarrolladores de Debian.</p>

<h2>Cómo funciona <q>testing</q></h2>

<p>La distribución <q>testing</q> se genera de forma automática. Se origina
partiendo de la distribución <q>unstable</q> mediante una serie de scripts que
intentan pasar de una a otra paquetes sobre los que sea razonable pensar
que carecen de fallos críticos para la publicación. Lo hacen de manera que las dependencias
de los otros paquetes en <q>testing</q> se puedan satisfacer siempre.</p>

<p>Un paquete (una versión en particular) pasará a <q>testing</q> cuando
satisfaga todos los siguientes criterios:</p>

<ol>
<li>Debe haber estado en <q>unstable</q> 10, 5 o 2 días, dependiendo de la
urgencia marcada al enviarlo;</li>

<li>Debe estar compilado y al día en todas las arquitecturas en las que
ha sido compilado anteriormente en <q>unstable</q>;</li>

<li>No debe tener fallos críticos de publicación («release-critical 
bugs») a menos que ya estén presentes en la versión actualmente en
<q>testing</q> (más adelante tiene <a href="#faq">más información</a>);</li>

<li>Todas sus dependencias deben poder ser satisfechas <em>bien</em>
mediante paquetes ya en <q>testing</q>, <em>bien</em> mediante el grupo de
paquetes que va a ser instalado al mismo tiempo;</li>

<li>La operación de instalar un paquete en <q>testing</q> no debe afectar
adversamente a ningún paquete que ya esté en <q>testing</q> 
(Más adelante tiene <a href="#faq">más información</a>).</li>
</ol>

<p>De un paquete que satisface las tres primeras condiciones se dice que
es un <q>Candidato válido</q>.</p>

<p>El script de actualización muestra el momento en que cada paquete
pasará de <q>unstable</q> a <q>testing</q>. La salida es doble:</p>

<ul>
<li>Las <a href="http://ftp-master.debian.org/testing/update_excuses.html";>\
excusas en la actualización</a>
[<a href="http://ftp-master.debian.org/testing/update_excuses.html.gz";>comprimidas
con gzip</a>]:
lista de las versiones de todos los paquetes candidatos y el estado
básico de su propagación a <q>testing</q>; es más corta y tiene mejor
aspecto que
</li>
<li>La <a href="http://ftp-master.debian.org/testing/update_output.txt";>\
salida de actualización</a>
[<a href="http://ftp-master.debian.org/testing/update_output.txt.gz";>comprimida
con gzip</a>]:
constituye la salida completa y sin tratar de los scripts de
<q>testing</q> según examinan a los candidatos.
</li>
</ul>

<h2><a name="faq">Preguntas frecuentes</a></h2>

# Nota a los traductores: estos dos primeros elementos son casi los mismos que
# http://www.debian.org/doc/manuals/developers-reference/pkgs#faq

<h3><q>¿Qué son los fallos críticos, y cómo se cuentan?</q></h3>

<p>Todos los fallos de importancia alta se consideran de manera predeterminada <em><a
href="http://bugs.debian.org/release-critical/";>fallos críticos a efectos
de publicación</a></em>; actualmente lo son: <strong>critical</strong>,
<strong>grave</strong> y <strong>serious</strong>.</p>

<p>Se presume que tales fallos tienen cierto impacto en las posibilidades
de que el paquete sea distribuido con la versión estable de Debian: en
general, si un paquete tiene un fallo crítico abierto, no pasará a
<q>testing</q> y en consecuencia no saldrá en <q>stable</q>.</p>

<p>Para el conteo de fallos de <q>testing</q> se consideran todos los
fallos críticos que correspondan a combinaciones de <tt>paquete/versión</tt>
que están disponibles en <q>testing</q> para una arquitectura de las que se publican.

<h3><q>¿Cómo puede ser que instalar un paquete en <q>testing</q> estropee otros
paquetes?</q></h3>

<p>La estructura de los archivos de distribución es tal que sólo pueden
contener una versión de un paquete; un paquete se define por su nombre.
Por lo tanto, cuando se instala el paquete fuente <tt>acmefoo</tt> en
<q>testing</q>, junto con sus paquetes binarios <tt>acme-foo-bin</tt>,
<tt>acme-bar-bin</tt>, <tt>libacme-foo1</tt> y <tt>libacme-foo-dev</tt>,
se elimina la versión antigua.</p>

<p>Sin embargo, puede que la versión anterior proporcionase un paquete
binario con otro «soname» para librerías, como <tt>libacme-foo0</tt>. Borrar
<tt>acmefoo</tt> eliminará <tt>libacme-foo0</tt>, lo cual dejará sin
posibilidad de instalación a los paquetes que dependieran de él.</p>

<p>Evidentemente, esto afecta principalmente a paquetes que proporcionen
conjuntos cambiantes de paquetes binarios en diferentes versiones
(principalmente librerías). Sin embargo, también afecta a paquetes sobre
los que haya declarados dependencias versionadas de los tipos ==, &lt;= o
&lt;&lt;.</p>

<p>Cuando el conjunto de paquetes binarios proporcionados por un paquete
fuente cambia de esta manera, todos los paquetes que dependen de los
antiguos paquetes binarios tendrán que ser actualizados para que dependan en
su lugar de los nuevos. Como instalar tal paquete fuente en <q>testing</q>
rompe los paquetes que dependen de él en <q>testing</q>, habrá que tomar
algunas precauciones; todos los paquetes dependientes deben ser
actualizados y preparados para ser instalados de manera que no se
<q>rompan</q> y, una vez todo esté preparado, normalmente se precisa
intervención manual del responsable de publicación o un asistente.</p>

<p>Si está teniendo problemas con grupos complicados de paquetes como
éste, póngase en contacto con debian-devel o debian-release para pedir
ayuda.</p>

<h3><q>¡Aún no lo entiendo! Los scripts de <q>testing</q> dicen que este
paquete es un candidato válido, pero sigue sin entrar en
<q>testing</q>.</q></h3>

<p>Esto suele pasar cuando de alguna manera, directa o indirecta, instalar
el paquete pueda afectar a otro.</p>

<p>Recuerde considerar las dependencias de su paquete. Suponga que el
paquete depende de libtool, o libltdl<var>X</var>. El paquete no entrará
en <q>testing</q> hasta que la versión adecuada de libtool esté preparada para
entrar.</p>

<p>A su vez, esto no sucederá hasta que la instalación de libtool no rompa
las cosas que ya había en <q>testing</q>. En otras palabras, hasta que todos
los otros paquetes que dependan de libltdl<var>Y</var> (donde <var>Y</var>
es una versión anterior) hayan sido recompilados, y se hayan eliminado
todos los fallos críticos, etc, ninguno de estos paquetes entrará en
<q>testing</q>.</p>

<p>Aquí es donde es útil la <a href="http://ftp-master.debian.org/testing/update_output.txt";>\
salida textual</a>
(<a href="http://ftp-master.debian.org/testing/update_output.txt.gz";>comprimida con gzip</a>):
da pistas (aunque un poco breves) sobre los paquetes que podrían quedar
malparados al añadir un candidato válido a <q>testing</q> (vea el <a
href="$(DOC)/manuals/developers-reference/pkgs#details">\
Manual de referencia del Desarrollador de Debian para más detalles</a>).
</p>

<h3><q>¿Por qué a veces es difícil que entren en <q>testing</q> paquetes
<kbd>Architecture: all</kbd>?</q></h3>

<p>Si se ha de instalar un paquete <kbd>Architecture: all</kbd>, se debe
poder satisfacer sus dependencias en <strong>todas</strong> las
arquitecturas. Si depende de un cierto paquete que sólo compila en un
conjunto limitado de arquitecturas de Debian, entonces no pasará.</p>

<p>Sin embargo, por ahora <q>testing</q> ignorará la incapacidad de los
paquetes <kbd>Architecture: all</kbd> para instalarse en arquitecturas que
no sean i386. (<q>Es un hack apestoso y no estoy contento de haberlo hecho,
pero ahí está.</q> --aj)</p>

<h3><q>Mi paquete está bloqueado porque no está al día en alguna arquitectura.
¿Qué hago?</q></h3>

<p>Comprueba el estado de tu paquete en la
<a href="http://buildd.debian.org/build.php";>base de datos de
compilaciones</a>. Si el paquete no compila, queda marcado como
<em>failed</em>. Examina el registro de la compilación y corrige los
problemas causados por las fuentes de tu paquete.</p>

<p>Si compruebas que alguna arquitectura ha compilado la nueva versión del
paquete, pero sigue sin aparecer en la salida del script de <q>testing</q>,
tendrás que tener un poco más de paciencia hasta que el mantenedor del
buildd respectivo ponga los ficheros en el archivo de Debian.</p>

<p>Si nota que algunas arquitecturas no han compilado la nueva versión
del paquete, incluso aunque hayas enviado correcciones para fallos
previos, es probable que se deba a que esté marcado como <q>pendiente de
dependencias</q> (Dep-Wait). También puede ver la lista de los también
llamados
<a href="http://buildd.debian.org/stats/";>estados wanna-build</a> para
asegurarte.</p>

<p>Estos problemas se suelen corregir por sí mismos, pero si lleva
esperando mucho tiempo (digamos dos semanas, o más), indíqueselo al
mantenedor del buildd respectivo si su dirección está documentada en la
<a href="$(HOME)/ports/">página web de adaptaciones</a>, o en la lista de
correo de esa adaptación.</p>

<h3><q>¿Hay alguna excepción? Estoy seguro de que <tt>acmefoo</tt> entró
en <q>testing</q> aunque no satisfacía todos los requisitos.</q></h3>

<p>El <q>release manager</q> puede saltarse las reglas de dos maneras:</p>

<ul>
  <li>Puede decidir que la situación de inestabilidad causada por una nueva
      librería sea para mejor en lugar de para peor, y la deje entrar
      junto con su flotilla de dependientes.</li>
  <li>También puede eliminar de forma manual de <q>testing</q> paquetes que
      pudieran estar mal, de manera que se puedan instalar nuevas
      cosas.</li>
</ul>

<h3><q>¿Podrías darme un ejemplo real y no trivial?</q></h3>

<p>Aquí va uno: cuando se instala en <q>testing</q> el paquete fuente
<tt>apache</tt>, junto con sus paquetes binarios <tt>apache</tt>,
<tt>apache-common</tt>, <tt>apache-dev</tt> y <tt>apache-doc</tt>, se
elimina la versión antigua.</p>

<p>Sin embargo, todos los paquetes de módulos de Apache dependen de
<code>apache-common (&gt;= <var>algo</var>), apache-common (&lt;&lt;
<var>algo</var>)</code>, de manera que este cambio rompe todas esas
dependencias. Consecuentemente, se necesita recompilar todos los módulos
con la nueva versión de Apache para poder actualizar <q>testing</q>.</p>

<p>Vamos a elaborarlo un poco más: después de haber actualizado en
unstable todos los módulos para que funcionen con el nuevo Apache, los
scripts de <q>testing</q> prueban <tt>apache-common</tt> y encuentran que rompe
todos los módulos de Apache porque tienen la dependencia <code>Depends:
apache-common (&lt;&lt; <var>la versión actual</var>)</code>, y entonces
prueban <tt>libapache-<var>foo</var></tt> para encontrarse conque no se
instalará porque tiene <code>Depends: apache-common (&gt;= <var>la nueva
versión</var>)</code>.</p>

<p>Sin embargo, más tarde aplicarán una lógica diferente (a veces mediante
intervención manual): ignorarán el hecho de que <tt>apache-common</tt>
rompe cosas, y seguirán mirando las cosas que funciona; si después de hacer
todo lo que podemos sigue sin funcionar, muy mal, pero
<strong>quizá</strong> funcione. Más tarde comprobarán todos los paquetes
<tt>libapache-<var>foo</var></tt> aleatorios y verán que sí que
funcionan.</p>

<p>Después de haberlo probado todo, comprueban cuántos paquetes han quedado
en mal estado, y comparan para ver si es mejor o peor que la situación
original y bien aceptan todo, o bien se olvidan del asunto. Se puede ver en
las líneas <q><code>recur:</code></q> de <tt>update_output.txt</tt>.</p>

<p>Por ejemplo:</p>

<pre>
         recur: [<var>foo</var> <var>bar</var>] <var>baz</var>
</pre>

<p>básicamente quiere decir <q>habiendo encontrado que <var>foo</var> y
<var>bar</var> lo hacen mejor, ahora estoy probando <var>baz</var> a ver
qué pasa, incluso sabiendo que rompe cosas</q>. Las líneas de
<tt>update_output.txt</tt> que empiezan con <q><code>accepted</code></q>
indican cosas que parece que harán que la situación mejore, y las líneas
<q><code>skipped</code></q> hacen que empeore.</p>

<h3><q>¡El fichero <tt>update_output.txt</tt> es completamente
ilegible!</q></h3>

<p>Eso no es una pregunta. ;-)</p>

<p>Veamos un ejemplo:</p>

<pre>
 skipped: cln (0) (150+4)
     got: 167+0: a-40:a-33:h-49:i-45
     * i386: ginac-cint, libginac-dev
</pre>

<p>Esto significa que si <tt>cln</tt> entra en <q>testing</q>,
<tt>ginac-cint</tt> y <tt>libginac-dev</tt> no podrán instalarse en
<q>testing</q> en i386. Tenga en cuenta que las arquitecturas se comprueban en
orden alfabético y que sólo aparecen los problemas de la primera
arquitectura que los tenga (es por eso que alpha aparece tan a
menudo).</p>

<p>La línea <q>got</q> incluye el número de problemas en <q>testing</q> en las
diferentes arquitecturas (hasta la primera arquitectura en la que
encuentra problemas, véase más adelante). El <q>i-45</q> significa que si
<tt>cln</tt> entrase en <q>testing</q>, quedarían 45 paquetes en i386 en estado
ininstalable. Algunas entradas antes y después de <tt>cln</tt> muestran
que hay 43 paquetes en ese estado en <q>testing</q> en i386 en ese momento.</p>

<p>La línea <q>skipped: cln (0) (150+4)</q> indica que todavía queda por mirar
150 paquetes tras éste antes de completar las comprobaciones de todos los
paquetes, y que ya se ha encontrado 4 que no se planea actualizar porque
romperán dependencias. El <q>(0)</q> es irrelevante, y puede ignorarlo.</p>

<p>Tenga en cuenta que se hacen diversas comprobaciones sobre todos los
paquetes en cada ejecución de un script <q>testing</q>.</p>

<p><em>Jules Bean se encargaba al principio de juntar las preguntas y
respuesta frecuentes.</em></p>
# Created: Sat Dec  8 12:44:29 GMT 2001

<h2>Información adicional</h2>

<p>Las siguientes páginas ofrecen información adicional sobre el estado actual de las pruebas y la migración de paquetes de inestable (unstable) a en pruebas (testing).

<ul>
  <li>Lista de paquetes binarios que están desactualizados en:
<a href="http://ftp-master.debian.org/testing/testing_outdate.txt";>testing</a>,
<a href="http://ftp-master.debian.org/testing/stable_outdate.txt";>stable</a> y
<li>Problemas con las dependencias en
<a href="http://qa.debian.org/debcheck.php?list=INDEX&amp;dist=testing";>testing</a>,
<a href="http://qa.debian.org/debcheck.php?list=INDEX&amp;dist=stable";>stable</a>
<li> Aquí tiene una sencilla <a href="http://release.debian.org/migration/";>interfaz web</a> que puede ayudarle a averiguar por que hay paquetes en pruebas que están retenidos.
</ul>

<p>Puede que esté interesado en leer un viejo <a
href="http://lists.debian.org/debian-devel-0008/msg00906.html";>correo
aclaratorio</a>. Su único fallo importante es que no tiene en cuenta el
<q>package pool</q>, porque James Troup lo implementó tras haber sido escrito
esto.</p>

<p>El código de testing está disponible en 
<a href="http://ftp-master.debian.org/testing/update_out_code/";>ftp-master</a>.</p>

<p><em>El crédito de la implementación de testing es para Anthony Towns.</em></p>

Responder a