¿Cómo prevenir la actualización de un paquete específico?

323

Debido a error # 693758 me gustaría evitar apt-get upgrade y Update Manager actualizan el paquete "libgtk2.0-0".

¿Cómo se puede lograr esto?

    
pregunta Ivan 23.12.2010 - 18:29

12 respuestas

471

Sosteniendo

Hay cuatro formas de retener paquetes: con dpkg, apt, aptitude o dselect.

dpkg

Poner un paquete en espera:

echo "<package-name> hold" | sudo dpkg --set-selections

Eliminar la retención:

echo "<package-name> install" | sudo dpkg --set-selections

Muestra el estado de tus paquetes:

dpkg --get-selections

Muestra el estado de un paquete único:

dpkg --get-selections | grep "<package-name>"

apt

Mantener un paquete:

sudo apt-mark hold <package-name>

Eliminar la retención:

sudo apt-mark unhold <package-name>

dselect

Con dselect, ingrese la pantalla [S] elegida, encuentre el paquete que desea mantener en su estado actual y presione = o H . Los cambios tendrán efecto inmediatamente después de salir de la pantalla [S] electo.

Los siguientes enfoques están limitados porque bloquear / mantener un paquete dentro de aptitude o synaptic no afecta a apt-get / apt.

aptitude

Mantener un paquete:

sudo aptitude hold <package-name>

Eliminar la retención:

sudo aptitude unhold <package-name>

Bloqueo con Synaptic Package Manager

Vaya a Gestor de paquetes Synaptic (Administrador de paquetes Synaptic System & gt; Administration & gt;

Haz clic en el botón de búsqueda y escribe el nombre del paquete.

Cuando encuentre el paquete, selecciónelo e vaya al menú Paquete y seleccione Bloquear versión .

Ese paquete ahora no se mostrará en el administrador de actualizaciones y no se actualizará.

    
respondido por el hhlp 23.12.2010 - 19:04
43

Para poner un paquete "foo" en espera:

echo "foo hold" | dpkg --set-selections

En su caso, vamos a poner el vino en espera:

sudo -i
echo "wine hold" | dpkg --set-selections

Para eliminar la retención:

sudo -i
echo "wine install" | dpkg --set-selections
    
respondido por el Panther 08.12.2011 - 21:15
28

Estaba buscando lo mismo y después de mucha investigación descubrí que con la siguiente sintaxis puede prohibir una versión específica pero permitir la próxima actualización:

Package: compiz-plugins-main
Pin: version 1:0.9.7.0~bzr19-0ubuntu10.1
Pin-Priority: -1

Esto va al archivo / etc / apt / preferences.

    
respondido por el soger 22.07.2013 - 13:13
19

Instalar synaptic usando sudo apt-get install synaptic .

Ejecutar usando gksudo synaptic y en el cuadro de búsqueda ubicar el paquete que desea bloquear, es decir: gedit

En el menú del paquete, seleccione Bloquear versión :

Y eso es todo, la versión actualmente instalada en el momento del bloqueo permanecerá instalada incluso durante las actualizaciones.

    
respondido por el Bruno Pereira 08.12.2011 - 21:06
16

La prevención de la instalación de un paquete se denomina "retención de paquetes" y es muy simple de hacer:

echo package_name hold | dpkg --set-selections

... donde * nombre_del_paquete * es el nombre del paquete que desea evitar desde la instalación.

Nota: el comando anterior asume los privilegios de root. En otras palabras, probablemente necesite escribir sudo su antes de ejecutarlo.

    
respondido por el RobotHumans 05.02.2011 - 02:18
5

Desde hace algún tiempo apt-get se reemplaza por apt , por lo que quiero evitar que Firefox actualice a la versión anterior a 56, porque hay muchos complementos, como " Grupos de pestañas " ya no funcionan con el nuevo Firefox 57 (ver" Actualización de WebExtensions ").

Es posible tener más de un paquete con un comando y usar comodines.

Evitar que Firefox actualice

sudo apt-mark hold firefox firefox-locale-*

Si deseas revelarlos más tarde, ese sería el comando:

sudo apt-mark unhold firefox firefox-locale-*
    
respondido por el rubo77 19.11.2017 - 08:45
4

Sináptico, puedes congelar la versión de un paquete específico. No estoy 100% seguro de si esto modificará apt-get, pero definitivamente dejará de actualizar el administrador.

Para congelar un paquete, selecciónelo en Synaptic, luego abra el menú del paquete y seleccione la versión de congelación.

Espero que esto ayude

editar: esta pregunta 16668 se ocupa de una situación similar

    
respondido por el Allan 23.12.2010 - 18:35
3

Todo lo que siempre quiso saber sobre "mantener" y "fijar" paquetes en versiones específicas: enlace

    
respondido por el Jeff Ferland 23.12.2010 - 22:09
3

Ver errores # 75332 , # 158981 y # 72806 .

El resumen es que mantener en el nivel apt-get / aptitude no activa el estado de espera en dpkg (especialmente el error 72806) y el estado de actualizaciones lee el administrador desde dpkg.

la solución se ejecuta como root: echo "package hold" | dpkg --set-selections

    
respondido por el jasper 26.11.2012 - 08:24
1

Si tiene Synaptic instalado, puede seleccionar el paquete y usar el menú Paquete - & gt; Bloquear versión para evitar que se actualice.

Puede instalar Synaptic con sudo apt-get install synaptic. Personalmente, lo encuentro más útil que el Centro de Software ... una vez más, soy bastante viejo. :)

    
respondido por el dinchamion 08.12.2011 - 21:06
1

Puedes usar en aptitude la "anulación específica", como esta:

aptitude reinstall ~i oracle-java8-jre:

Este es un uso único de (no almacenado para futuras reinstalaciones), mantiene una anulación específica, para volver a instalar todos los paquetes en su sistema, pero no para oracle-java8-jre.

Si usa una anulación específica de mantener, el paquete estará momentáneamente en estado de mantener una aptitud, no intentará instalarlo.

Algo muy bueno si crees que tu sistema se vio comprometido de alguna forma.

    
respondido por el cabonamigo 18.05.2017 - 18:27
0

Ocasionalmente, uno podría querer contener todos los paquetes instalados actualmente. He aquí cómo.

Primero guarde el estado actual, para poder deshacer:

dpkg --get-selections > current_selections.txt

Luego, para retener todos los paquetes:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

Finalmente, cuando desee volver al estado anterior:

dpkg --set-selections < current_selections.txt

Un caso de uso para esto podría ser cuando se crea una VM o una instantánea AMI de Amazon para migrar de un control de calidad al entorno de producción.

    
respondido por el JVW 14.01.2015 - 20:46

Lea otras preguntas en las etiquetas