Revertir instalación de paquetes

No todas las actualizaciones en el sistema operativo pueden ser benéficas, en ocasiones es posible que la actualización de algún paquete cause conflictos en nuestras aplicaciones. Para estos casos es necesario revertir la actualización de paquetes.

A lo largo de este articulo explicaré los pasos necesarios para revertir instalación de paquetes de Docker para la distribución de Ubuntu.

Lo primero a realizar es obtener el nombre exacto del paquete a revertir su actualización. Es posible filtrar este nombre, a traves del comando find, del contenido de archivos del directorio /var/lib/dpkg/info/. Este directorio contiene archivos de la configuración de los paquetes instalados. El siguiente comando busca una coincidencia en las actualizaciones realizadas en las ultimas 24 horas.

$ find /var/lib/dpkg/info/ -name \*.list -mtime -1 | sed 's#.list$##;s#.*/##' | grep docker
docker-ce

Una vez que el nombre es encontrado es necesario recurrir a la tabla de versiones para conocer las versiones disponibles. Esta tabla puede ser mostrada a traves con el comando apt-cache policy.

$ sudo apt-cache policy docker-ce
docker-ce:
  Installed: 17.12.1~ce-0~ubuntu
  Candidate: 17.12.1~ce-0~ubuntu
  Version table:
 *** 17.12.1~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
        100 /var/lib/dpkg/status
     17.12.0~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.09.1~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.09.0~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.06.2~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.06.1~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.06.0~ce-0~ubuntu 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.03.2~ce-0~ubuntu-trusty 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.03.1~ce-0~ubuntu-trusty 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages
     17.03.0~ce-0~ubuntu-trusty 0
        500 https://download.docker.com/linux/ubuntu/ trusty/stable amd64 Packages

En este caso la versión instalada en el sistema operativo es la señalada con tres asteriscos al inicio del nombre, es decir, la versión 17.12.1~ce-0~ubuntu. Esta tabla también nos permite conocer las versiones disponibles de nuestro paquete.

Por ultimo y para por fin revertir instalación de paquetes solo queda forzar la instalación del paquete a la versión deseada.

$ sudo apt-get install docker-ce=17.09.1~ce-0~ubuntu --force-yes -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be DOWNGRADED:
  docker-ce
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 21.0 MB of archives.
After this operation, 52.6 MB disk space will be freed.
Fetched 21.0 MB in 7s (2,693 kB/s)
dpkg: warning: downgrading docker-ce from 17.12.1~ce-0~ubuntu to 17.09.1~ce-0~ubuntu
(Reading database ... 69403 files and directories currently installed.)
Preparing to unpack .../docker-ce_17.09.1~ce-0~ubuntu_amd64.deb ...
docker stop/waiting
Unpacking docker-ce (17.09.1~ce-0~ubuntu) over (17.12.1~ce-0~ubuntu) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up docker-ce (17.09.1~ce-0~ubuntu) ...
Installing new version of config file /etc/bash_completion.d/docker ...
docker start/running, process 7219