Beim Googeln habe ich gesehen, dass dieser Fehler bei unterschiedlicher Software auftritt, die die Pango-Bibliothek verwendet. Pango ist eine Textlayout-Engine-Bibliothek, die mit der HarfBuzz-Shaping-Engine zur Anzeige von mehrsprachigem Text zusammenarbeitet.
Wenn die Software ein Befehlszeilentool ist oder von einem Terminal aus gestartet wird, sieht der Fehler folgendermaßen aus:
:~$ sudo ah
(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)
Trace/breakpoint trap
:~$
Wie kann dieser Fehler behoben werden?
Vielen Dank im Voraus
Akzeptierte Antwort:
Es ist leicht zu erkennen, dass wir mit einem Kompatibilitätsproblem zwischen Bibliotheksversionen konfrontiert sind.
Nehmen wir eine Umgebung mit diesem Problem, um die Lösung zu sehen:
- Betriebssystem:Ubuntu 20.04 (amd64)
- Software:Vectr 0.1.15 (Vektorgrafikeditor
)
In diesem Fall passiert beim Versuch, es zu öffnen, nichts, es öffnet sich nicht, aber es zeigt auch keinen Fehler an, der Fehler tritt nur auf, wenn versucht wird, Vectr von einem Terminal aus zu starten (./vectr
).
Schauen wir uns zunächst die Abhängigkeiten an, die den Fehler verursachen können:
:~/Downloads/Vectr$ ldd vectr | grep pango
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f4ab3581000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f4ab33e7000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f4ab1b3b000)
Dies kann auf verschiedene Arten geschehen, fragen Sie einfach Google.
Wenn Sie die Details der installierten Bibliotheken anzeigen möchten, können Sie den nächsten Befehl verwenden. Beachten Sie, dass die zweite Spalte die Version angibt:
:~/Downloads/Vectr$ dpkg -l | grep libpango
ii libpango-1.0-0:amd64 1.44.7-2ubuntu4 amd64 Layout and rendering of internationalized text
ii libpango-1.0-0:i386 1.44.7-2ubuntu4 i386 Layout and rendering of internationalized text
ii libpangocairo-1.0-0:amd64 1.44.7-2ubuntu4 amd64 Layout and rendering of internationalized text
ii libpangocairo-1.0-0:i386 1.44.7-2ubuntu4 i386 Layout and rendering of internationalized text
ii libpangoft2-1.0-0:amd64 1.44.7-2ubuntu4 amd64 Layout and rendering of internationalized text
ii libpangoft2-1.0-0:i386 1.44.7-2ubuntu4 i386 Layout and rendering of internationalized text
Erste Lösung
Da der Fehler nur eine Software betrifft, halte ich es nicht für sinnvoll, die auf dem System installierten Bibliotheken herunterzustufen (zweite Lösung ), die sich auf andere Software auswirken kann.
Diese Lösung besteht also darin, die Bibliotheken (alte Versionen) in das Stammverzeichnis des Ordners zu kopieren, in dem sich die Software befindet, in meinem Fall ist sie portabel und ich habe sie in Downloads/Vectr
.
Wir haben bereits die genauen Abhängigkeiten gesehen, wir werden sie manuell herunterladen (wählen Sie Ihre Architektur und laden Sie die .deb-Datei herunter):
- libpango-1.0-0 (1.42.4-7)
- libpangocairo-1.0-0 (1.42.4-7)
- libpangoft2-1.0-0 (1.42.4-7)
Wie wir bereits gesehen haben, ist meine Architektur amd64, das System installiert jedoch auch die i386-Version der Bibliotheken. Da dieses Verfahren manuell und portabel ist, habe ich mich entschieden, nur amd64 zu verwenden, und es hat für mich funktioniert. Aber im Falle von Fehlern versuchen Sie, die beiden Architekturen zusammen zu verwenden.
Öffnen Sie die .deb-Datei mit Archivmanager , und öffnen Sie data.tar.xz
Datei, dann gehen Sie zu /./usr/lib/x86_64-linux-gnu/
und extrahieren Sie diese beiden Dateien im Stammverzeichnis der Software (Downloads/Vectr
). Wiederholen Sie dies für jede heruntergeladene .deb-Datei .
Danach sollte die Software normal laufen. Und wenn Sie laufen:
:~/Downloads/Vectr$ ldd vectr | grep pango
libpangocairo-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpangocairo-1.0.so.0 (0x00007fc6b0ac8000)
libpango-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpango-1.0.so.0 (0x00007fc6b0931000)
libpangoft2-1.0.so.0 => /home/myuser/Downloads/Vectr/./libpangoft2-1.0.so.0 (0x00007fc6af084000)
Sie werden sehen, wie sich die Adresse der Abhängigkeiten von /usr/lib/x86_64-linux-gnu/
geändert hat nach /home/myuser/Downloads/Vectr/
.
Zweite Lösung
Führen Sie ein Downgrade dieser Bibliotheken durch (denken Sie daran, dass diese Methode Fehlfunktionen in anderer Software verursachen kann).
Verwandt:Wie macht man, dass der Baum nur Verzeichnisse ausgibt?Variante eins:(Ich konnte diese nicht ausprobieren)
Installieren Sie eine alte Version aus den Repositorys, die Sie in Ihren Quellen haben.
Listen Sie die verfügbaren Versionen der Bibliotheken auf:
:~$ apt-cache madison libpango-1.0-0
libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
In meinem Fall habe ich nur die aktuelle Version, die den Konflikt verursacht. Wenn Sie andere Versionen erhalten, können Sie mit dem folgenden Befehl ein Downgrade durchführen:
:~$ sudo apt install pkg-name=old-version
Denken Sie daran, dass zwei weitere Bibliotheken installiert werden müssen (libpangocairo-1.0-0 und libpangoft2-1.0-0). Ich weiß nicht, ob diese automatisch als Abhängigkeiten installiert werden, diese Zweifel gelten auch für Versionen für i386.
Variante zwei:(Ich habe diese ausprobiert)
Für diejenigen, die keine früheren Versionen haben, müssen Sie sie (.deb) herunterladen, wie in der Ersten Lösung angegeben . Und um größere Fehler zu vermeiden, müssen auch die Versionen für i386 heruntergeladen werden (denken Sie daran, dass wir in diesem Beispiel Ubuntu amd64 haben ).
Öffnen Sie nach dem Herunterladen der Dateien ein Terminal in dem Ordner, in dem Sie sie gespeichert haben, dann können Sie mit dem folgenden Befehl ein Downgrade durchführen:
:~$ sudo dpkg -i libpango*.deb
Das kann mit Fehlern enden, aber am Ende läuft die Software einwandfrei, und anscheinend funktioniert alles einwandfrei. Die zukünftigen Folgen kenne ich noch nicht.
Zum Rückgängigmachen Dieses Downgrade führt sudo apt update
aus , dann sudo apt upgrade
und Sie benötigen sicherlich ein sudo apt --fix-broken install
.
Wenn Sie die Änderung dann dauerhaft machen und versehentliche Aktualisierungen dieser Bibliotheken vermeiden möchten, können Sie den Befehl verwenden:
:~$ sudo apt-mark hold package-name
Dadurch wird verhindert, dass die Bibliotheken während des System-Upgrades automatisch installiert, aktualisiert, aktualisiert oder entfernt werden. Und Sie können es mit dem Befehl rückgängig machen:
:~$ sudo apt-mark unhold package-name