Debian multiarch: desactivar una arquitectura.

Os dejo una receta para resolver una situación un poco molesta que presenta de vez en cuando.

A veces, por alguna razón importante, necesitamos instalar en nuestro linux un programa propietario que necesita paquetes de la arquitectura i386. Después de investigar un poco, acabamos modificando la configuración del sistema para que acepte paquetes de la nueva arquitectura y desde ese momento tenemos una mezcla de paquetes compilados para varias arquitecturas, normalmente i386 y amd64. Después de un tiempo, dejamos de necesitar ese programa y queremos hacer limpieza de todos los paquetes que sobran.

El comando para eliminar una arquitectura de los repositorios es:

dpkg --remove-architecture i386

Pero esto nos dará un ...

dpkg: error: cannot remove architecture 'i386' currently in use by the database

... ya que tenemos varios paquetes instalados en el sistema de esas arquitectura.

La solución es fácil. Con ...

dpkg -l | grep i386

... obtenemos la lista de paquetes instalados en el sistema de una arquitectura. Si son pocos, puedes desinstalarlos manualmente pero si son muchos puedes usar este comando para hacerlo de una vez.

apt-get remove --purge `dpkg --get-selections | grep i386 | awk '{print $1}'`

Una vez terminada la desinstalación el comando para eliminar la arquitectura funciona correctamente y listo. Tu sistema vuelve a tener sólo paquetes de la arquitectura adecuada.