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


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

¿Cuál es la mejor manera de instalar solo ciertos paquetes de Testing?


180
2018-06-09 07:53


origen


Esto es lo que la última documentación oficial tiene que decir: Paquetes de fuente mixta de archivos.. - Alexey


Respuestas:


Mucha gente parece tener miedo de mezclarse estable con las pruebas, pero, francamente, las pruebas son bastante estables por sí mismas, y con las preferencias y el control de soluciones adecuados, puede evitar la "deriva de estabilidad" que pone a sus paquetes centrales en el camino inestable.

"La prueba es bastante estable?", usted pregunta. Sí. Para que un paquete migre de inestable a prueba, debe tener cero errores abiertos durante 10 días consecutivos. Las posibilidades son que, especialmente para los paquetes más populares, alguien va a enviar un informe de error para una versión inestable si algo está mal.

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

Esto es lo que recomiendo para configurar esto:

Primero, crea los siguientes archivos en /etc/apt/preferences.d:

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

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

testing.pref:

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

unstable.pref:

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

experimental.pref:

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 instalará los paquetes que desea ser en la prueba.)

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

security.list:

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

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

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

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

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

Puedes reemplazar el espejo de steadfast.net con lo que quieras. Recomendaría usar netselect-apt para descubrir el espejo más rápido y usarlo para su primera elección. los ftp.us.debian.org Puede ser utilizado como una copia de seguridad. También es importante usar los términos. stable, testing, unstable, etc., en lugar de squeeze, wheezy, sid, etc., desde stable es un objetivo móvil y cuando llegue el momento de actualizar a la última versión estable, apt / aptitude lo resolverá automáticamente.

También puede agregar un oldstable en sources.lists.d y preferences.d (use una prioridad de 1), aunque este apodo tenderá a caducar y desaparecerá antes del siguiente ciclo estable. En casos así, puedes usar 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, simplemente use aptitude install lib-foobar-package/testing, o simplemente ingrese 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, mire primero 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 instalar foobar-package / testing", marque esa opción como rechazada, y las otras soluciones nunca se desviarán de esa ruta nuevamente. En casos como estos, es probable que tenga que instalar algunos otros paquetes de prueba.

Si se está volviendo demasiado peludo (como si intentara actualizar libc o el kernel o algún otro sistema de gran núcleo), entonces puede rechazar esas rutas de actualización o simplemente retirarse de la actualización inicial por completo. Recuerda que solo se actualizarán las cosas a prueba / inestable si lo permites.


166
2018-04-23 02:38



Gracias, usé este método y todo está funcionando como esperaba. - Brad F Jacobs
Estoy tratando de usar esto, pero no puedo resolver ninguna dependencia en absoluto. Parece que ni apt-get, ni aptitude buscarán las dependencias en los repositorios de prueba. ¿Hay una manera de resolver eso? - Tamás Szelei
Corriste apt-get update Después de crear los archivos de configuración? - Flow
IMPORTANTE: el autor eligió un valor de preferencia de anclaje para estabilidad / seguridad que es mayor que el valor predeterminado de la versión ... ver serverfault.com/a/653552/120130 para más información - Alex Ryan
Esta respuesta acaba de romper mi sistema. Después de un intento de hacer sudo apt-get update, Tengo un error de actualización Luego reinició, lo que me dio Xsession error, reiniciado de nuevo, y ahora no tengo gui. la /dev/sda1/ ahora está lleno Genial. - luchonacho


En /etc/apt/apt.conf.d agrega 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

correr

apt-get update

y luego instala lo que necesites 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 suerte en backports o repositorio similar.


90
2018-06-09 07:57



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
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 más estable. - El Yobo
Ya no se puede utilizar, por favor actualice - Lothar
en las nuevas versiones de Debian no hay un archivo apt.conf, en su lugar edite /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

Defina el nivel predeterminado al que el sistema debería "actualizar de forma segura" en el archivo / etc / apt / preferences:
hombre apt_preferences

Hay mucho que puedes 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 / 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 varios repositorios agregados a /etc/apt/sources.list, aptitude ahora solo se actualizará a su versión especificada aunque los repositorios de la versión más reciente 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 tienes que hacer es:

$ aptitude install -t testing packageName 

46
2018-06-09 08:04



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
Esto es demasiado complicado para la tarea ... Usar APT :: Predeterminado-Liberación establece la prioridad de pines del lanzamiento en 990 (similar a cómo lo configuró en 900) y la fijación negativa para el resto no es realmente necesaria. . Durante las actualizaciones de dist, el paquete estable tiene prioridad de todos modos y tan pronto como enumere algo explícitamente en la línea de comandos, su prioridad de anclaje negativa se ignorará en su mayoría. - Raphaël Hertzog
No estoy seguro de cómo responderte @Raphael. Parece una forma muy elegante de hacer las cosas. He usado apt pinning antes de años atrás, pero nunca lo "entendí". Los ejemplos que he usado anteriormente son directamente de la página del manual de apt_preferences. - Gareth
Confirme que esto funciona bien al apretar - tomfanning
@Lothar: Funciona en Debian 6. El hecho de que el archivo no exista no significa que no funcione. Solo crea el archivo y agrega la configuración. Cita de la página del 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


La documentación de Debian es extensa en el tema y recomiendo encarecidamente profundizar, ya que revelará verdaderamente la belleza del sistema Debian.

Mira esto Cómo mantener un sistema mixto, te explicará todo lo que necesitas saber.


12
2018-06-09 08:24



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


Para 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 se combinan estables con las pruebas, los paquetes muy básicos (como libc6) requerirán actualizaciones (para poder instalar el software desde las pruebas), y una vez que estos paquetes básicos se mueven a las pruebas, todo el sistema puede desviarse de esa manera.

Aquí hay dos alternativas:

  1. Utilizar Backports.
  2. Instale una línea fuente desde la prueba e intente Construye la última versión que quieras de la fuente..

10
2018-06-09 13:09



Estoy de acuerdo. Acabo de intentar actualizar libdvdread4 desde las pruebas debido a un error en la versión en wheezy / stable. Aunque quiere traer el último libc. Así que simplemente tomé el paquete fuente para libdvdread4 de estable y lo parché con el cambio de fuente de 1 línea y lo reconstruí. Mucho mejor que sacar todo tipo de paquetes de pruebas. Ahora todos los paquetes siguen siendo los "estables" y solo tengo el cambio de 1 línea que necesito. - dgrant


Otra forma, que podría evitar la instalación de demasiadas dependencias desde Testing o Sid, es la siguiente: 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 realizar modificaciones manuales) con fuentes).

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

¿Cómo realizo una copia de seguridad de 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 

Los debs resultantes deben estar en el directorio actual y pueden ser   instalado con dpkg -i the.deb.


7
2018-03-13 17:02





Lo he estado haciendo durante un período prolongado de tiempo para tener confianza al decir que es lo suficientemente seguro y que puede ser conveniente. Con la siguiente configuración, la versión estable se instalará de manera predeterminada, sin embargo, Aptitude también le permitirá elegir la versión con backport o inestable si así lo desea:

enter image description here

Hay cuatro cosas que deben editarse, la versión de anclaje predeterminada debe configurarse, las fuentes necesitan backports y inestabilidad agregada, lo que reduce la prioridad de anclaje de los paquetes backports / inestable, y la configuración de visualización de aptitudes debe modificarse para mostrar el anclaje.

  • Crear un '/etc/apt/apt.conf.d/10defaultrelease' y hacer su contenido de la siguiente manera:
Apt :: default-Release "estable";
  • Edita tu '/etc/apt/sources.list' para agregar fuentes inestables y backports para que se vea algo como esto:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Official Multi-architecture 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/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

# ex no ex. sun java
#deb http://ftp.us.debian.org/debian/ squeeze no es gratis
# deb-src http://ftp.us.debian.org/debian/ squeeze no gratuito
  • Editar etc/apt/preferences pinning archivo: si el archivo no existe, créelo.
# Paquete de prioridades de fijación
# Ver http://wiki.debian.org/AptPreferences y http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# En tu cáscara de tuerca el PIN más alto se instala
#
# Los valores predeterminados de Pining son los siguientes, que se agregan a nuestra configuración:
# 990 - para las versiones que no están instaladas pero SÍ pertenecen a nuestra configuración `APT :: Default-Relase" stable "`.
# 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 pines
# 400 - backports que se pueden instalar de manera segura sin la necesidad de actualizar otros paquetes
# 50 - paquetes inestables, instalación forzada en la pantalla de detalles, puede resultar en conflictos

Paquete: *
Pin: soltar n = apretar-backports
Pin-Priority: 400

Paquete: *
Pin: suelte a = inestable
  • Crear '/etc/apt/apt.conf.d/100guiconf' y para configurar Aptitude para que muestre la información de anclaje.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";

4
2018-02-04 22:59



Solo una actualización que, además de la anterior, me he decidido a ejecutar todos los paquetes de mi sistema desde los repositorios de desarrollo de "pruebas". Así que en source.list debería decir el nombre en clave jessie en lugar de squeeze. La política de debian testing está casi estable y los paquetes han sido casi tan nuevos como los de la unstable repositorio. Me estoy quedando sin espacio, así que por favor eche un vistazo a: wiki.debian.org/DebianReleases, wiki.debian.org/StableUpdatesy wiki.debian.org/StableProposedUpdates; Los dos últimos son fuentes de repositorio adicionales. - Daniel Sokolowski


Si su selección de paquetes es más complicada o la instalación se repetirá en varias máquinas, puede considerar la creación de 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. Encuentro esto útil incluso cuando solo se instalan uno o dos paquetes, y uso 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 el servidor web de su elección para servir los archivos de repositorio estáticos. 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 el flujo ascendente, coloque lo anterior en un script y ejecútelo 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:password@private.repository.example.com/ 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 las actualizaciones de su repositorio privado en su máquina cliente:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

2
2017-07-06 18:53