¿Cómo puedo eliminar todas las actualizaciones instaladas después de una fecha específica?

12

He permitido que el administrador de actualizaciones instale 200 Mib de actualizaciones, y creo que estas actualizaciones ejecutan mi controlador de gráficos en un problema. Por lo tanto, necesito una forma de eliminar las actualizaciones que se han instalado desde el 30 de mayo 12 por ejemplo (o cualquier otra fecha). Si tengo que eliminarlos manualmente (en el caso de desinstalarlos uno por uno), se le solicita amablemente que me dé las instrucciones de cómo hacerlo.

creativo
fuente

Respuestas:

8

Existe un enfoque alternativo de línea de comandos para obtener el historial de instalación.

El administrador de paquetes aptparece registrar todo /var/log/apt/history.logy /var/log/apt/term.log, incluso, separar todo por sellos de fecha. Ambos contienen información similar y utilizable, pero term.logson más detallados y no indican explícitamente qué inició la operación.

Registro de la historia

/var/log/apt/history.logalmacena un resumen conciso de cada aptejecución. Aquí hay un fragmento mío para una instalación manual:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13

El Commandline:campo indica qué desencadenó la ejecución y, en el caso de las instalaciones realizadas por el administrador de actualizaciones, debería ser similar a:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

... y está su lista de paquetes, ordenados por fecha, método y acción (instalar / actualizar / eliminar). Tenga en cuenta que si desea devolver estos paquetes a apt-get remove ...:

  • Como se mencionó , esto elimina completamente los paquetes en lugar de revertirlos. La información en los registros ciertamente podría usarse para ver los paquetes actualizados, aunque deshacerlos es otra cuestión.
  • Deberá eliminar los paréntesis, su contenido y el separador de coma de la lista a través de su método preferido de manipulación de texto (por ejemplo sed, vimetc.). Entonces, si quisiera eliminar los paquetes en el fragmento anterior, puedo usar la línea relativamente directamente:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

Terminal log

Por /var/log/apt/term.loglo general, está menos convenientemente estructurado, pero, en aras de la integridad, puede obtener la misma información. La salida del terminal está delimitada por las marcas de tiempo nuevamente, y las instalaciones de paquetes se pueden obtener de líneas de la siguiente forma:

Selecting previously unselected package nautilus-dropbox.

La siguiente es una forma de imprimir una lista de paquetes instalados en el terminal para todo el registro:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log

Esto se puede adaptar o ampliar para obtener instalaciones en un rango de fechas.

Cabeza eléctrica
fuente
1
Si esto puede hacer más fácil la vida de alguien, aquí está la sed de fragmento de código que utiliza para eliminar los parens y comas del paquete /var/log/apt/history.log enumerado para que yo les podía alimentar a apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx
4

Nota: a diferencia de Windows, eliminar una actualización en Ubuntu normalmente desinstalará ese paquete / programa y no simplemente lo revertirá (o degradará) a la versión anterior.

Puede abrir el Centro de software de Ubuntu y hacer clic en historial

ingrese la descripción de la imagen aquí

Una vez que haga eso, haga clic en actualizaciones, y eso le mostrará todas las actualizaciones que están instaladas en su sistema. Una vez que descubra las actualizaciones que necesita eliminar, debe hacerlo manualmente.

ingrese la descripción de la imagen aquí

Para eliminar, puede usar Synaptic Package Manager. Si no lo tiene instalado, puede instalarlo desde

Mitch
fuente
gracias. ¿Implica algún comando en la terminal para hacerlo?
creativo