GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ubuntu – Pango-Fehler Harfbuzz-Version zu alt?

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

Ubuntu
  1. Aktualisieren Sie die Kernel-Version auf Ubuntu-Servern

  2. Xpra-Version auf Ubuntu 16.04?

  3. Rstudio in Ubuntu 16.04 aktualisieren?

  4. Wie partitioniert man einen alten Imac?

  5. Welche Version von Ubuntu passt auf eine CD-R?

So aktualisieren Sie von einer früheren Version auf Ubuntu 17.04

So installieren Sie Git unter Ubuntu 20.04

So überprüfen Sie die Ubuntu-Version

So überprüfen Sie Ihre Ubuntu-Version

So überprüfen Sie die GCC-Version in Ubuntu

So finden Sie die Ubuntu-Version