GNU/Linux >> Znalost Linux >  >> Ubuntu

Ubuntu – Pango-error verze Harfbuzz příliš stará?

Google, viděl jsem, že k této chybě dochází u jiného softwaru, který používá knihovnu Pango. Pango je knihovna nástroje pro rozvržení textu, která pracuje s modulem pro tvarování HarfBuzz pro zobrazení vícejazyčného textu.

Pokud je software nástrojem příkazového řádku nebo je spuštěn z terminálu, chyba vypadá takto:

:~$ sudo ah

(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)

Trace/breakpoint trap
:~$

Jak tuto chybu opravit?

Předem děkuji

Přijatá odpověď:

Je snadné si uvědomit, že čelíme problému s kompatibilitou mezi verzemi knihoven.

Vezměme si prostředí s tímto problémem, abychom viděli řešení:

  • OS:Ubuntu 20.04 (amd64)
  • Software:Vectr 0.1.15 (vektorová grafika
    Editor)

V tomto případě se při pokusu o otevření nic neděje, neotevře se, ale ani nevykazuje chybu, chyba se objeví pouze při pokusu o spuštění Vectr z terminálu (./vectr ).

Nejprve se podívejme na závislosti, které mohou chybu způsobovat:

:~/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)

To lze provést různými způsoby, stačí se zeptat Google.

Pokud chcete vidět podrobnosti o knihovnách, které jste nainstalovali, můžete použít následující příkaz. Všimněte si, že druhý sloupec označuje verzi:

:~/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

První řešení

Protože chyba postihuje pouze jeden software, nemyslím si, že je vhodné downgradovat knihovny, které jsou nainstalované v systému (druhé řešení ), což může ovlivnit další software.

Toto řešení tedy spočívá ve zkopírování knihoven (starších verzí) do kořenové složky, kde je software, v mém případě je přenosný a mám ho v Downloads/Vectr .

Přesné závislosti jsme již viděli, stáhneme je ručně (vyberte si architekturu a stáhněte si .deb):

  • libpango-1.0-0 (1.42.4-7)
  • libpangocairo-1.0-0 (1.42.4-7)
  • libpangoft2-1.0-0 (1.42.4-7)

Jak jsme viděli dříve, moje architektura je amd64, nicméně systém nainstaluje i verzi knihoven i386. Protože je tento postup ruční a přenosný, rozhodl jsem se použít pouze amd64 a fungovalo to pro mě. Ale v případě jakýchkoli chyb zkuste použít obě architektury společně.

Otevřete soubor .deb pomocí Správce archivu a otevřete data.tar.xz a poté přejděte na /./usr/lib/x86_64-linux-gnu/ a extrahujte tyto dva soubory v kořenové složce softwaru (Downloads/Vectr ). Opakujte pro každý stažený soubor .deb .

Poté by měl software běžet normálně. A pokud spustíte:

:~/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)

Uvidíte, jak se změnila adresa závislostí z /usr/lib/x86_64-linux-gnu/ na /home/myuser/Downloads/Vectr/ .

Druhé řešení

Přejděte na nižší verzi těchto knihoven (nezapomeňte, že tato metoda může způsobit poruchu v jiném softwaru).

Související:Jak vytvořit stromový výstup pouze adresářů?

Varianta jedna:(tu jsem nemohl vyzkoušet)

Nainstalujte starou verzi z repozitářů, které máte ve zdrojích.

Seznam dostupných verzí knihoven:

:~$ apt-cache madison libpango-1.0-0

libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

V mém případě mám pouze aktuální verzi a je to ta, která způsobuje konflikt. Pokud získáte jiné verze, můžete přejít na nižší verzi pomocí následujícího příkazu:

:~$ sudo apt install pkg-name=old-version

Nezapomeňte, že je třeba nainstalovat další dvě knihovny (libpangocairo-1.0-0 a libpangoft2-1.0-0). Nevím, zda se tyto automaticky instalují jako závislosti, tato pochybnost platí i pro verze pro i386.

Varianta dvě:(tu jsem zkusil)

Pro ty, kteří nemají předchozí verze, si ji musíte stáhnout (.deb), jak je uvedeno v První řešení . A aby se předešlo velkým chybám, je třeba stáhnout i verze pro i386 (nezapomeňte, že v tomto příkladu máme Ubuntu amd64 ).

Po stažení souborů otevřete terminál ve složce, kam jste je uložili, a poté můžete přejít na nižší verzi pomocí následujícího příkazu:

:~$ sudo dpkg -i libpango*.deb

To může skončit chybami, ale nakonec software běží dobře a zdá se, že vše funguje dobře. Budoucí důsledky zatím neznám.

Chcete-li vrátit zpět tento downgrade spustí sudo apt update a poté sudo apt upgrade a určitě budete potřebovat sudo apt --fix-broken install .

Pokud pak chcete, aby byla změna trvalá a abyste se vyhnuli náhodným aktualizacím těchto knihoven, můžete použít příkaz:

:~$ sudo apt-mark hold package-name

To zabrání automatické instalaci, aktualizaci, aktualizaci nebo odstranění knihoven během aktualizace systému. A můžete to vrátit příkazem:

:~$ sudo apt-mark unhold package-name

Ubuntu
  1. Aktualizujte verzi jádra na serverech Ubuntu

  2. Aktualizace Rstudio v Ubuntu 16.04?

  3. Aktualizovat Ghostscript na Ubuntu 14.04?

  1. Verze Xpra na Ubuntu 16.04?

  2. Jak rozdělit starý Imac?

  3. Jaká verze Ubuntu se hodí na Cd-r?

  1. Jak zkontrolovat verzi Ubuntu

  2. Jak odstranit stará jádra na Ubuntu 16.04, 18.04 a 19.04

  3. Kontrola verze softwaru Ubuntu 20.04