GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ubuntu – Pango-error Harfbuzz Version trop ancienne ?

En cherchant sur Google, j'ai vu que cette erreur se produisait avec différents logiciels utilisant la bibliothèque Pango. Pango est une bibliothèque de moteur de mise en page de texte qui fonctionne avec le moteur de mise en forme HarfBuzz pour afficher du texte multilingue.

Si le logiciel est un outil en ligne de commande ou s'il est lancé depuis un terminal, l'erreur ressemble à ceci :

:~$ sudo ah

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

Trace/breakpoint trap
:~$

Comment corriger cette erreur ?

Merci d'avance

Réponse acceptée :

Il est simple de se rendre compte que nous sommes confrontés à un problème de compatibilité entre les versions des librairies.

Prenons un environnement avec ce problème pour voir la solution :

  • SE :Ubuntu 20.04 (amd64)
  • Logiciel :Vectr 0.1.15 (éditeur de graphiques
    vectoriels)

Dans ce cas en essayant de l'ouvrir, rien ne se passe, il ne s'ouvre pas, mais il n'affiche pas non plus d'erreur, l'erreur ne sort que lorsqu'on essaie de lancer Vectr depuis un terminal (./vectr ).

Examinons d'abord les dépendances qui peuvent être à l'origine de l'erreur :

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

Cela peut être fait de différentes manières, il suffit de demander à Google.

Si vous souhaitez voir les détails des bibliothèques que vous avez installées, vous pouvez utiliser la commande suivante. Notez que la deuxième colonne indique la version :

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

Première solution

Étant donné que l'erreur n'affecte qu'un seul logiciel, je ne pense pas qu'il soit pratique de rétrograder les bibliothèques installées sur le système (deuxième solution ), ce qui peut affecter d'autres logiciels.

Donc, cette solution consiste à copier les bibliothèques (anciennes versions) à la racine du dossier où se trouve le logiciel, dans mon cas il est portable et je l'ai dans Downloads/Vectr .

Nous avons déjà vu les dépendances exactes, nous allons les télécharger manuellement (choisissez votre architecture et téléchargez le .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)

Comme nous l'avons vu précédemment, mon architecture est amd64, cependant, le système installe également la version i386 des bibliothèques. Étant donné que cette procédure est manuelle et portable, j'ai décidé d'utiliser uniquement amd64, et cela a fonctionné pour moi. Mais en cas d'erreur, essayez d'utiliser les deux architectures ensemble.

Ouvrez le .deb avec le gestionnaire d'archives , et ouvrez data.tar.xz fichier, puis allez dans /./usr/lib/x86_64-linux-gnu/ et extrayez ces deux fichiers dans le dossier racine du logiciel (Downloads/Vectr ). Répéter pour chaque fichier .deb téléchargé .

Après cela, le logiciel devrait fonctionner normalement. Et si vous exécutez :

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

Vous verrez comment l'adresse des dépendances a changé de /usr/lib/x86_64-linux-gnu/ vers /home/myuser/Downloads/Vectr/ .

Deuxième solution

Rétrogradez ces bibliothèques (rappelez-vous que cette méthode peut entraîner des dysfonctionnements dans d'autres logiciels).

Connexe :Comment créer des répertoires de sortie arborescente uniquement ?

Variante 1 :(je n'ai pas pu essayer celle-ci)

Installez une ancienne version à partir des dépôts que vous avez dans vos sources.

Lister les versions disponibles des bibliothèques :

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

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

Dans mon cas, je n'ai que la version actuelle, et c'est celle qui cause le conflit. Si vous obtenez d'autres versions, vous pouvez rétrograder avec la commande suivante :

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

N'oubliez pas qu'il y a deux bibliothèques supplémentaires qui doivent être installées (libpangocairo-1.0-0 et libpangoft2-1.0-0). Je ne sais pas si ceux-ci sont automatiquement installés en tant que dépendances, ce doute est également valable pour les versions pour i386.

Variante 2 :(j'ai essayé celle-ci)

Pour ceux qui n'ont pas les versions précédentes, vous devez le télécharger (.deb) comme indiqué dans la première solution . Et pour éviter les erreurs majeures, les versions pour i386 doivent également être téléchargées (rappelez-vous que dans cet exemple, nous avons Ubuntu amd64 ).

Après avoir téléchargé les fichiers, ouvrez un terminal dans le dossier où vous les avez enregistrés, puis vous pourrez rétrograder avec la commande suivante :

:~$ sudo dpkg -i libpango*.deb

Cela peut se terminer par des erreurs, mais au final le logiciel fonctionne bien, et apparemment tout fonctionne bien. Les conséquences futures, je ne les connais pas encore.

Pour annuler cette rétrogradation exécute sudo apt update , puis sudo apt upgrade et vous aurez sûrement besoin d'une installation sudo apt --fix-broken install .

Ensuite, si vous souhaitez rendre le changement permanent et éviter les mises à jour accidentelles de ces bibliothèques, vous pouvez utiliser la commande :

:~$ sudo apt-mark hold package-name

Cela empêche les bibliothèques d'être automatiquement installées, mises à jour, mises à niveau ou supprimées lors de la mise à niveau du système. Et vous pouvez l'annuler avec la commande :

:~$ sudo apt-mark unhold package-name

Ubuntu
  1. Mettre à jour la version du noyau sur les serveurs Ubuntu

  2. Version Xpra sur Ubuntu 16.04 ?

  3. Mettre à jour Rstudio dans Ubuntu 16.04 ?

  4. Comment partitionner un vieil Imac ??

  5. Quelle version d'Ubuntu tient sur un CD-r ?

Comment mettre à niveau vers Ubuntu 17.04 à partir d'une version antérieure

Comment installer Git sur Ubuntu 20.04

Comment vérifier la version d'Ubuntu

Comment vérifier votre version d'Ubuntu

Comment vérifier la version de GCC dans Ubuntu

Comment trouver la version d'Ubuntu