237 votos

¿Cómo puedo ejecutar Debian estable pero instalar algunos paquetes de pruebas?

Digamos que estás ejecutando un servidor y no quieres actualizar a Testing (Squeeze) desde Stable (Lenny) para sólo instalar uno o dos paquetes necesarios.

¿Cuál es la mejor manera de instalar sólo ciertos paquetes desde Testing?

4 votos

Esto es lo que dice la última documentación oficial: Paquetes de origen mixto de archivos .

203voto

Brendan Byrd Puntos 804

Mucha gente parece tener miedo de mezclar la estabilidad con las pruebas, pero francamente, las pruebas son bastante estables por derecho propio, y con las preferencias adecuadas y la comprobación de la solución, se puede evitar la "deriva de la estabilidad" que pone sus paquetes principales en el camino inestable.

"¿Las pruebas son bastante estables?" , pregunta usted. Sí. Para que un paquete migre de inestable a prueba, tiene que tener cero errores abiertos durante 10 días consecutivos. Lo más probable es que, especialmente en el caso de los paquetes más populares, alguien envíe un informe de errores para una versión inestable si algo va mal.

Incluso si no quieres mezclar los entornos, es bueno tener la opción allí en caso de que te encuentres con algo que requiera una versión más nueva que la que está en estable.

Esto es lo que recomiendo para configurar esto:

En primer lugar, cree los siguientes archivos en /etc/apt/preferences.d :

stable.pref :

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref :

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref :

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

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

experimental.pref :

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(No tengas miedo de las cosas inestables/experimentales aquí. Las prioridades son lo suficientemente bajas como para que nunca se instale automáticamente ninguna de esas cosas. Incluso la rama de pruebas se comportará, ya que sólo va a instalar los paquetes que quieres que estén en pruebas).

Ahora, la creación de un conjunto coincidente para /etc/apt/sources.list.d :

stable.list : Copia de su original /etc/apt/sources.list . Cambie el nombre del archivo antiguo por algo como sources.list.orig .

testing.list : Lo mismo que stable.list , excepto con testing .

unstable.list : Lo mismo que stable.list , excepto con unstable y eliminar las listas de seguridad.

experimental.list : Lo mismo que unstable.list , excepto con experimental .

También puede añadir un oldstable en sources.lists.d y preferences.d (utilice una prioridad de 1), aunque este nombre tenderá a caducar y desaparecer antes del siguiente ciclo estable. En casos así, puede utilizar http://archive.debian.org/debian/ y "hardcode" la versión de Debian (etch, lenny, etc.).

Para instalar la versión de prueba de un paquete, basta con utilizar aptitude install lib-foobar-package/testing o simplemente entra en la GUI de aptitude y selecciona la versión dentro de los detalles del paquete (pulsa enter en el paquete que estás mirando).

Si recibe quejas de conflictos de paquetes, busque primero las soluciones. En la mayoría de los casos, la primera será "no instale esta versión". Aprenda a utilizar las opciones de resolución de aceptación/rechazo por paquete. Por ejemplo, si está instalando foobar-paquete/prueba, y la primera solución es "no instale foobar-paquete/prueba", entonces marque esa opción como rechazada, y las otras soluciones no volverán a tomar ese camino. En casos como este, probablemente tendrá que instalar algunos otros paquetes de pruebas.

Si se pone demasiado peludo (como si intentara actualizar libc o el kernel o algún otro sistema central enorme), entonces puede rechazar esas rutas de actualización o simplemente retirarse de la actualización inicial por completo. Recuerde que sólo va a actualizar cosas a testing/unstable si usted lo permite.

EDIT: Se han corregido algunas clavijas prioritarias y se ha actualizado la lista.

1 votos

Gracias, he utilizado este método y todo funciona como esperaba.

2 votos

Estoy tratando de usar esto, pero no soy capaz de resolver ninguna dependencia en absoluto. Parece que ni apt-get, ni aptitude buscan las dependencias en los repos de prueba. ¿Hay alguna manera de resolver eso?

5 votos

¿Has corrido apt-get update después de crear los archivos de configuración?

115voto

Steve Mould Puntos 141

En /etc/apt/apt.conf.d añada el siguiente archivo

99defaultrelease :

APT::Default-Release "stable";

en /etc/apt/sources.list.d - añadir urls para pruebas / fuentes inestables

stable.list :

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list :

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

deb     http://security.debian.org/         testing/updates  main contrib non-free

ejecute

apt-get update

y luego instala lo que necesites con

apt-get -t testing install something

Ten mucho cuidado si instalas cosas que tienen muchas dependencias. Preferiblemente no lo hagas en producción.

También puede probar suerte en puertos traseros o un repositorio similar.

1 votos

Vaya. Eso fue rápido. Estaba publicando para compartir la información que acababa de encontrar. ¡Bien hecho!

0 votos

Nunca he utilizado el método apt.conf. Parece más sencillo que el método del archivo de preferencias, pero te da un control menos preciso. - Coops

4 votos

La respuesta necesita ser actualizada; esta configuración romperá las cosas por completo ahora que squeeze se ha convertido en estable y lenny se ha convertido en oldstable.

51voto

Dave Veffer Puntos 903

apt_preferences

Defina el nivel por defecto al que el sistema debe "actualizar de forma segura" en el archivo /etc/apt/preferences:
man apt_preferences

Hay muchas cosas que se pueden hacer con apt_preferences pero para simplificar...

Necesitaba instalar un único paquete (autoMysqlBackup) que sólo estaba disponible en Pruebas. La solución fue añadir lo siguiente a /etc/apt/preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Con múltiples repositorios añadidos a /etc/apt/sources.list aptitude ahora sólo actualizará a su versión especificada aunque los repositorios de versiones posteriores estén listados (en este caso 'stable').

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Así que para instalar ese paquete, todo lo que tienes que hacer es:

$ aptitude install -t testing packageName

0 votos

Este es un buen método también, no tan rápido como apt.conf, pero le permite controlar todas sus diferentes fuentes de una manera relativa.

2 votos

Esto es demasiado complicado para la tarea... El uso de APT::Default-Release establece la prioridad del pin de la versión a 990 (de forma similar a como se establece a 900) y el pin negativo para el resto no es realmente necesario... durante las actualizaciones de la distribución el paquete estable tiene prioridad de todos modos y tan pronto como se liste algo explícitamente en la línea de comandos, su prioridad de pin negativo será mayormente ignorada.

0 votos

No sé cómo responderte @Raphael. Parece una forma muy elegante de hacer las cosas. Ya he utilizado apt pinning hace años pero nunca lo he "entendido". Los ejemplos que he usado arriba son directamente de la página man de apt_preferences.

16voto

Telemachus Puntos 431

Por si sirve de algo, el consejo general que siempre he visto es "No mezcles estable con nada". La mayoría de los tutoriales de sistemas mixtos son para mezclar el testing y el inestable.

El razonamiento parece ser que si se mezclan los paquetes estables con los de prueba, los paquetes muy básicos (como libc6) requerirán actualizaciones (para poder instalar el software de las pruebas), y una vez que estos paquetes básicos se muevan a las pruebas, todo el sistema puede derivar hacia allí.

Aquí hay dos alternativas:

  1. Utilice Puertas traseras .
  2. Instalar una línea de origen de las pruebas, y tratar de construya la versión posterior que desee desde el código fuente .

2 votos

Estoy de acuerdo. Acabo de intentar actualizar libdvdread4 desde las pruebas debido a un error en la versión de wheezy/stable. Sin embargo, quiere traer la última libc. Así que simplemente tomé el paquete fuente de libdvdread4 de la versión estable y lo parcheé con el cambio de fuente de 1 línea y lo reconstruí. Es mucho mejor que traer todo tipo de paquetes de las pruebas. Ahora todos los paquetes siguen siendo los "estables" y sólo tengo el cambio de 1 línea que necesito.

12voto

tomdeb Puntos 561

La documentación debian es extensa en el tema y le aconsejo encarecidamente que indague en ella ya que le desvelará realmente la belleza del sistema debian.

Echa un vistazo a Cómo mantener un sistema mixto le explicará todo lo que necesita saber.

1 votos

Este parece ser el mismo método utilizado en la respuesta de @pQd, por lo que no se aplica a debian >=6.0. También el título del enlace dice "documentación obsoleta" ahora. También la mayoría de la respuesta es sólo un enlace.

0 votos

Aunque @dequis tiene razón en que el enlace parece estar desactualizado, acabo de seguir las instrucciones en una Debian 8 (de prueba) para instalar un paquete desde inestable, y todo parece funcionar perfectamente. ¿Alguien tiene un enlace de documentación actualizado?

1 votos

Es probable que esto sea lo que está buscando: debian.org/doc/manuals/debian-reference/

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: