Actualización rota y desorden de paquetes: ¿cómo elimino paquetes antiguos manualmente?

Actualización rota y desorden de paquetes: ¿cómo elimino paquetes antiguos manualmente?

Después de do-release-upgradecambiar de 16.04 a 18.04, algo falló y la máquina quedó en un estado "intermedio", con muchos problemas de dependencias rotas. Mi árbol de paquetes es un desastre, estoy desesperado... ;-)

Intenté muchas cosas (incluida dpkg --configure -ala eliminación aleatoria de paquetes con dpkg --force depends -P <pkg-name>, además de otras cosas), pero estoy un poco estancado en este momento.

Entonces, cuando intento:

$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
   (here 20 lines)
The following additional packages will be installed:
... (here 5 lines)
 Suggested packages:
 ... more
Recommended packages:
 ... more
The following packages will be REMOVED:
 ... more
The following NEW packages will be installed:
 ... more (10 lines)
28 upgraded, 6 newly installed, 1 to remove and 327 not upgraded.
228 not fully installed or removed.
Need to get 0 B/13,3 MB of archives.
After this operation, 2 771 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Hasta aquí no tengo miedo de nada. Pero ahora, entrando Y:

Extracting templates from packages: 100%
(Reading database ... 977800 files and directories currently installed.)
Removing ubuntu-advantage-tools (27.0.2~18.04.1) ...
Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "/usr/lib/python3/dist-packages/uaclient/apt.py", line 9, in <module>
    from uaclient import gpg
  File "/usr/lib/python3/dist-packages/uaclient/gpg.py", line 3, in <module>
    import shutil
ModuleNotFoundError: No module named 'shutil'
dpkg: error processing package ubuntu-advantage-tools (--remove):
 installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 ubuntu-advantage-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Entonces esto suena como un error de Python, por lo que tengo entendido, no se puede encontrar shutil. Así que descargué manualmente lo que pensé que era: https://packages.ubuntu.com/bionic/python-backports-shutil-get-terminal-size e instalado manualmente con:

sudo dpkg -i python-backports-shutil-get-terminal-size_1.0.0-5_all.deb

Pero hacerlo apt --fix-broken installde nuevo termina en el mismo punto.

Tengo conocimientos limitados de Python, por lo que no puedo estar seguro de que este sea el problema real, pero cualquier ayuda es bienvenida. De lo contrario, el siguiente paso probablemente será reinstalar desde cero, pero realmente preferiría evitarlo.

Actualmente puedo instalar paquetes manualmente (descargarlos desdehttps://paquetes.ubuntu.com/entonces dpkg -i) pero eso es todo, todo lo demás falla.

Por ejemplo, si intento instalar libpython3.6-stdlib:

$ sudo apt-get install libpython3.6-stdlib

Yo obtengo:

libpython3.6-stdlib : Depends: libpython3.6-minimal (= 3.6.9-1~18.04ubuntu1.4) but 3.6.13-1+xenial2 is to be installed

lo que significa que yoaúnTengo paquetes desde el 16.04 (Xenial).

¿Cómo puedo manualmente?eliminar¿Todos los paquetes 16.04?

Información adicional (la máquina ahora arranca solo con una consola):

  • $ python --version=> Pitón 3.6.13
  • $ lsb_release -ano está disponible
  • $ uname -ame dice que es un kernel 4.15 (que parece consistente con 18.04)

Respuesta1

FWIW: De hecho, el punto clave estaba aquí:

dpkg: error processing package ubuntu-advantage-tools (--remove):
 installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1

Todo el proceso falló debido a la falla del script "pre-eliminación" del paquete ubuntu-advantage-tools(¡no tengo idea de qué es eso!).

Así que lo hice:

$ sudo mv /var/lib/dpkg/info/ubuntu-advantage-tools.prerm /var/lib/dpkg/info/ubuntu-advantage-tools.prerm_OLD

y pude completar el sudo apt --fix-broken installcomando.

Reinicie, luego otro problema (teclado no reconocido) que se resolvió usandootra pregunta, después de arrancar en modo de recuperación:

$ sudo apt-get install xserver-xorg-input-all

Finalmente pude arrancar gráficamente, pero... todavía hay algunos problemas con el administrador de paquetes que aún hace referencia a xenial (16.04). Publicaré otra pregunta.

Respuesta2

Esto parece un sistema muy enfermo; es posible que desees sacarlo de su miseria, es decir, reinstalarlo. Si aún no tiene un /homesistema de archivos separado, copie su directorio de inicio y todo lo que haya trabajado y comience de nuevo para obtener un sistema limpio nuevamente.

También lo copiaría /etcen caso de que valga la pena rescatar algún archivo de configuración no trivial (pero evitaría copiarlo al nuevo sistema a menos que sea absolutamente necesario).

Piénselo de esta manera: ese sistema le sirvió bien durante muchos años (en algún momento justo después de 2016, ya que es 16.04); déjalo descansar en paz. ;-) Ahora es el momento de algo nuevo y limpio.

Una vez hice una lista de verificación de lo que le hago a un Ubuntu recién instalado para darle la forma que considere más utilizable; tal vez puedas inspirarte un poco en ello:https://github.com/shundhammer/huha-linux-tips/blob/master/doc/ubuntu-tips.md(algunas partes pueden estar un poco desactualizadas; no importa)

información relacionada