Defektes Update und Paketchaos: Wie entferne ich alte Pakete manuell?

Defektes Update und Paketchaos: Wie entferne ich alte Pakete manuell?

Nach dem do-release-upgradeWechsel von 16.04 auf 18.04 ist etwas schiefgegangen und die Maschine war in einem „Zwischenzustand“ mit vielen Problemen mit defekten Abhängigkeiten. Mein Paketbaum ist ein Chaos, ich bin verzweifelt... ;-)

Ich habe viele Dinge ausprobiert (einschließlich dpkg --configure -a, dem zufälligen Entfernen von Paketen mit dpkg --force depends -P <pkg-name>und andere Dinge), aber im Moment stecke ich fest.

Also, wenn ich es versuche:

$ 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] 

Bis hierhin nichts, wovor ich Angst habe. Aber jetzt kommt 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)

Das klingt also nach einem Python-Fehler. Soweit ich weiß, kann es nicht gefunden werden shutil. Also habe ich manuell heruntergeladen, was ich für das Problem hielt: https://packages.ubuntu.com/bionic/python-backports-shutil-get-terminal-size und manuell installiert mit:

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

Aber wenn man es apt --fix-broken installnoch einmal versucht, landet man wieder am selben Punkt.

Ich habe nur begrenzte Kenntnisse in Python, daher kann ich nicht sicher sein, ob dies das eigentliche Problem ist, aber jede Hilfe ist willkommen. Andernfalls wird der nächste Schritt wahrscheinlich eine Neuinstallation von Grund auf sein, aber das würde ich wirklich lieber vermeiden.

Derzeit kann ich Pakete manuell installieren (Download vonhttps://packages.ubuntu.com/dann dpkg -i), aber das war es auch schon, alles andere schlägt fehl.

Wenn ich beispielsweise versuche, Folgendes zu installieren libpython3.6-stdlib:

$ sudo apt-get install libpython3.6-stdlib

Ich bekomme:

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

was bedeutet, dass ichTrotzdemhabe Pakete ab 16.04 (Xenial).

Wie kann ich manuellentfernenalle 16.04-Pakete?

Zusatzinfo (Maschine bootet jetzt nur noch mit einer Konsole):

  • $ python --version=> Python 3.6.13
  • $ lsb_release -aist nicht verfügbar
  • $ uname -asagt mir, dass es ein 4.15-Kernel ist (was mit 18.04 vereinbar zu sein scheint)

Antwort1

FWIW: Der entscheidende Punkt war tatsächlich hier:

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

Der gesamte Vorgang ist aufgrund eines Fehlers im „Pre-Removal“-Skript für das Paket fehlgeschlagen ubuntu-advantage-tools(keine Ahnung, was das ist!).

So tat ich:

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

und ich konnte den sudo apt --fix-broken installBefehl ausführen.

Neustart, dann ein weiteres Problem (Tastatur nicht erkannt), das gelöst wurde miteine andere Frage, nach dem Booten im Wiederherstellungsmodus:

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

Konnte endlich grafisch booten, aber... immer noch Probleme mit dem Paketmanager, der immer noch auf Xenial (16.04) verweist. Ich werde eine weitere Frage posten.

Antwort2

Das klingt nach einem sehr kranken System. Vielleicht möchten Sie es von seinem Elend erlösen, d. h. neu installieren. Wenn Sie /homenoch kein separates Dateisystem haben, kopieren Sie Ihr Home-Verzeichnis und alles, woran Sie gearbeitet haben, weg und beginnen Sie von vorne, um wieder ein sauberes System zu erhalten.

Ich würde sie auch kopieren, /etcfür den Fall, dass es sich lohnt, eine nicht triviale Konfigurationsdatei zu retten (ich würde sie aber nicht auf das neue System kopieren, es sei denn, es ist unbedingt nötig).

Sehen Sie es so: Dieses System hat Ihnen viele Jahre lang gute Dienste geleistet (irgendwann kurz nach 2016, da es eine Version 16.04 ist); lassen Sie es in Frieden ruhen. ;-) Jetzt ist es Zeit für etwas Neues und Sauberes.

Ich habe mir mal eine Checkliste erstellt, was ich mit einem frisch installierten Ubuntu mache, um es in eine Form zu bringen, die ich für optimal nutzbar halte; vielleicht kannst Du daraus etwas Inspiration schöpfen:https://github.com/shundhammer/huha-linux-tips/blob/master/doc/ubuntu-tips.md(einige Teile könnten etwas veraltet sein, aber keine Sorge)

verwandte Informationen