Buscando en Google, he visto que este error ocurre con diferentes programas que usan la biblioteca Pango. Pango es una biblioteca de motor de diseño de texto que funciona con el motor de forma HarfBuzz para mostrar texto en varios idiomas.
Si el software es una herramienta de línea de comandos o se inicia desde una terminal, el error se ve así:
:~$ sudo ah
(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)
Trace/breakpoint trap
:~$
¿Cómo solucionar este error?
Gracias de antemano
Respuesta aceptada:
Es sencillo darse cuenta de que estamos ante un problema de compatibilidad entre versiones de librerías.
Tomemos un entorno con este problema para ver la solución:
- SO:Ubuntu 20.04 (amd64)
- Software:Vectr 0.1.15 (Editor de gráficos vectoriales
)
En este caso al intentar abrirlo no pasa nada, no abre, pero tampoco da error, el error solo sale al intentar lanzar Vectr desde una terminal (./vectr
).
Primero, veamos las dependencias que pueden estar causando el error:
:~/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)
Esto se puede hacer de diferentes maneras, solo pregunte a Google.
Si desea ver los detalles de las bibliotecas que ha instalado, puede usar el siguiente comando. Tenga en cuenta que la segunda columna indica la versión:
:~/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
Primera solución
Dado que el error solo está afectando a un software, no creo que sea conveniente degradar las bibliotecas que están instaladas en el sistema (segunda solución ), que puede afectar a otros softwares.
Entonces, esta solución consiste en copiar las librerías (versiones antiguas) a la raíz de la carpeta donde está el software, en mi caso es portable y lo tengo en Downloads/Vectr
.
Ya hemos visto las dependencias exactas, las vamos a descargar manualmente (elige tu arquitectura y descarga el .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)
Como vimos anteriormente, mi arquitectura es amd64, sin embargo, el sistema también instala la versión i386 de las bibliotecas. Dado que este procedimiento es manual y portátil, decidí usar solo amd64 y funcionó para mí. Pero en caso de errores, intente usar las dos arquitecturas juntas.
Abra el .deb con Administrador de archivos y abra data.tar.xz
archivo, luego vaya a /./usr/lib/x86_64-linux-gnu/
y extraiga esos dos archivos en la carpeta raíz del software (Downloads/Vectr
). Repita para cada archivo .deb descargado .
Después de eso, el software debería funcionar normalmente. Y si ejecutas:
:~/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)
Verás como cambia la dirección de las dependencias de /usr/lib/x86_64-linux-gnu/
a /home/myuser/Downloads/Vectr/
.
Segunda solución
Rebaje estas bibliotecas (recuerde, este método puede causar un mal funcionamiento en otros softwares).
Relacionado:¿Cómo hacer que la salida del árbol sea solo directorios?Variante uno:(Esta no pude probarla)
Instala una versión antigua de los repositorios que tienes en tus fuentes.
Enumere las versiones disponibles de las bibliotecas:
:~$ apt-cache madison libpango-1.0-0
libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
En mi caso solo tengo la versión actual, y es la que está causando el conflicto. Si obtiene otras versiones, puede cambiar a una versión anterior con el siguiente comando:
:~$ sudo apt install pkg-name=old-version
Recuerde que hay dos bibliotecas más que deben instalarse (libpangocairo-1.0-0 y libpangoft2-1.0-0). Desconozco si estos se instalan automáticamente como dependencias, esta duda también es válida para versiones para i386.
Variante dos:(Probé esta)
Para aquellos que no dispongan de versiones anteriores, deberán descargarlo (.deb) como se indica en la Primera Solución . Y para evitar errores mayores, también se deben descargar las versiones para i386 (recordar que en este ejemplo tenemos Ubuntu amd64 ).
Después de descargar los archivos, abra una terminal en la carpeta donde los guardó, luego puede degradar con el siguiente comando:
:~$ sudo dpkg -i libpango*.deb
Esto puede terminar con errores, pero al final el software funciona bien y aparentemente todo funciona bien. Las consecuencias futuras aún no las sé.
Para deshacer esta degradación ejecuta sudo apt update
, luego sudo apt upgrade
y seguramente necesitará un sudo apt --fix-broken install
.
Luego, si desea que el cambio sea permanente y evitar actualizaciones accidentales de estas bibliotecas, puede usar el comando:
:~$ sudo apt-mark hold package-name
Esto evita que las bibliotecas se instalen, actualicen, actualicen o eliminen automáticamente durante la actualización del sistema. Y puedes deshacerlo con el comando:
:~$ sudo apt-mark unhold package-name