2 votes

FFMPEG, symbole non défini hb_glib_script_to_script

J'ai plusieurs applications commerciales qui dépendent de FFMPEG ou d'une sous-dépendance, libpango, et potentiellement d'autres. L'un de ces paquets est cassé sur mon système car la version et les options de compilation de FFMPEG ou de libpango sont maintenant différentes de la version Ubuntu standard. Je ne sais pas quels programmes dépendent de FFMPEG ou de libpango, ni comment trouver les versions utilisées.

L'erreur initiale :

ffmpeg: symbol lookup error: /lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: hb_glib_script_to_script

Si je vérifie si libpango a le symbole, je vois qu'il ne l'a pas :

> readelf -a /lib/x86_64-linux-gnu/libpango-1.0.so.0 | grep hb_glib_script_to_script
    85: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND hb_glib_script_to_script

J'ai vérifié les autres emplacements comme /usr/local et ~/.snap/* et ces instances de libpango listent également ce symbole comme indéfini.

Je me demandais si un paquet pouvait avoir une version conflictuelle de la bibliothèque qui pourrait être remplacée. Je ne vois aucun signe de cela cependant.

> apt-cache rdepends --installed ffmpeg
ffmpeg
Reverse Depends:
  bitwig-studio
    ffmpeg:i386
  imagemagick-6.q16
    ffmpeg:i386
  imagemagick-6.q16
    ffmpeg:i386

En vérifiant l'erreur de symbole, je suis tombé sur ceci : https://unix.stackexchange.com/questions/599152/debian-libpangoft2-1-0-so-0-undefined-symbol-hb-glib-script- de-script

Il a suggéré de réinstaller libharfbuzz0b qui est la bibliothèque sous-jacente qui doit fournir le symbole. Je l'ai réinstallé :

> sudo apt update && sudo apt reinstall libharfbuzz

Je reçois toujours cette erreur.

J'ai ensuite vérifié s'il y avait plusieurs instances de FFMPEG, ce qui n'est pas le cas. Il y a plusieurs copies de libpango, mais les doublons sont dans ~/.snap et ne devraient pas être résolus avant la version système.

2voto

MrMowgli Points 195

La bibliothèque sous-jacente libharfbuzz0b était inclus dans le dossier spécifique de Bitwig : /opt/bitwig-studio/lib mais leur construction n'a pas exporté le symbole. Pour une raison quelconque, les fichiers .so des programmes remplacent les objets partagés du système, ce qui cause ce problème.

J'ai trouvé les dépendances de la bibliothèque en exécutant :

ldd /lib/x86_64-linux-gnu/libpango-1.0.so.0

Cela a montré qu'il y avait les fichiers appropriés dans les emplacements prévus. En cours d'exécution :

> readelf -s /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 | grep hb_glib_script_to_script
   439: 00000000000cdff0     9 FUNC    GLOBAL DEFAULT   14 hb_glib_script_to_script

montre qu'il devrait être là. J'ai trouvé le problème en exécutant locate pour trouver toutes les instances de libharfbuzz

> locate libharfbuzz | grep .so
/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.20600.4
/opt/bitwig-studio/lib/bitwig-studio/libharfbuzz.so.0
/opt/bitwig-studio/lib/jre/lib/libharfbuzz.so

montre que le fichier est en fait inclus directement dans Bitwig. Exécution de readelf -s /opt/bitwig-studio/lib/bitwig-studio/libharfbuzz.so.0 le symbole n'est pas défini.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X