GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ubuntu:¿la versión de Pango-error Harfbuzz es demasiado antigua?

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

Ubuntu
  1. Actualizar la versión del Kernel en servidores Ubuntu

  2. ¿Versión Xpra en Ubuntu 16.04?

  3. ¿Actualizando Rstudio en Ubuntu 16.04?

  4. ¿Cómo particionar un viejo Imac?

  5. ¿Actualizar Ghostscript en Ubuntu 14.04?

Cómo actualizar a Ubuntu 17.04 desde una versión anterior

Cómo instalar Git en Ubuntu 20.04

Cómo comprobar la versión de Ubuntu

Cómo verificar su versión de Ubuntu

Cómo verificar la versión de GCC en Ubuntu

Cómo encontrar la versión de Ubuntu