Googling, I have seen that this error occurs with different software that use the Pango library. Pango is a text layout engine library which works with the HarfBuzz shaping engine for displaying multi-language text.
If the software is a command line tool, or is launched from a terminal, the error looks like this:
:~$ sudo ah (ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1) Trace/breakpoint trap :~$
How to fix this error?
Thanks in advance
As the question is kept closed, and I found a solution, I am going to post it directly here.
It is simple to realize that we are facing a compatibility problem between libraries versions.
Let's take an environment with this problem to see the solution:
- OS: Ubuntu 20.04 (amd64)
- Software: Vectr 0.1.15 (Vector Graphics Editor)
In this case when trying to open it, nothing happens, it does not open, but it does not show an error either, the error only comes out when trying to launch Vectr from a terminal (
First, let's look at the dependencies that may be causing the 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)
This can be done in different ways, just ask Google.
If you want to see the details of the libraries that you have installed, you can use the next command. Note that the second column indicates the 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
Since the error is only affecting one software, I don't think it is convenient to downgrade the libraries that are installed on the system (second solution), which may affect other softwares.
So, this solution consists of copying the libraries (old versions) to the root of the folder where the software is, in my case it is portable and I have it in
We have already seen the exact dependencies, we are going to download them manually (choose your architecture and download the .deb):
As we saw earlier, my architecture is amd64, however, the system also installs the i386 version of the libraries. Since this procedure is manual, and portable, I decided to use only amd64, and it worked for me. But in case of any errors, try using the two architectures together.
Open the .deb with Archive Manager, and open data.tar.xz file, then go to /./usr/lib/x86_64-linux-gnu/ and extract those two files in the root folder of the software (Downloads/Vectr). Repeat for each downloaded .deb file.
After that the software should run normally. And if you run:
:~/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)
You will see how the address of the dependencies changed from
Downgrade these libraries (remember, this method can cause malfunction in other softwares).
Variant one: (I could not try this one)
Install an old version from the repositories that you have in your sources.
List the available versions of the libraries:
:~$ apt-cache madison libpango-1.0-0 libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
In my case I only have the current version, and it is the one that is causing the conflict. If you get other versions, you can downgrade with the following command:
:~$ sudo apt install pkg-name=old-version
Remember that there are two more libraries that must be installed (libpangocairo-1.0-0 and libpangoft2-1.0-0). I do not know if these are automatically installed as dependencies, this doubt is also valid for versions for i386.
Variant two: (I did try this one)
For those who do not have previous versions, you must download it (.deb) as indicated in the First Solution. And to avoid major errors, the versions for i386 must be downloaded too (remember that in this example we have Ubuntu amd64).
After downloading the files, open a terminal in the folder where you saved them, then you can downgrade with the following command:
:~$ sudo dpkg -i libpango*.deb
This may end with errors, but in the end the software runs fine, and apparently everything works fine. The future consequences I do not know yet.
To undo this downgrade run
sudo apt update, then
sudo apt upgrade and you will surely need a
sudo apt --fix-broken install.
Then if you want to make the change permanent, and avoid accidental updates of these libraries, you can use the command
:~$ sudo apt-mark hold package-name
This prevents the libraries from automatically installed, updated, upgraded, or removed during system upgrade. And you can undo it with the command
:~$ sudo apt-mark unhold package-name