Du betrachtest gerade Waydroid-Update 1.5.4-3: Bei Upgrade kann manuelle Intervention nötig werden

Waydroid-Update 1.5.4-3: Bei Upgrade kann manuelle Intervention nötig werden

Lead
Ein aktuelles waydroid-Update (Abschluss 1.5.4-3) ändert die Art, wie Python-Bytecode erzeugt wird. Nutzer, die vorherige Builds installiert hatten — auch aus dem AUR — können beim Aktualisieren auf Dateikonflikte stoßen. Arch Linux beschreibt Ursache und liefert einen unkomplizierten, als sicher bezeichneten pacman-Befehl zur Behebung.

Was ist genau passiert?

Pakete von waydroid bis einschließlich Version 1.5.4-2 erzeugten Python-Bytecode-Dateien (.pyc) erst zur Laufzeit. Diese zur Laufzeit erzeugten Dateien wurden nicht in der pacman-Paketdatenbank erfasst, weil sie beim Packen nicht enthalten waren.

In Version 1.5.4-3 wurde dieses Verhalten geändert: Die Byte-Kompilierung erfolgt nun bereits während des Paketierens. Dadurch werden die entsprechenden .pyc-Dateien beim Installationsprozess vom Paketmanager verwaltet.

Warum entstehen bei der Aktualisierung Probleme?

Wenn ein Paket Dateien installiert, die vorher schon auf dem System lagen, aber nicht dem Paketmanager zugeordnet waren, erkennt pacman dies als Konflikt. Bei waydroid liegt das Problem darin, dass frühere Versionen beim ersten Start oder zur Laufzeit .pyc-Dateien in Verzeichnissen wie /usr/lib/waydroid/tools/__pycache__/ angelegt haben. Das Upgrade auf ein Paket, das diese Dateien nun selbst liefern will, trifft auf „unowned files“ und schlägt fehl, bis die bestehenden Dateien entfernt oder überschrieben werden.

Wie sieht die Fehlermeldung aus?

Beim Versuch, das System zu aktualisieren, kann pacman mit einer Meldung wie failed to commit transaction (conflicting files) abbrechen. Typische Einträge in der Ausgabe nennen die betroffenen Bytecode-Dateien, zum Beispiel:

error: failed to commit transaction (conflicting files)
waydroid: /usr/lib/waydroid/tools/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/__init__.cpython-313.pyc exists in filesystem
waydroid: /usr/lib/waydroid/tools/actions/__pycache__/app_manager.cpython-313.pyc exists in filesystem

error: failed to commit transaction (conflicting files)

Die genaue Ausgabe kann je nach installiertem Python-Interpreter und System leicht variieren; die Pfade zeigen aber klar auf die __pycache__-Verzeichnisse innerhalb der waydroid-Installation.

Lösung: pacman mit –overwrite

Arch Linux empfiehlt, die betroffenen Dateien kontrolliert zu überschreiben. Der in der Meldung genannte, als sicher eingestufte Befehl lautet:

pacman -Syu --overwrite /usr/lib/waydroid/tools/*__pycache__/*

Dieser Aufruf aktualisiert das System (-Syu) und erlaubt pacman, vorhandene Dateien in den __pycache__-Verzeichnissen von waydroid zu überschreiben. Damit werden die zuvor ungetrackten .pyc-Dateien durch die beim Paketierprozess erzeugten Bytecode-Dateien ersetzt, die jetzt Teil des Pakets sind.

Für wen ist das relevant?

Betroffen sind Systeme, die eine waydroid-Version <= 1.5.4-2 installiert hatten, unabhängig davon, ob das Paket aus den offiziellen Repositorien oder aus dem AUR stammt. Wer bereits 1.5.4-3 installiert hat, ist von diesem Upgrade-Konflikt nicht mehr betroffen, da die Byte-Kompilierung bereits beim Packen stattfindet.

Was ist zu beachten?

  • Die genannten Dateien sind Python-Bytecode-Dateien (.pyc), die zur Laufzeit entstehen und keine Konfigurationsdaten enthalten. Arch Linux gibt an, dass das kontrollierte Überschreiben sicher ist.
  • Der vorgeschlagene --overwrite-Parameter sollte gezielt auf die betroffenen Pfade angewandt werden, wie oben gezeigt. Allgemeine oder breit gefasste Overwrite-Muster können unerwünschte Nebenwirkungen haben.
  • Wenn Sie unsicher sind, ob Sie andere lokale Änderungen im waydroid-Verzeichnis vorgenommen haben, prüfen Sie vorher das Verzeichnis oder sichern Sie relevante Dateien. Die Meldung selbst weist auf vorhandene Dateien im Dateisystem hin — eine einfache Prüfung mit ls -l oder einem Dateivergleich kann Klarheit schaffen.

Kurzfristige Empfehlung

Führen Sie die System-Aktualisierung mit dem genannten pacman-Befehl aus, falls bei einem Versuch zum Update die oben beschriebenen Konflikt-Fehler auftreten. Die Maßnahme richtet sich gezielt gegen die nun paketierten Python-Bytecode-Dateien und stellt den normalen Aktualisierungsprozess wieder her.

Fazit

Das Problem entstand durch eine Änderung im Zeitpunkt der Bytecode-Erzeugung: von Laufzeit zu Paketierzeit. Die Folge waren Dateien im Dateisystem, die pacman nicht kannte und deshalb beim Upgrade als Konflikt meldete. Die Lösung ist einfach und von Arch Linux abgesegnet: gezieltes Überschreiben der __pycache__-Dateien innerhalb von /usr/lib/waydroid/tools/ mit dem --overwrite-Schalter. Nach der Aktualisierung vermittelt die neue Paketversion 1.5.4-3 eine konsistentere Verwaltung der Python-Bytecode-Dateien.

Schreibe einen Kommentar