<!-- -*- mode: sgml; mode: fold -*- -->
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [

<!ENTITY % aptent SYSTEM "apt.ent.es">
%aptent;

]>

<!-- 
(c) 2003 Software in the Public Interest
Esta traducción ha sido realizada por Rubén Porras Campo <nahoo@inicia.es>
y revisada por Javier Fernández-Sanguino <jfs@computer.org> 
Está basada en la página de manual original:
versión 1.5 del CVS de
/cvs/debian-doc/manpages/english/apt/apt_preferences.5.sgml
 -->

<refentry lang=es>
 &apt-docinfo;

 <refmeta>
   <refentrytitle>apt_preferences</>
   <manvolnum>5</>
 </refmeta>

 <!-- Man page title -->
 <refnamediv>
    <refname>apt_preferences</>
    <refpurpose>Fichero de preferencias de APT</>
 </refnamediv>

<RefSect1>
<Title>Descripción</Title>
<para>
El fichero de preferencias de APT <filename>/etc/apt/preferences</>
se puede usar para controlar las versiones de los paquetes seleccionados.
</para>

<para>Cuando el fichero &sources-list; contiene referencias a más de una
distribución (por ejemplo, <literal>estable</literal> y <literal>pruebas
</literal>). APT asigna una prioridad a cada versión disponible. 
Limitado por las dependencias, <command>apt-get</command> selecciona la versión
con mayor prioridad.
</para>

<para>El fichero de preferencias de APT modifica las prioridades asignadas por
APT, dando control al usuario sobre que ejemplar se seleccionará para la
instalación.
</para>
<para>
Puede estén disponibles varios ejemplares de la misma versión de un paquete
cuando el fichero &sources-list; contenga referencias a más de una fuente. En
este caso <command>apt-get</command> descarga el ejemplar que aparezca listado
primero en el fichero &sources-list;. El fichero de preferencias de APT no
modifica la elección del ejemplar, sólo la elección de la versión.
</para>
<RefSect2><Title>¿Cómo asigna APT las prioridades?</>

<para>Si no existe el fichero de preferencias o no hay ninguna entrada en éste
que se pueda aplicar a una determinada versión, se asigna a la versión la 
prioridad de la distribución a la que pertenece. Es posible seleccionar una 
distribución, &gt;&gt;distribución objetivo&lt;&lt; 
(n. t. del inglés <emphasis>target release</emphasis>), que recibe
una prioridad mayor que el resto. La distribución objetivo se puede definir
en la línea de órdenes al ejecutar <command>apt-get</command> o en el fichero
de configuración de APT (<filename>/etc/apt/apt.conf</filename>).
Por ejemplo,
<programlisting>
<command>apt-get install -t testing <replaceable>paquete</replaceable></command>
</programlisting>
<programlisting>
APT::Default-Release "stable";
</programlisting>
</para>

<para>
Si se ha especificado una distribución objetivo, APT usa el siguiente
algoritmo para establecer las prioridades de cada versión de un paquete. 
Asigna:

<variablelist>
<varlistentry>
<term>prioridad 100</term>
<listitem><simpara>a la versión instalada (si existe).</simpara></listitem>
</varlistentry>
<varlistentry>
<term>prioridad 500</term>
<listitem><simpara>a la versión que ni está instalada ni pertenece a la 
distribución objetivo.</simpara></listitem>
</varlistentry>
<varlistentry>
<term>prioridad 990</term>
<listitem><simpara>a las versiones que no están instaladas pero que
pertenecen a la distribución objetivo.</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
Si no se especifica ninguna distribución objetivo APT asigna prioridad 100 a
todas las versiones de los paquetes instalados y 500 al resto.
</para>

<para>
APT aplica las siguientes normas, expuestas por orden de precedencia, 
para determinar qué versión del paquete debe instalar.

<itemizedlist>
<listitem><simpara>Nunca instalar una versión anterior de un paquete en lugar 
de la instalada a menos que la prioridad de la versión disponible supere 1000 
(Dese cuenta que ninguna de las prioridades que asigna APT por omisión superan
1000, éstas prioridades sólo se pueden establecer mediante el fichero de 
preferencias. Tenga en consideración que instalar una versión anterior del
paquete puede ser peligroso).
</simpara></listitem>
<listitem><simpara>Instalar la versión de mayor prioridad.
</simpara></listitem>
<listitem><simpara>Si dos o más versiones tienen la misma prioridad, 
instala la más reciente (esto es, la que tiene un número de versión mayor).
</simpara></listitem>
<listitem><simpara>Si dos o más versiones tienen la misma prioridad y número de
versión, pero o bien difieren en su meta-información o se ha proporcionado la
opción <literal/--reinstall/ se instala la que no está instalada.
</simpara></listitem>
</itemizedlist>
</para>

<para>
Típicamente, la versión instalada del paquete (prioridad 100)
no es tan reciente como la disponible a través de &sources-list; 
(prioridad 500 o 990). Entonces el paquete se actualizará cuando se ejecute
<command>apt-get install <replaceable>algún-paquete</replaceable></command> o
<command>apt-get upgrade</command>.
</para>

<para>Rara vez la versión instalada de un paquete es <emphasis/más/ reciente
que cualquiera de las versiones disponibles. En éste caso no se instalará la
versión anterior del paquete cuando se ejecute <command>apt-get install
<replaceable>algún-paquete</replaceable></command> o <command>apt-get
upgrade</command>.
</para>

<para>
A veces la versión instalada de un paquete es más reciente que la 
versión perteneciente a la distribución objetivo, pero no tan reciente como la 
versión de otra distribución. Este tipo de paquetes se actualizarán cuando se
ejecute <command>apt-get install
<replaceable>algún-paquete</replaceable></command> o <command>apt-get 
upgrade</command> porque al menos <emphasis/uno/ de los ejemplares disponibles
tiene una prioridad mayor que la versión instalada.
</para>

</RefSect2>

<RefSect2><Title>El efecto de las preferencias sobre APT</>

<para>
El fichero de preferencias de APT permite al administrador del sistema controlar
las asignaciones de prioridades. El fichero consiste en uno o más registros de
varias líneas separados entre sí por espacios en blanco. Los registros pueden
tener una o dos formas: una específica y otra general.
<itemizedlist>
<listitem>
<simpara>
La forma específica asigna una prioridad ("Pin-Priority") a un paquete
concreto y se aplica a una versión o rango de versiones. Por ejemplo,
el siguiente registro asigna una prioridad alta a todas las versiones del
paquete <filename/perl/ cuyo número de versión empiece con "<literal/5.8/".
</simpara>

<programlisting>
Package: perl
Pin: version 5.8*
Pin-Priority: 1001
</programlisting>
</listitem>

<listitem><simpara>
La forma general asigna una prioridad a todas las versiones de los paquetes
en una distribución (esto es, a todas las versiones de paquetes provenientes
de un fichero <filename/Release/), o a todos las versiones de un paquete
que provienen de un sitio concreto en internet, identificado por su
nombre de dominio.
</simpara>

<simpara>
Esta forma general del fichero de preferencias de APT sólo se aplica a grupos de
paquetes. Por ejemplo, el siguiente registro hace que asigne una prioridad alta
a todas las versiones disponibles desde un sitio local.
</simpara>

<programlisting>
Package: *
Pin: origin ""
Pin-Priority: 999
</programlisting>

<simpara>
Un aviso acerca de la palabra clave usada en "<literal/origin/": no debe de
confundirse con el origen ("Origin:") de una distribución tal y como se
especifica en el fichero <filename/Release/. Lo que sigue a "Origin:" en un
fichero <filename/Release/ no es una dirección de un sitio de internet, sino el
autor o el nombre del proveedor, tales como "Debian" o "Ximian".
</simpara>

<simpara>
El siguiente registro asigna una prioridad baja a todas las versiones de los
paquetes pertenecientes a cualquier distribución que tenga como nombre de
Archivo "<literal/unstable/".
</simpara>

<programlisting>
Package: *
Pin: release a=unstable
Pin-Priority: 50
</programlisting>

<simpara>
El siguiente registro asigna una prioridad alta a todas las versiones de los
paquetes pertenecientes a la distribución que tiene como nombre de Archivo
"<literal/stable/" y como número de versión "<literal/3.0/".
</simpara>

<programlisting>
Package: *
Pin: release a=unstable, v=3.0
Pin-Priority: 50
</programlisting>
</listitem>
</itemizedlist>
</para>

</RefSect2>

<RefSect2>
<Title>¿Cómo interpreta APT las prioridades?</Title>

<para>
Las prioridades (P) asignadas en el fichero de preferencias deben ser
números enteros. Se interpretan (en general) del siguiente modo:

<variablelist>
<varlistentry>
<term>P &gt; 1000</term>
<listitem><simpara>la versión se instala incluso si es una versión
anterior a la instalada en el sistema.</simpara></listitem>
</varlistentry>
<varlistentry><term>990 &lt; P &lt;=1000</term>
<listitem><simpara>la versión se instala aunque no venga de la distribución
objetivo, a menos que la versión instalada sea más reciente.
</simpara></listitem> 
</varlistentry>
<varlistentry><term>500 &lt; P &lt;=990</term>
<listitem><simpara>la versión se instala a menos que exista otro ejemplar
disponible perteneciente a la distribución objetivo o bien la versión 
instalada sea más reciente.</simpara></listitem>
</varlistentry>
<varlistentry><term>100 &lt; P &lt;=500</term>
<listitem><simpara>la versión se instala a menos que exista un ejemplar
perteneciente a otra distribución o la versión instalada sea más reciente.
</simpara></listitem>
<varlistentry><term>0 &lt; P &lt;=100</term>
<listitem><simpara>la versión sólo se instala si no hay ninguna versión 
del paquete instalado.</simpara></listitem>
</varlistentry>
<varlistentry><term>P &lt; 0</term>
<listitem><simpara>la versión nunca se instala.
</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
Si uno de los registros de forma específica descritos arriba coinciden con una
versión disponible de un paquete, el registro determina la prioridad de la
versión. En caso de que esto no sea así, si cualquier número de registros de
forma general coinciden con una versión, el primero determina la prioridad de la
versión del paquete.
</para>

<para>
Por ejemplo, suponga que el fichero de preferencias de APT 
contiene los tres registros antes mencionados:

<programlisting>
Package: perl
Pin: version 5.8*
Pin-Priority: 1001

Package: *
Pin: origin ""
Pin-Priority: 999

Package: *
Pin: release unstable
Pin-Priority: 50
</programlisting>

Entonces:

<itemizedlist>
<listitem><simpara>La versión más reciente disponible del paquete
<literal/perl/ se instala mientras que el número de versión empieze 
con "<literal/5.8/". Si se encuentra disponible <emphasis/cualquier/ 
versión 5.8* de <literal/perl/ y la versión instalada es 5.9*, entonces 
se instala la versión5.8*.
</simpara></listitem><listitem><simpara>Cualquier otra versión de un paquete
distinto de 
<literal/perl/ disponible desde el sistema local tiene prioridad sobre el
resto de las versiones, incluso sobre los pertenecientes a la distribución 
objetivo.
</simpara></listitem>
<listitem><simpara>Otras versiones que tengan un origen distinto al sistema
local listadas en &sources-list; y que pertenezcan a la distribución
<literal/inestable/ sólo se instalarán si se seleccionan para instalar y no hay
ninguna versión del paquete instalado.
</simpara></listitem>
</itemizedlist>
</para>
</RefSect2>

<RefSect2>
<Title>Determinación de la versión del paquete y de las propiedades de la
distribución</Title>

<para>
Los recursos del fichero &sources-list; deben proporcionar los ficheros
<filename>Packages</filename> y <filename>Release</filename>. Éstos describen
los paquetes disponibles en cada uno de los sitios.
</para>

<para>El fichero <filename>Packages</filename> se encuentra normalmente en
el directorio <filename>.../dists/<replaceable>nombre-dist</replaceable>/
<replaceable>componente</replaceable>/<replaceable>arquitectura</replaceable>
</filename>,
por ejemplo, <filename>.../dists/stable/main/binary-i386/Packages</filename>.
El fichero consiste en una serie de registros de varias líneas, uno por cada
paquete disponible en ese directorio. Para montar un repositorio de APT sólo
son significativas dos de las líneas de cada registro:
<variablelist>
<varlistentry>
<term>La línea <literal/Package:/ </term>
<listitem><simpara>Indica el nombre del paquete</simpara></listitem>
</varlistentry>
<varlistentry>
<term>La línea <literal/Version:/ </term>
<listitem><simpara>Indica el número de versión del paquete</simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>El fichero <filename>Release</filename> normalmente se encuentra en el
directorio 
<filename>.../dists/<replaceable>nombre-dist</replaceable></filename>,
por ejemplo, <filename>.../dists/stable/Release</filename>,
o <filename>.../dists/woody/Release</filename>.
El fichero consiste en registros de una sola línea que se aplican a 
<emphasis/todos/ los paquetes por debajo del directorio 
padre. Al contrario que el fichero <filename/Packages/, casi todas las 
líneas del fichero <filename/Release/ son relevantes para las prioridades de 
APT: 

<variablelist>
<varlistentry>
<term>La línea <literal/Archive:/ </term>
<listitem><simpara>Indica el nombre del archivo al que pertenecen todos los
paquetes del árbol de directorios. Por ejemplo, la línea 
"Archive: stable" especifica que todos los paquetes en el árbol de 
directorios por debajo del directorio raíz marcado en el fichero 
<filename/Release/ están en un archivo de <literal/estable/. Para
especificar una preferencia de acuerdo con este parámetro
tendrá que poner la siguiente línea en el fichero de preferencias de APT:
</simpara>
<programlisting>
Pin: release a=stable
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>La línea <literal/Version:/ </term>
<listitem><simpara>Indica la versión de la distribución. Por ejemplo, los 
paquetes en árbol pueden pertenecer a la versión 3.0 de Debian GNU/Linux. Dese
cuenta de que <literal/pruebas/ e <literal/inestable/ no tienen una versión
asignada porque no han sido liberadas. Para especificar una preferencia de
acuerdo con este parámetro tendrá que poner una de las siguientes línea en el
fichero de preferencias de APT:
</simpara>

<programlisting>
Pin: release v=3.0
Pin: release a=stable, v=3.0
Pin: release 3.0
</programlisting>

</listitem>
</varlistentry>

<varlistentry>
<term>La línea <literal/Component:/ </term>
<listitem><simpara>Indica la licencia asociada a los paquetes en el árbol 
de directorios correspondiente al fichero <filename/Release/. Por ejemplo, 
la línea <literal/Component: main/ especifica que todos los ejemplares son 
de la sección <literal/main/, ésto asegura que su licencia se ajusta a las
DFSG. Para especificar una preferencia de acuerdo con este parámetro tendrá 
que poner la siguiente línea en el fichero de preferencias de APT:
</simpara>
<programlisting>
Pin: release c=main
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>La línea <literal/Origin:/ </term>
<listitem><simpara>Indica la procedencia de los paquetes en el árbol de
directorios del fichero <filename/Release/. La procedencia más común es
<literal/Debian/. Para especificar una preferencia de acuerdo con este 
parámetro tendrá que poner la siguiente línea en el fichero de preferencias 
de APT:
</simpara>
<programlisting>
Pin: release o=Debian
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term>La línea <literal/Label:/ </term>
<listitem><simpara>nombra la etiqueta de los paquetes en los árboles de
directorios del fichero <filename/Release/. Normalmente es
<literal/Debian/. Para especificar una preferencia de acuerdo con este parámetro
tendrá que poner la siguiente línea en el fichero de preferencias de APT:
</simpara>
<programlisting>
Pin: release l=Debian
</programlisting>
</listitem>
</varlistentry>
</variablelist>
</para>

<para>
Todos los ficheros <filename>Packages</filename> y <filename>Release</filename>
que se obtienen de los recursos de &sources-list; se guardan en el directorio
<filename>/var/lib/apt/lists</filename>, o en el directorio definido por la
variable <literal/Dir::State::Lists/, que puede estar definida en el fichero
<filename/apt.conf/. Por ejemplo, el fichero
<filename>debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release
</filename> contiene los ficheros <filename>Release</filename> obtenidos de
<literal/debian.lcs.mit.edu/ para la arquitectura <literal/binary-i386/ de la
sección <literal/contrib/ de la distribución <literal/inestable/.
</para>

</RefSect2>

<RefSect2>
<Title>Líneas opcionales en un registro de preferencias de APT</Title>

<para>
Cada registro en el fichero de preferencias de APT puede comenzar
con una o más líneas que tengan como primera palabra
<literal/Explanation:/. Útil para comentarios.
</para>

<para>
La línea <literal/Pin-Priority:/ es opcional. Si se omite, APT asigna
una prioridad un número menor que la última prioridad especificada en una línea
que empieze con <literal/Pin-Priority: release .../.
</para>
</RefSect2>
</RefSect1>

<RefSect1>
<Title>Ejemplos</Title>
<RefSect2>
<Title>Siguiendo la distribución estable</Title>

<para>El siguiente fichero de preferencias de APT provoca que APT asigne una
prioridad mayor de la que asigna por omisión (500) a todos los ejemplares de
la distribución <literal/estable/ y una prioridad más baja al resto de las
distribuciones <literal/Debian/.

<programlisting>
Explanation: Desinstalar o no instalar los ejemplares que no
Explanation: pertenecen a la distribución estable
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
</programlisting>
</para>

<para>
Con un fichero &sources-list; apropiado y el fichero de preferencias mostrado
anteriormente, cualquiera de las siguientes órdenes de APT hace que o bien todo
el sistema o bien sólo algunos paquetes se actualicen a la última versión
<literal/estable/.

<programlisting>
apt-get install <replaceable>paquete</replaceable>
apt-get upgrade
apt-get dist-upgrade
</programlisting>
</para>

<para>La siguiente orden hace que APT actualice un paquete a la última versión
de la distribución de <literal/pruebas/, el paquete no se actualizará de nuevo amenos que se ejecute de nuevo la orden.

<programlisting>
apt-get install <replaceable>paquete</replaceable>/testing
</programlisting>
</RefSect2>

<RefSect2>
<Title>Siguiendo la distribución de pruebas o inestable</Title>

<para>El siguiente fichero de preferencias de APT provocará que APT asigne
mayor prioridad a las versiones de la distribución de <literal/pruebas/,
una prioridad menor a los paquetes de la distribución <literal/inestable/,
y una prioridad prohibitiva a los paquetes de otras distribuciones de
<literal/Debian/.

<programlisting>
Package: *
Pin: release a=testing
Pin-Priority: 900

Package: *
Pin: release a=unstable
Pin-Priority: 800

Package: *
Pin: release o=Debian
Pin-Priority: -10
</programlisting>
</para>

<para>
Con un fichero &sources-list; adecuado y el fichero de preferencias anterior,
cualquiera de la órdenes siguientes hace que APT actualice los paquetes a la
última versión de la distribución de <literal/pruebas/.

<programlisting>
apt-get install <replaceable>paquete</replaceable>
apt-get upgrade
apt-get dist-upgrade
</programlisting>
</para>

<para>La siguiente orden hace que APT actualice un determinado paquete a la
última versión de la distribución <literal/inestable/. Más tarde,
<command>apt-get upgrade</command> actualizarán el paquete a la última versión
de la distribución de <literal/pruebas/ si es más reciente que la versión
instalada, de otro modo, se instalará la versión más reciente de la
distribución<literal/inestable/ si es más reciente que la versión instalada.

<programlisting>
apt-get install <replaceable>paquete</replaceable>/unstable
</programlisting>
</para>

</RefSect2>
</RefSect1>

<RefSect1>
<Title>Véase además</>
<para>
&apt-get; &apt-cache; &apt-conf; &sources-list;
</para>
 </RefSect1>

 &manbugs;
 &manauthor;

  <refsect1>
    <title>TRADUCTOR</title>
    <para>
      Traducción de Rubén Porras Campo
      &lt;debian-l10n-spanish@lists.debian.org&gt;
    </para>
  </refsect1>

</refentry>
