Python 3.8.x-Probleme in 20.04

Python 3.8.x-Probleme in 20.04

Ich war bereits dabei, zu einem Backup-Image meiner MicroSD zurückzukehren, das etwa 1,5 Wochen alt war, bis ich es auf eine brandneue SanDisk Micro SD-Karte geschrieben hatte. Das ext4-Dateisystem gab beim Booten eine Reihe von Inode-Fehlern aus, alles im Betriebssystem war mehr oder weniger komplett kaputt und es fsckgab im Grunde eine wahnsinnige Liste von Dingen, die auf Dateisystemebene kaputt waren. Es ist eine brandneue SanDisk Micro SD-Karte, aber anscheinend sind während des Backup-Prozesses Daten durch die Hintertür beschädigt worden.

Ich verwende Ubuntu 20.04 auf einem Raspberry Pi 4B, was bedeutet, dass es auf der arm64-Architektur läuft. Daher python3-minimalfunktionieren Vorschläge, die .deb-Pakete direkt von kernel.org herunterzuladen oder IE zu installieren, nicht, da es keine Installationskandidaten für ARM64 gibt.

  • Lösungen, die auf .deb und andere Installationspakete verweisen, die für die arm64-Architektur überhaupt nicht existieren.

  • Insgesamt gab es außerdem jede Menge veraltete oder schlichtweg schlechte Ratschläge. Zudem sind keine der in den Handbüchern oder in der Ubuntu-Benutzercommunity (Boot-CD auf einem Raspberry Pi?) beschriebenen Methoden zur Systemwiederherstellung auf 20.04 auf dem Raspberry Pi 4B anwendbar, zumindest noch nicht.

Meine Installation schleppt sich immer noch dahin, aber das apt/dpkg-Updatesystem bleibt ziemlich kaputt, egal, was ich versuche. Ich habe erfolglos versucht, die .deb-Pakete herunterzuladen und sie separat zu installieren.

Im Moment sind Py3compile und Pyclean nirgends zu finden und diese beiden sind die Hauptursache dafür, dass dpkg/apt nicht funktioniert.diese Antwortfunktioniert nicht.

$ sudo apt install python3-all
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-all is already the newest version (3.8.2-0ubuntu2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
Need to get 0 B/129 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up pychess (0.12.2-1build1) ...
/var/lib/dpkg/info/pychess.postinst: 6: pycompile: not found
dpkg: error processing package pychess (--configure):
 installed pychess package post-installation script subprocess returned error ex                                   it status 127
dpkg: error processing package python-pkg-resources (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
Setting up gir1.2-dee-1.0 (1.2.7+17.10.20170616-4ubuntu6) ...
/var/lib/dpkg/info/gir1.2-dee-1.0.postinst: 6: pycompile: not found
dpkg: error processing package gir1.2-dee-1.0 (--configure):
 installed gir1.2-dee-1.0 package post-installation script subprocess returned e                                   rror exit status 127
Setting up python3-minimal (3.8.2-0ubuntu2) ...
Traceback (most recent call last):
  File "/usr/bin/py3compile", line 28, in <module>
    import struct
  File "/usr/lib/python3.8/struct.py", line 13, in <module>
    from _struct import *
ModuleNotFoundError: No module named '_struct'
dpkg: error processing package python3-minimal (--configure):
 installed python3-minimal package post-installation script subprocess returned                                    error exit status 1
No apport report written because MaxReports is reached already
                                                              Errors were encoun                                   tered while processing:
 pychess
 python-pkg-resources
 gir1.2-dee-1.0
 python3-minimal
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
  • Auch eine Neuinstallation mit sudo apt install --reinstall -f python3-allhilft nicht.
  $ sudo apt install --reinstall -f python3-all
  Reading package lists... Done
  Building dependency tree
  Reading state information... Done
  0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
  4 not fully installed or removed.
  Need to get 0 B/131 kB of archives.
  After this operation, 0 B of additional disk space will be used.
  (Reading database ... 1052975 files and directories currently installed.)
  Preparing to unpack .../python3-all_3.8.2-0ubuntu2_arm64.deb ...
  Unpacking python3-all (3.8.2-0ubuntu2) over (3.8.2-0ubuntu2) ...
  Setting up pychess (0.12.2-1build1) ...
  /var/lib/dpkg/info/pychess.postinst: 6: pycompile: not found
  dpkg: error processing package pychess (--configure):
   installed pychess package post-installation script subprocess returned error exit status 127
  dpkg: error processing package python-pkg-resources (--configure):
   package is in a very bad inconsistent state; you should
   reinstall it before attempting configuration
  Setting up python3-all (3.8.2-0ubuntu2) ...
  Setting up gir1.2-dee-1.0 (1.2.7+17.10.20170616-4ubuntu6) ...
  /var/lib/dpkg/info/gir1.2-dee-1.0.postinst: 6: pycompile: not found
  dpkg: error processing package gir1.2-dee-1.0 (--configure):
   installed gir1.2-dee-1.0 package post-installation script subprocess returned error exit status 127
  Setting up python3-minimal (3.8.2-0ubuntu2) ...
  Traceback (most recent call last):
    File "/usr/bin/py3compile", line 28, in <module>
      import struct
    File "/usr/lib/python3.8/struct.py", line 13, in <module>
      from _struct import *
  ModuleNotFoundError: No module named '_struct'
  dpkg: error processing package python3-minimal (--configure):
   installed python3-minimal package post-installation script subprocess returned error exit status 1
  No apport report written because MaxReports is reached already
                                                                Errors were encountered while processing:
   pychess
   python-pkg-resources
   gir1.2-dee-1.0
   python3-minimal
  needrestart is being skipped since dpkg has failed
  E: Sub-process /usr/bin/dpkg returned an error code (1)
  • sudo dpkg --configure -aund sudo apt -f installführen zu denselben Fehlern.
  • Die dpkg-Wiederherstellungsanweisungen (wie für ieSo installieren Sie dpkg neu) funktioniert auch nicht, da die benötigten Dateien nicht vorhanden sind /var/cache/apt/archives/.

Ich habe versucht, die .deb-Pakete direkt von der Ubuntu-Website zu beziehen, sie zu extrahieren und separat zu installieren.

Angesichts der Tatsache, dass den Forumsbeiträgen zufolge, die ich gelesen habe, die Leute seit mindestens zehn Jahren ihre Ubuntu- und andere Debian-basierte Systeme kaputt machen, wenn irgendetwas mit Python schief läuft – sei es ein Benutzerfehler oder ein Paket, das Dinge kaputt macht – wäre es nicht sicherer, die Art und Weise, wie die dpkg/apt-Architektur in Linux gehandhabt wird, grundlegend zu korrigieren und alle Python-Module und -Abhängigkeiten, die sie zum Ausführen benötigen, vom Rest des Betriebssystems zu isolieren? Oder eine Art ausfallsichere Methode zur Systemwiederherstellung für Fälle dieser Art von schwerwiegenden Situationen zu erstellen, die anscheinend recht häufig auftreten.

Antwort1

Ich habe auf Ihren vorherigen Beitrag geantwortet, aber es scheint, dass die Sperre einige Probleme verursacht hat.

Wie ich in meinem ursprünglichen Beitrag erwähnt habe, können Sie die relevanten .deb-Dateien manuell extrahieren und ein zusammengeschustertes Python neu erstellen, um sich selbst zu booten. Es scheint, dasshttps://packages.ubuntu.com/focal/python3hat keine Mirrors für arm64 aufgelistet, aber nach einer kurzen Suche fand ichhttps://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/python3_3.8.2-0ubuntu2_arm64.deb.htmlHier erhalten Sie alle Paketnamen und gelangen dann zuhttp://ports.ubuntu.com/pool/main/p/python3.8/zum Download (dieser Mirror enthält alle arm64-Pakete). Sie müssen beim Paket „python3“ beginnen und alle Abhängigkeiten manuell durchsuchen, um sie alle zu erfassen. Es sieht so aus, als ob py3compileund py3cleanbeide inpython3-minimal-Paket

Zweitens, und das sage ich, weil ich selbst viele Fehler gemacht habe, gibt es unzählige Dinge, die Leute tun können sudo, die ein System funktionsunfähig machen können, und es gibt keine realistischen Schutzmaßnahmen. Sollte sudo rmjedes Mal eine Warnung/Bestätigung erforderlich sein? Wie wäre es mit sudo chmod? Für jeden Beitrag über jemanden, der sein System mit Python-Problemen kaputt macht, kann ich wahrscheinlich genauso viele nennen, in denen Leute etwas Falsches mit den Berechtigungen gemacht oder die falsche Datei gelöscht haben.

Antwort2

Ich werde aus Erfahrung zitieren - wenn Sie versuchen, Python zu aktualisierenvon der Quellein Ihrem System, werden SieFackelIhr System auf eine nicht reparierbare Weise. Die schnellste und einfachste Lösung in diesen Fällen istInstallieren Sie Ihr System neuoder Wiederherstellung von einem zweifelsfrei funktionierenden Backup-Image undNICHTVersuchen Sie, Python aus der Quelle zu aktualisieren.

Die Antwort "Neuinstallation" gilt füralleBetriebssystemversionen, nicht nur ISO-Installationen.

Das Wiederherstellen des Python-Systems aus Ihrem „Backup-Image“ wird mühsam sein, daher können Sie auch gleich eine vollständige Systemwiederherstellung aus Ihrem Backup durchführen. Oder von Grund auf neu installieren.


Wie fürNeueres Python für Ihre eigenen Bedürfnisse erhalten, möchten Sie vielleicht die Verwendung vonPyEnvDabei handelt es sich um ein Projekt/Tool, mit dem Sie mehrere Python-Versionen im User Space installieren können, ohne dass Ihr System-Python davon betroffen ist und Ihr System-Python dadurch nicht beschädigt wird. Denn wenn Sie Python auf Systemebene aktualisieren, bleibt in vielen Fällen ein beschädigtes System zurück.

Antwort3

Ja, dank @Brian Turek läuft mein System wieder! Ich habe es zum Laufen gebracht, indem ich mich per SSH mit meiner Box verbunden und die erforderlichen .deb-Dateien von dem Link heruntergeladen habe, auf den er hingewiesen hat (http://ports.ubuntu.com/pool/main/p/python3.8/) mit wget.

Zuerst musste sudo dpkg -idas libpython3.8-stdlib_3.8.5-2_arm64.debPaket installiert werden (), dann das python3.8-minimal_3.8.5-2_arm64.debPaket, und erst DANN python3.8_3.8.5-2_arm64.debwurde das Paket installiert, weil die Abhängigkeiten nicht im Gleichgewicht waren.

HINWEIS für zukünftige Generationen (falls es welche gibt):Das Installationsverfahren für ein System mit einem defekten Python-Setup kann unterschiedlich sein. Achten Sie einfach genau auf die Fehlermeldungen, die während der dpkgInstallation der einzelnen Pakete auftreten. Wenn die Installation nicht funktioniert, weil die Abhängigkeit von einer anderen Version einer anderen Abhängigkeit besteht, suchen Sie in der Repository-URL nach, auf die Brian ursprünglich verlinkt hat, und installieren Sie zuerst das erforderliche Paket. Wenn das zu weiteren Problemen führt, müssen Sie tiefer graben und zuerst diese defekten Abhängigkeiten installieren, um „die Toilettenschüssel von dem Python zu befreien, das darin ist“. Wiederholen Sie den Vorgang, bis alles geklärt ist.

Trotzdem habe ich es endlich geschafft, mein System ist wieder einsatzbereit und ich installiere fröhlich alle Pakete und unbeaufsichtigten Updates, die aufgrund dieses Problems hängen geblieben sind.Danke Brian Turek für deine Hilfe! <3 Sie haben mir viele Jahre Psychotherapie erspart.

PS: An alle Hater da draußen, die meinen, die einzige Möglichkeit, ein System mit einem kaputten Python zu reparieren, sei, einfach alles wegzulöschen und von vorne anzufangen: „Touché!“ :-D

verwandte Informationen