GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu –パンゴエラーHarfbuzzバージョンが古すぎますか?

グーグル、私はこのエラーがPangoライブラリを使用するさまざまなソフトウェアで発生することを確認しました。 Pangoは、HarfBuzzシェーピングエンジンと連携して多言語テキストを表示するテキストレイアウトエンジンライブラリです。

ソフトウェアがコマンドラインツールである場合、または端末から起動された場合、エラーは次のようになります。

:~$ sudo ah

(ah:2782): Pango-ERROR **: 16:54:45.844: Harfbuzz version too old (1.3.1)

Trace/breakpoint trap
:~$

このエラーを修正するにはどうすればよいですか?

よろしくお願いします

承認された回答:

ライブラリのバージョン間の互換性の問題に直面していることは簡単に理解できます。

この問題のある環境で解決策を見てみましょう:

  • OS: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をダウンロードします):

  • libpango-1.0-0(1.42.4-7)
  • libpangocairo-1.0-0(1.42.4-7)
  • libpangoft2-1.0-0(1.42.4-7)

前に見たように、私のアーキテクチャはamd64ですが、システムはi386バージョンのライブラリもインストールします。この手順は手動で移植可能であるため、amd64のみを使用することにしました。ただし、エラーが発生した場合は、2つのアーキテクチャを一緒に使用してみてください。

アーカイブマネージャーで.debを開きます 、data.tar.xzを開きます ファイルを作成し、/./usr/lib/x86_64-linux-gnu/に移動します。 ソフトウェアのルートフォルダにあるこれら2つのファイルを抽出します(Downloads/Vectr )。 ダウンロードした.debファイルごとに繰り返します

その後、ソフトウェアは正常に実行されます。そして、実行した場合:

:~/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 確かにsudo apt --fix-broken installが必要になります 。

次に、変更を永続的にし、これらのライブラリが誤って更新されないようにする場合は、次のコマンドを使用できます。

:~$ sudo apt-mark hold package-name

これにより、システムのアップグレード中にライブラリが自動的にインストール、更新、アップグレード、または削除されるのを防ぎます。そして、次のコマンドで元に戻すことができます:

:~$ sudo apt-mark unhold package-name

Ubuntu
  1. Ubuntuサーバーのカーネルバージョンを更新します

  2. Ubuntu 16.04でRstudioを更新しますか?

  3. Ubuntu 14.04でGhostscriptを更新しますか?

  1. Ubuntu 16.04のXpraバージョン?

  2. 古いImacをパーティション分割する方法は??

  3. どのバージョンのUbuntuがCD-Rに適合しますか?

  1. Ubuntuのバージョンを確認する方法

  2. Ubuntu 16.04、18.04、および19.04で古いカーネルを削除する方法

  3. Ubuntu20.04ソフトウェアバージョンチェック