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

Respuestas:

183

Muchas personas parecen tener miedo de mezclar estable con pruebas, pero, francamente, las pruebas son bastante estables por sí mismas, y con las preferencias adecuadas y la verificación de la solución, puede evitar la "deriva de estabilidad" que coloca a sus paquetes principales en el camino inestable.

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

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

Esto es lo que recomiendo para configurar esto:

Primero, 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 tenga 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 prueba se comportará, ya que solo va a instalar los paquetes que desea ser en pruebas)

Ahora, creando un conjunto coincidente para /etc/apt/sources.list.d:

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

testing.list: Igual que stable.list, excepto con testing.

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

experimental.list: Igual que unstable.list, excepto con experimental.

También puede agregar una oldstableen sources.lists.dy preferences.d(usar una prioridad de 1), aunque este apodo tenderá a punto de expirar y desaparecer antes del siguiente ciclo estable. En casos como ese, puede usar http://archive.debian.org/debian/y "codificar" la versión de Debian (etch, lenny, etc.).

Para instalar la versión de prueba de un paquete, simplemente use aptitude install lib-foobar-package/testing, o simplemente acceda a la GUI de aptitude y seleccione la versión dentro de los detalles del paquete (presione enter en el paquete que está viendo).

Si recibe quejas de conflictos de paquetes, primero mire las soluciones. En la mayoría de los casos, el primero será "no instale esta versión". Aprenda a usar las opciones de resolución de aceptar / rechazar por paquete. Por ejemplo, si está instalando foobar-package / testing, y la primera solución es "no instale foobar-package / testing", marque esa opción como rechazada, y las otras soluciones nunca volverán a ese camino nuevamente. En casos como estos, probablemente tendrá que instalar algunos otros paquetes de prueba.

Si se está volviendo demasiado complicado (como si estuviera tratando de actualizar libc o el kernel o algún otro sistema central enorme), puede rechazar esas rutas de actualización o simplemente abandonar la actualización inicial por completo. Recuerde que solo va a actualizar cosas a pruebas / inestables si lo permite.

EDITAR: se corrigieron algunos pines de prioridad y se actualizó la lista.

Brendan Byrd
fuente
44
¿Ejecutó apt-get updatedespués de crear los archivos de configuración?
Flujo
3
Estoy obteniendo (lo que me parece) comportamientos inconsistentes usando este método. "apt-get install -t testing appX" no da lo mismo que "apt-get install appX / testing" (ver serverfault.com/q/646934/132528 ) - Supongo que se trata de la forma en que este método hace que se resuelvan las prioridades, aunque no sea intuitivo para mí?
eugenevd
77
IMPORTANTE: el autor eligió un valor de preferencia de fijación para estable / seguridad que es mayor que el valor de Versión predeterminada ... consulte serverfault.com/a/653552/120130 para obtener más información
Alex Ryan
77
Esta respuesta acaba de romper mi sistema. Después de un intento de hacer sudo apt-get update, recibí un error de actualización. Luego reinicié, lo que me dio Xsession error, reinicié nuevamente, y ahora no tengo interfaz gráfica de usuario. El /dev/sda1/ahora está lleno. Excelente.
luchonacho
3
Voy a recomendar que la gente preste atención a los comentarios negativos en esta publicación. Acabo de morderlo en la reciente actualización de Debian 9, que se corrigió al revertir estos cambios. Preste atención a los consejos del artículo de Debian sobre este asunto: wiki.debian.org/DontBreakDebian (desplácese hasta No hacer un FrankenDebian)
Brandon Arnold
98

En /etc/apt/apt.conf.dagregar el siguiente archivo

99defaultrelease:

APT::Default-Release "stable";

en /etc/apt/sources.list.d- agregar URL para probar / 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

correr

apt-get update

y luego instala lo que necesitas con

apt-get -t testing install something

Tenga mucho cuidado si instala cosas que tienen muchas dependencias. Preferiblemente no hagas esto en producción.

También puedes probar tu suerte en backports o repositorio similar.

pQd
fuente
1
Guau. Eso fue rápido. ¡Estaba publicando para compartir la información que acababa de encontrar! ¡Buena esa!
Gareth
Nunca he usado el método apt.conf antes. Parece más simple que el método de archivo de preferencias, pero le da un control menos preciso. - Coops
Coops
44
La respuesta necesita actualizarse; Esta configuración romperá las cosas por completo ahora que la compresión se ha estabilizado y Lenny se ha vuelto estable
El Yobo
1
Ya no se puede usar, actualícelo
Lothar
44
en las nuevas versiones de Debian no hay un archivo apt.conf, en su lugar edite /etc/apt/apt.conf.d/70debconf
Hayden Thring
49

apt_preferences

Defina el nivel predeterminado al que el sistema debe 'actualizarse de forma segura' en el archivo / etc / apt / ferences :
man apt_preferences

Hay muchas cosas que puede hacer con apt_preferences pero por simplicidad ...

Necesitaba instalar un solo paquete (autoMysqlBackup) que solo estaba disponible en Pruebas. La solución fue agregar lo siguiente a / etc / apt /ferences:

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 agregados a /etc/apt/sources.list, aptitude ahora solo se actualizará a su versión especificada aunque los repositorios de versiones posteriores estén listados (en este caso, 'estable').

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

Entonces, para instalar ese paquete, todo lo que tiene que hacer es:

$ aptitude install -t testing packageName 
Gareth
fuente
Este también es un buen método, no tan rápido como apt.conf, pero le permite controlar todas sus diferentes fuentes de manera relativa.
Coops
2
Esto es demasiado complicado para la tarea ... El uso de APT :: Default-Release establece la prioridad del pin de la versión en 990 (similar a cómo lo configura en 900) y el pin negativo para el resto no es realmente necesario. Durante las actualizaciones dist, el paquete estable tiene prioridad de todos modos y tan pronto como enumere algo explícitamente en la línea de comando, su prioridad de anclaje negativo será ignorada.
Raphaël Hertzog
No estoy seguro de cómo responderte @Raphael. Parece una forma muy elegante de hacer las cosas. Hace años utilicé apt pinning, pero nunca lo `` entendí ''. Los ejemplos que he usado anteriormente son directamente de la página del manual apt_preferences.
Gareth
2
Confirme que esto funciona bien en squeeze
tomfanning
3
@Lothar: Funciona en Debian 6. El hecho de que el archivo no exista no significa que no funcione. Simplemente cree el archivo y agregue la configuración. Cita de la página de manual: "Si no hay un archivo de preferencias o si no hay una entrada en el archivo que se aplique a una versión en particular, la prioridad asignada a esa versión es la prioridad de la distribución a la que pertenece esa versión".
rzetterberg
13

Por lo que vale, el consejo general que siempre he visto es "No mezclar estable con nada". La mayoría de los tutoriales de sistemas mixtos son para pruebas de mezcla e inestables.

El razonamiento parece ser que si combina estable con pruebas, los paquetes muy básicos (como libc6) requerirán actualizaciones (para instalar el software de las pruebas), y una vez que estos paquetes básicos pasen a las pruebas, todo el sistema puede derivar de esa manera.

Aquí hay dos alternativas:

  1. Utiliza Backports .
  2. Instale una línea de origen desde la prueba e intente construir la versión posterior que desea desde el origen .
Telémaco
fuente
1
Estoy de acuerdo. Acabo de intentar actualizar libdvdread4 de la prueba debido a un error en la versión en wheezy / stable. Sin embargo, quiere traer la última libc. Así que acabo de tomar el paquete fuente para libdvdread4 desde stable y lo parcheé con el cambio de fuente de 1 línea y lo reconstruí. Mucho mejor que sacar todo tipo de paquetes de las pruebas. Ahora todos los paquetes siguen siendo los "estables" y solo tengo el cambio de 1 línea que necesito.
Dgrant
12

La documentación de Debian es extensa en el tema y le recomiendo que profundice, ya que revelará realmente la belleza del sistema Debian.

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

tomdeb
fuente
1
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 en su mayoría enlace solo respuesta.
dequis
Si bien @dequis tiene razón en que el enlace parece estar desactualizado, simplemente seguí las instrucciones en un Debian 8 (prueba) para instalar un paquete desde inestable, y todo parece funcionar perfectamente. ¿Alguien tiene un enlace de documentación actualizado?
domsson
1
Es probable que esto sea lo que está buscando: debian.org/doc/manuals/debian-reference/…
tomdeb
7

Otra forma, que podría evitar la instalación de demasiadas dependencias de Testing o Sid, es esta: le dice a apt-get que obtenga la fuente del paquete de Testing o Sid y cree un paquete para su sistema utilizando las herramientas de Debian (no es necesario modificar manualmente con fuentes).

Citando desde aquí:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

¿Cómo respaldo un paquete sid a prueba o estable?

Instale la fuente de Debian (y las herramientas de desarrollo, especialmente debhelper, devscripts y build-essential), y luego compile el paquete.

Paso a paso:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Las debs resultantes deben estar en el directorio actual y pueden instalarse con dpkg -i the.deb.

gerlos
fuente
4

Lo he estado haciendo durante un período prolongado de tiempo para estar seguro de decir que es lo suficientemente seguro y conveniente. Con la configuración a continuación, la versión estable se instalará de manera predeterminada, sin embargo, Aptitude también le permitirá elegir versiones con respaldo o inestables si así lo desea:

ingrese la descripción de la imagen aquí

Hay cuatro cosas que deben editarse, la versión de fijación predeterminada debe establecerse, las fuentes necesitan backports y agregar inestable, lo que reduce la prioridad de fijación de backports / paquetes inestables, y la configuración de visualización de aptitud debe modificarse para mostrar la fijación.

  • Cree un '/etc/apt/apt.conf.d/10defaultrelease' y haga que su contenido sea el siguiente:
Apt :: default-Release "estable";
  • Edite su '/etc/apt/sources.list' para agregar fuentes inestables y de backports para que se vea así:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Oficial Multi-arquitectura amd64 / i386 NETINST # 1 20110205-14: 45] / squeeze main

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates main

# squeeze-update, anteriormente conocido como 'volátil'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# apretar backports
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# inestable
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ inestable main
deb-src http://ftp.us.debian.org/debian/ inestable main

# no libre ex. sun java
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • Editar etc/apt/preferencesarchivo de fijación: si el archivo no existe, créelo.
# Prioridades de fijación de paquetes
# Ver http://wiki.debian.org/AptPreferences y http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
# #
# En la tuerca se instala el PIN más alto
# #
# Los valores predeterminados de pining son los siguientes, además de nuestra configuración:
# 990 - para la versión que no está instalada pero SÍ pertenece a nuestra configuración `APT :: Default-Relase" estable "`.
# 500 - para versiones que no están instaladas y no pertenecen a la versión de destino
# 100 - para paquetes que ya están instalados, esto también significa otras versiones del mismo paquete
# 1 - para paquetes experimentales; paquetes con "NotAutomatic: yes"
# #
# Nuestros Pinnings
# 400 - backports que se pueden instalar de forma segura sin la necesidad de actualizar otros paquetes
# 50 - los paquetes inestables, la instalación forzada en la pantalla de detalles, puede generar conflictos

Paquete: *
Pin: liberar n = squeeze-backports
Prioridad de clavija: 400

Paquete: *
Pin: suelte a = inestable
  • Cree '/etc/apt/apt.conf.d/100guiconf' y configure Aptitude para que muestre la información de fijación.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";
Daniel Sokolowski
fuente
1
Solo una actualización que, además de lo anterior, me decidí a ejecutar todos los paquetes de mi sistema desde los repositorios de desarrollo de 'pruebas'. Por source.listlo tanto, en él debería decir el nombre del código en jessielugar de squeeze. La política de Debian testinges casi estable y los paquetes han sido casi tan nuevos como desde el unstablerepositorio. Me estoy quedando sin espacio aquí, así que eche un vistazo a: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates y wiki.debian.org/StableProposedUpdates ; los dos últimos son fuentes de repositorio adicionales.
Daniel Sokolowski
2

Si su selección de paquetes es más complicada o la instalación se repetirá en varias máquinas, puede considerar configurar un repositorio privado que refleje un subconjunto de los repositorios oficiales. Esto requiere un poco de trabajo para configurar el repositorio, pero la recompensa es fácil de mantener con un mínimo de configuración en cada cliente y resultados repetibles al hacer docenas de instalaciones. Esto me resulta útil incluso cuando solo se están instalando uno o dos paquetes, y utilizo este método para automatizar y mantener las instalaciones en la nube. Un solo servidor en un VPS barato puede manejar docenas de repositorios privados.

Para configurar su servidor de repositorio privado:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Luego configure su servidor web de elección para servir los archivos del repositorio estático. Posiblemente proteja el repositorio con un certificado de seguridad y autenticación básica.

Para mantener automáticamente su repositorio privado y obtener actualizaciones desde arriba, coloque lo anterior en un script y ejecute desde un trabajo cron.

Para configurar su máquina cliente, en su máquina cliente:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Para mantener su máquina cliente y obtener todas sus actualizaciones de repositorio privado, en su máquina cliente:

# Update.
apt-get update

# Upgrade.
apt-get upgrade
Daniel Kauffman
fuente
1

Otra opción es descargar en su lugar el paquete fuente de la prueba. APT puede construir automáticamente el paquete fuente después de descargarlo. De esta manera, sus paquetes estables no se verán afectados por las actualizaciones de prueba. La única desventaja es que tomará más tiempo que simplemente descargar e instalar el paquete binario.

Para configurar APT para descargar paquetes fuente de las pruebas, simplemente agregue:

deb-src http://<your debian mirror here> testing main

Si solo desea seguir las pruebas actuales y no las futuras, reemplace "pruebas" con el nombre de código actual (al momento de escribir esto es "buster")

temy
fuente