¿Cómo degradar un paquete a través de apt-get?

Respuestas:

308

Si tiene el número de versión, o la versión de destino, apt-getadmite elegir una versión o versión de destino en particular. Se pueden encontrar más detalles en la página del manual de apt-get . También se puede acceder desde la terminal escribiendoman apt-get

sudo apt-get install <package-name>=<package-version-number> O

sudo apt-get -t=<target release> install <package-name>

es el comando a ejecutar. Esto se puede usar para degradar un paquete a una versión específica.

Se ha señalado útilmente en los comentarios que

  • apt-cache showpkg <package-name>enumera todas las versiones disponibles. (h / t Gavilán )
  • apt-mark hold <package-name> "retiene" el paquete en la versión actual, evitando actualizaciones automáticas. (h / t Luís de Sousa )
Mahesh
fuente
58
Además, use apt-cache showpkg <package-name>para enumerar las versiones disponibles.
Sparhawk
16
Y luego también puede que desee ejecutar: apt-mark hold <package-name>para evitar actualizaciones automáticas.
Luís de Sousa
44
Descubrí que aptituderebajó las dependencias mejor que apt-get.
krispy
55
apt-cache policy <package-name>muestra solo las versiones instaladas y disponibles
Michael Lawton
18
¿Y si showpkgno muestra la versión que le interesa?
demongolem
104

UTILIZAR

apt-get install «pkg»=«version»

O

sudo aptitude install «pkg»=«version»

Donde «pkg» es el nombre del paquete y «versión» es el número de versión.

Danorton
fuente
3
cuando escribo apt-get install pkg=versionapt-get ofrece eliminar casi la mitad de todos los paquetes instalados que, por supuesto, no es lo que quiero hacer
Dfr
Como se señaló en la respuesta (por lo demás idéntica) con más votos, este parece ser uno de los casos clave donde aptitudehace un trabajo mucho mejor que apt-get. En mi caso, apt-getrechacé rotundamente la solicitud de degradación, mientras que aptitudeseñaló que había otros paquetes que dependían de la versión más nueva (y por lo tanto, necesitaban una degradación al mismo tiempo).
sxc731
28

Si ha actualizado el software usando ppa, puede degradarlo usando ppa-purge. Primero debes instalar ppa-purgeusando este código:

sudo apt-get install ppa-purge

Luego puedes eliminar el ppa usando el comando

sudo ppa-purge ppa: usuario / nombre-ppa

esto degradará automáticamente el software a su versión original que se envió con Ubuntu.

Apurba
fuente
1
Esta solución no tiene comparación en caso de que el paquete tenga dependencias que también tengan que degradarse. ¡Gracias!
y el
1
Sí, esta es la solución que mejor funcionó para mí para degradar el escritorio KDE / Plasma desde kubuntu-ppa / backports: una cosa que noté es que el archivo .list de PPA no debe tener la deb comentada, por lo que ppa-purge puede hacer referencia a todos los archivos que necesitan ser removidos para la purga. Me tomó un minuto descubrir por qué no estaba funcionando al principio. Espero que ayude a otras personas!
AveryFreeman
10

Para rebajar tienes que hacer un comando como

 sudo apt-get install pkg_name=version

en tu terminal

En lugar de versioncolocar la versión anterior a la que desea degradar.

rɑːdʒɑ
fuente
No funciona al menos para linux-generic, que depende de paquetes que también deberían degradarse. Me sale paste.ubuntu.com/p/NWSmf2ZwTy
mymedia
9

En mi opinión, primero debe desinstalar o purgar el paquete, como:

sudo apt-get remove <package>

o

sudo apt-get purge <package>

Luego, puede descargar la versión que desea instalar y guardarla en una carpeta, por ejemplo abc.deben Descargas. Abra la terminal, muévase a la carpeta usando el cdcomando e instale la versión anterior usando dpkg:

sudo dpkg -i abc.deb

O bien, hay una pequeña utilidad llamada ppa-purgesi quiere degradar paquetes actualizados a través de PPA.

Ver este hilo: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html

La llama eterna
fuente
3
eliminar un paquete puede eliminar muchos dependientes, lo que da como resultado un sistema inutilizable. Sin embargo, ppapurge suena interesante.
escriba
12
¿Puede explicar por qué cree que deberíamos desinstalar primero los paquetes (como un paso separado) antes de instalar versiones anteriores de ellos?
Eliah Kagan
1
@temoto ese enlace es para degradar versiones unstable-> testing-> stableno para degradar paquetes individuales.
Braiam
0

Esta pregunta es antigua, pero Google me trajo hasta aquí y no encontré una solución simple que no requiera pasar la versión manual al degradar un montón de paquetes a versiones anteriores.

Entonces, tal vez alguien que también lo necesite encuentre útil mi solución también.

Hay una herramienta llamada apt-show-versionsque muestra las versiones instaladas.

Puede degradar fácilmente todos los paquetes necesarios ajustando la expresión regular, pero aquí está:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

En lugar de jessieusted puede usar buster/ xenial/ etc. dependiendo de sus necesidades.

gudvinr
fuente
O degradar de forma automática a hasta a la fecha de instalación de liberación: sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'). Prefiero usar -Fpor grepaquí.
jarno
Debe ejecutar sudo apt-show-versions -iprimero, si el caché del paquete no está actualizado.
jarno