インターネット検索を実行すると、Pangoライブラリを使用する他のソフトウェアでこのエラーが発生することがわかりました。 パンゴ以下で使用できるテキストレイアウトエンジンライブラリ。ハーフバス多言語テキストを表示するためのシェーピングエンジン。
ソフトウェアがコマンドラインツールまたは端末で実行されている場合、エラーは次のとおりです。
:~$ sudo ah
(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)
Trace/breakpoint trap
:~$
このエラーを解決するには?
事前にありがとう
答え1
ライブラリのバージョン間の互換性の問題に直面していることが簡単にわかります。
この問題のある環境を見て、解決策を見てみましょう。
- オペレーティングシステム:Ubuntu 20.04(amd64)
- ソフトウェア:Vectr 0.1.15(ベクターグラフィックエディタ)
この場合、開こうとすると何も起こらず、開かなくてもエラーは表示されません。./vectr
エラーは、ターミナルでVectrを起動しようとしたときにのみ表示されます()。
まず、エラーを引き起こす可能性のある依存関係を見てみましょう。
:~/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)
さまざまな方法でこれを実行できます。 Googleにお問い合わせください。
インストールされたライブラリーの詳細を表示するには、次のコマンドを使用できます。 2番目の列はバージョンを表します。
:~/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
最初のソリューション
バグは1つのソフトウェアにのみ影響するので、システムにインストールされているライブラリをダウングレードするのは便利ではないと思います(2番目の解決策)、これは他のソフトウェアに影響を与える可能性があります。
したがって、このソリューションは、ライブラリ(以前のバージョン)をソフトウェアのあるフォルダのルートにコピーすることで構成されています。私の場合は移植可能ですDownloads/Vectr
。
正確な依存関係を確認し、手動でダウンロードします(アーキテクチャを選択して.debをダウンロード)。
前述のように、私のアーキテクチャはamd64ですが、システムにはi386バージョンのライブラリもインストールされています。このプロセスは手動で移植可能なのでamd64を使用することにしましたが、それは私にとって効果的でした。ただし、エラーが発生した場合は、両方のアーキテクチャを試してみてください。
.deb ファイルを開く記録館data.tar.xz
をクリックしてファイルを開き、両方の/./usr/lib/x86_64-linux-gnu/
ファイルをソフトウェアのルートフォルダ(Downloads/Vectr
)に抽出します。ダウンロードした各 .deb ファイルに対してこの操作を繰り返します。。
また、使用することができますアルapitパッケージからバイナリツールdebファイルを抽出するコマンド:
# Set $lib_name and $deb_file_path according to your arch, such as:
lib_name="libpangocairo-1.0"
deb_file_path="libpango-1.0-0_1.44.7-2ubuntu4_amd64.deb"
cd /home/myuser/DownloadsVects
mkdir $lib_name
cd $lib_name
ar x ~/Downloads/$deb_file_path
tar xf data.tar.xz
cp ls usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 ..
# Also repeat for each file
これにより、ソフトウェアが正常に実行されます。実行する場合:
:~/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)
依存関係アドレスがからどのように/usr/lib/x86_64-linux-gnu/
変更されるかを確認できます/home/myuser/Downloads/Vectr/
。
2番目の解決策
これらのライブラリをダウングレードしてください(このアプローチによって他のソフトウェアが誤動作する可能性があることに注意してください)。
バリエーション 1: (試行できませんでした)
ソースが所有するリポジトリから以前のバージョンをインストールします。
利用可能なライブラリのバージョンを一覧表示します。
:~$ apt-cache madison libpango-1.0-0
libpango-1.0-0 | 1.44.7-2ubuntu4 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
私の場合、私は現在のバージョンだけを持っていましたが、それがクラッシュを引き起こすバージョンでした。他のバージョンがある場合は、次のコマンドを使用してダウングレードできます。
:~$ sudo apt install pkg-name=old-version
2つのライブラリもインストールする必要があることに注意してください(libpangocairo-1.0-0とlibpangoft2-1.0-0)。これが依存関係で自動インストールされるかどうかはわかりません。この質問はi386バージョンでも有効です。
変形2:(私はこれを試してみました)
以前のバージョンがない場合は、以下の手順に従ってダウンロードしてください(.deb)最初のソリューション。重大なエラーを回避するには、i386用のバージョンもダウンロードする必要があります(この場合はUbuntuがあることを覚えておいてください)。AMD64)。
ファイルをダウンロードしたら、ファイルを保存したフォルダから端末を開き、次のコマンドを使用してダウングレードできます。
:~$ sudo dpkg -i libpango*.deb
これはエラーを引き起こす可能性がありますが、最終的にはソフトウェアが正常に動作し、すべてが正常に動作しているようです。これからの結果はまだ分からない。
到着元に戻すこのダウングレードを実行するsudo apt update
にはsudo apt upgrade
必ず1つが必要ですsudo apt --fix-broken install
。
その後、変更を永久に適用し、誤ってライブラリを更新したくない場合は、次のコマンドを使用できます。
:~$ sudo apt-mark hold package-name
これにより、システムのアップグレード中にライブラリが自動的にインストール、更新、アップグレード、または削除されなくなります。以下を使用してキャンセルできます。
:~$ sudo apt-mark unhold package-name