You are on page 1of 14

es/AptPreferences - Debian Wiki https://wiki.debian.

org/es/AptPreferences

Translation(s): English - Español - Italiano - Русский - 简体中文

Este artículo trata de explicar como usar las 'preferencias' de


APT. En este momento solo pinning está documentado aquí.

Tabla de Contenidos
1. Pinning

1. /etc/apt/sources.list

2. /etc/apt/preferences

3. Instalando desde unstable

4. Notas de JoshuaRodman

5. Notas de ZugSchlus

6. Notas de Ryan B.

7. Notas de GeorgiosZarkadas

8. Notas de Dmitriy Matrosov

2. Referencias

Pinning

Antes de que considere hacer 'pinning', quizá quiera


comprobar si el paquete que desea ha sido backported a su
versión de Debian.

Cuando haga uso de apt-pinning, debe asegurarse por su


cuenta de que los paquetes sean compatibles, ya que Debian
no lo garantiza. Tenga en cuenta que apt-pinning es opcional,
y Debian no fomenta su uso sin un examen exhaustivo.

Pinning le permite instalar ciertos paquetes de una versión


(stable, testing, unestable) sin que tenga que actualizar el
sistema entero. Sin embargo, al instalar paquetes de futuras
versiones, probablemente instale o actualice bibliotecas
también, así que puede que termine con un sistema con las

1 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

desventajas de la versión stable (software viejo), las


desventajas de unstable/testing (el soporte relacionado con
la seguridad no es tan bueno como en stable) y sin las
ventajas de uno u otro.

Al más bajo nivel, pinning está involucrado con dos ficheros,

/etc/apt/sources.list y /etc/apt/preferences.

Un papel adicional es el target release¡¡, que puede ser


configurado en apt.conf (o en /etc/apt/conf.d/..., o
mediante la línea de comando usando apt.

/etc/apt/sources.list

#### testing #########

deb http://ftp.us.debian.org/debian testing main contrib non-free

#### unstable #########

deb http://ftp.us.debian.org/debian unstable main contrib non-free

En este ejemplo, estamos usando testing y unstable. Usted


puede, por su puesto, modificar el ejemplo para usar stable
también.

/etc/apt/preferences

En el fichero 'preferences' es donde pinning' se lleva a cabo.


Aquí tenemos un ejemplo:

Package: *

2 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Pin: release a=testing

Pin-Priority: 900

Package: *

Pin: release a=unstable

Pin-Priority: 800

Package por defecto todos, especificado con el asterisco.


Pin especifica la versión de release (testing and unstable).
Pin-Priority especifica el nivel de prioridad. 'apt-get' por
defecto sigue la filosofía de "la versión mas moderna del
paquete gana". Lo de arriba, cambia un poco esto, de tal
manera que los paquetes en testing tengan mas prioridad,
incluso cuando estos no sean la última versión disponible.

Usted deberia también consultar la manpage


apt_preferences(5).

Instalando desde unstable

Vamos a asumir que estamos en testing y queremos probar


una versión mas moderna de enlightenment desde unstable.
Basicamente hay dos métodos para instalarla:

# apt-get install enlightenment/unstable

# apt-get -t unstable install enlightenment

El primer comando tratará de no actualizar ningún paquete


en el sistema, así que si las dependencias no se satisfacen, la
instalación fallará. El segundo método
instalará/actualizará cualquier dependencia. Por su
puesto, en 'apt-get' le preguntará antes de proceder a ello.

3 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Notas de JoshuaRodman

Personalmente, encuentro que la configuración de alta


prioridad a Testing y menor prioridad a Unstable puede ser
problemática. En algunos casos, paquetes de testing
dependerán de otros que no están actualmente en testing (lo
cual es un pequeño fallo de testing) lo cual causará que los
paquetes sean automáticamente instalados desde unstable.
En el periodo de pruebas antes de mover Woody a stable,
esto causo que terminase con alrededor de 100 paquetes
instalados desde unstable sin darme cuenta.

Como resultado, yo uso una configuración mas conservadora


"solo si yo lo digo", con una configuración como esta:

Package: *

Pin: release a=testing

Pin-Priority: 900

Package: *

Pin: release o=Debian

Pin-Priority: -10

De esta manera todos los paquetes de Debian tienen por


defecto -10 de prioridad, mientras que testing tiene una
bonificación de 900. Esto provoca los siguientes
comportamientos:

Sacado de apt_preferences(5)

500 < P <=990 :

4 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

causes a version to be installed unless there is a version

available belonging to the target release or the installed

version is more recent

[...]

P < 0 :

prevents the version from being installed

Tenga en cuenta que una prioridad por encima de


1000 permitirá incluso regresar a una versión anterior
del paquete sin importar cual sea la versión del
paquete prioritario. Esto significa que se puede
utilizar la prioridad 1001 para un repositorio stable si
usted desea regresar a una versión anterior de los
paquetes que ha instalado (por ejemplo de testing)
Esto no es recomendable a menos que el número de cambios
sean mínimos.

Los paquetes unstable solo serán instalados con los


siguientes comandos:
apt-get install packagename/unstable y
apt-get install -t unstable packagename.

Notas de ZugSchlus

Aviso

Esta página ha sido escrita por ZugSchlus, que no capta el


concepto de pinning. Así que por favor, interprete las
palabras "probablemente", "necesita ser verificado" y
similares, de una manera literal y documente sus
descubrimientos aquí.

Descripción del Proceso de Selección de Paquetes

--> Open in apt/0.9.7.4: #685215: Apt pinning is broken: Here

5 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Esto es lo que un usuario cree que deberia ser.

ToDo: Esto necesita ser verificado

Ignora paquetes que no coinciden con la versión deseada.


Ignora paquetes con una versión anterior a la actual, a no
ser que su prioridad sea > 1000
Instala el paquete restante con la prioridad mas alta
En caso de empate de prioridades, toma el paquete
pinned
Este paso normalmente deberia ser obviado si el pin no
coincide con nada
En caso de un paquete no "pinned", toma la versión mas
alta
En caso de varios paquetes con la misma versión, apt-get
escogera el primero que esté escrito en sources.list

Ejemplo de /etc/apt/preferences

Ejemplo 1

Package: *

Pin: release o=Debian,a=testing

Pin-Priority: 900

Package: *

Pin: release o=Debian,a=unstable

Pin-Priority: 300

Package: *

Pin: release o=Debian

6 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Pin-Priority: -1

Falta: Documentación que explique lo que esta configuración


hace.

ZugSchlus trata de explicarlo:

Todos los paquetes de la distribución llamada testing


estan "pinned" a 900
Todos los paquetes de la distribución llamada unstable
estan "pinned" a 300
Todos los paquetes restantes de Debian están "pinned" a
-1, y por lo tanto nunca instalados.

Problema: Esta configuración se comporta de manera


diferente, dependiendo que "target release" está configurada
en otras partes de la configuración de apt. Por lo tanto, este
ejemplo no puede ser documentado sin añadir mas
información. Un paquete "non-pinned" que es parte del
"target-release" tiene como prioridad 900, mientas que otros
paquetes "non-pinned" tienen por defecto 500.

Ejemplo 2

Objetivo: En un sistema unstable, instalar dpatch desde


experimental.

Una posible solución:

Tener ambos, unstable y experimental en el sources.list


En ausencia de "pinning" explícito, experimental será
automaticamente "pinned" a prioridad 1. Esto es por
qué el fichero de Release de experimental contiene
NotAutomatic: yes.
Pin the wanted packages to a value x with 100<x<500:

7 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Package: dpatch

Pin: release o=Debian,a=experimental

Pin-Priority: 450

Un valor >500 seleccionará siempre un paquete desde


experimental, incluso previniendo que un paquete mas
alto de unstable sea instalado, y seleccionando "ningún
paquete del todo" por delante de todos los paquetes
disponibles si la distribución que no contiene ese
paquete tiene mas prioridad.
Por desgracia, el campo Paquete no entiende ni de
comodines ni de expresiones regulares. Necesitas un
pin por paquete.
"Pinning" el paquete a 450 probablemente no actualice
el paquete experimental, pero es probable que haga un
seguimiento del paquete en experimental, siempre y
cuando se mantenga en una versión superior al de
unstable.

Ejemplo 3

De Mihamina rakotomandimby

Suponga que tiene un repositorio personal, donde tiene una


versión personal de Postfix. Quieres que Apt prefiera tu
versión antes que la oficial.

Puede configurar las preferencias por Origen

Package: *

Pin: origin www.rktmb.org

Pin-Priority: 610

8 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Package: *

Pin: origin ftp.fr.debian.org

Pin-Priority: 600

Debugging

apt-cache policy package brinda información acerca del


proceso de selección. Desafortunadamente, no se conoce del
todo el significado de la salida. Lo siguiente es un intento de
interpretarla:

$ apt-cache policy exim4-daemon-light

exim4-daemon-light

Installed: 4.50-1

Candidate: 4.50-1

Package Pin: (not found)

Version Table:

4.50-4 555

500 http://mirror sid/main Packages

*** 4.50-1 555

100 /var/lib/dpkg/status

4.44-2 555

500 http://mirror sarge/main Packages

La prioridad de cada versión/ubicación es el número a la


izquierda. En este caso 500, 100 y 500. El numero a la
derecha del número de versión la prioridad actual del
paquete.

Notas de Ryan B.

Si te estás preguntando cuales son las opciones del fichero

9 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

de preferencias del release, basada en este enlace:


http://www.debian.org/doc/manuals/repository-
howto/repository-howto

Hemos encontrado:

Archive: archivo

Component: componente

Origin: Su empresa

Label: El repositorio Debian de su empresa

Architecture: arquitectura

Así, la línea: "Pin: release a=testing" encontraría valores en


el archivo de la versión llamada "testing".

Notas de GeorgiosZarkadas

Me pareció que el uso de un valor superior a 500 a un pin


testing/unstable resultaba en apt-get upgrade queriendo
actualizar todos los paquetes con una versión mas moderna
a testing/unstable, incluso cuando stable tenia un valor pin
mas alto que testing/unstable.

Después de consultar el resultado de apt-cache policy


<paquete> de alguno de los paquetes que apt-get upgrade
consideró que debian ser actualizados, llegué a la conclusión
de que si hay múltiples versiones "pinned" a 500 o superior,
entonces el "pinning" se considera después del número de
versión. Así la versión más alta con el pin mas alto entre
todos los paquetes candidatos es selecionada.

Por ejemplo (teniendo stable "pinned" a 700, testing a 650 y

10 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

unstable a 600):

root@freedom:/etc/apt# apt-cache policy deborphan

deborphan:

Εγκατεστημένα: 1.7.28.3+squeeze1

Υποψήφιο: 1.7.28.5

Πίνακας Έκδοσης:

1.7.28.5 0

650 http://ftp.gr.debian.org/debian/ wheezy/main amd64 Packages

600 http://ftp.gr.debian.org/debian/ sid/main amd64 Packages

*** 1.7.28.3+squeeze1 0

500 http://ftp.gr.debian.org/debian/ squeeze-proposed-updates/ma

100 /var/lib/dpkg/status

1.7.28.3 0

500 cdrom://[Debian GNU/Linux 6.0.1a _Squeeze_ - Official amd64

700 http://ftp.gr.debian.org/debian/ squeeze/main amd64 Packages

Ya que mi objetivo para el uso de distintas fuentes era ser


capaz de instalar en ocasiones un paquete de testing o
unstable, y no actualizar todos los paquetes, "pinning"
testing/unstable a unos valores iguales o superiores a 500 es
claramente un método inadecuado para lo indicado
anteriormente.

Sin embargo, he encontrado que el uso de un valor inferior a


500 para testing/unstable tiene el efecto deseado. Por
ejemplo (testing a 450, unstable a 400 y stable sin pin):

root@freedom:/etc/apt# apt-cache policy deborphan

deborphan:

Εγκατεστημένα: 1.7.28.3+squeeze1

11 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

Υποψήφιο: 1.7.28.3+squeeze1

Πίνακας Έκδοσης:

1.7.28.5 0

450 http://ftp.gr.debian.org/debian/ wheezy/main amd64 Packages

400 http://ftp.gr.debian.org/debian/ sid/main amd64 Packages

*** 1.7.28.3+squeeze1 0

500 http://ftp.gr.debian.org/debian/ squeeze-proposed-updates/ma

100 /var/lib/dpkg/status

1.7.28.3 0

500 cdrom://[Debian GNU/Linux 6.0.1a _Squeeze_ - Official amd64

500 http://ftp.gr.debian.org/debian/ squeeze/main amd64 Packages

Notas de Dmitriy Matrosov

Creo que la conclusión de Georgios Zarkada's (de una nota


anterior):

llegué a la conclusión de que si hay múltiples versiones "pinned" a 500

está equivocada. Vamos a dar un vistazo de nuevo al ejemplo


que puso:

root@freedom:/etc/apt# apt-cache policy deborphan

deborphan:

Εγκατεστημένα: 1.7.28.3+squeeze1

Υποψήφιο: 1.7.28.5

Πίνακας Έκδοσης:

1.7.28.5 0

650 http://ftp.gr.debian.org/debian/ wheezy/main amd64 Packages

600 http://ftp.gr.debian.org/debian/ sid/main amd64 Packages

12 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

*** 1.7.28.3+squeeze1 0

500 http://ftp.gr.debian.org/debian/ squeeze-proposed-updates/ma

100 /var/lib/dpkg/status

1.7.28.3 0

500 cdrom://[Debian GNU/Linux 6.0.1a _Squeeze_ - Official amd64

700 http://ftp.gr.debian.org/debian/ squeeze/main amd64 Packages

Primero, apt intenta actualizar desde stable (squeeze/main)


ya que stable tiene la prioridad mas alta (700), pero ve que
el paquete instalado es más nuevo:

sgf@shilvana:~$ dpkg --compare-versions 1.7.28.3 lt '1.7.28.3+squeeze1'

y 700 de prioridad no es suficiente para volver a una versión


anterior. and priority 700 is not enough to downgrade.
Entonces, busca una versión candidata, y ahora apt intenta
actualizar desde testing (wheezy(main) y ve, que la version
de testing es más nueva:

sgf@shilvana:~$ dpkg --compare-versions '1.7.28.3+squeeze1' lt 1.7.28.5

Y por lo tanto, esta versión (testing) se convierte en


candidata.

Por lo tanto, con el fin de actualizar desde stable (como


Georgios Zarkadas quiere), debe tener ese paquete con una
versión <= de la que se encuentra en stable.

Referencias

13 de 14 08/01/15 21:41
es/AptPreferences - Debian Wiki https://wiki.debian.org/es/AptPreferences

DebianMan: apt_preferences(5)
man 5 apt_preferences
Apt-Howto (Section 3.10) and ?AptPinning.
This link seems to have more detailed explanation:
http://www.xs4all.nl/~carlo17/howto
/debian.html#errata
Apt-Pinning for Beginners (wayback machine) - a good
reference, and heavily borrowed from.
http://www.argon.org/~roderick/apt-pinning.html
Debian Reference on apt-pinning

14 de 14 08/01/15 21:41