未定義のシンボルによるエラー: glXGetProcAddress

未定義のシンボルによるエラー: glXGetProcAddress

テスト用 Debian システムの最後の dist-upgrade 後、X が起動しなくなりました。次のエラーが表示されます (gnome-session の起動時に表示されます)。

シンボル検索エラー: /usr/lib/i386-linux-gnu/libcairo.so.2: 未定義のシンボル: glXGetProcAddress

さらに、texlive でも同じエラー (luatex が原因) が発生し、アップグレードが拒否されます。

この問題を解決する方法がわかりません。重要なライブラリが 1 つ不足している可能性はありますか? そうでない場合、他に何がこの問題の原因になるのでしょうか?

答え1

@peterph の答え問題に非常に近かった。

ビデオ カードは Matrox G550 (mga) でしたが、以前は NVIDIA がインストールされていて、一部の GLX のものが残っていました/usr/lib/tls

私は mga ドライバーの経験はありませんが、独自の glx 実装は存在しないと理解しているため、mesa を動作させることに取り組みました。

インストールが完了したらlibgl1-mesa-glx、で をglx-alternative-mesaチェックし、 のフルパスを使用して、がどのパッケージから選択され、によって解決されたかを理解しました。mesa であることを確認するためだけに、両方のライブラリがどのパッケージにも含まれていませんでした。libcairoldddpkg -SlibGLlibGLcoreldd

これらのライブラリを移動したところ、今度は正しい mesa ライブラリが使用されていることが示されました。この時点で、@zar に再​​度確認するように依頼したところ、今回は正常に終了し、エラーなしで実行されたlddという回答がありました。apt-get -f installgdm3

バグであっても、Debian化されていないNVIDIAドライバが壊れているため、バグリクエストを満たすことはできないと思います。契約

独自のドライバのインストールはまだsupposed-to-install-everywhere.run少なくとも主要なディストリビューションとの協力関係(おそらく無料または無償で提供される)を求めるのではなく、なぜ自らのゴミを好むのか理解できません。

答え2

このエラーは、Cairo インストールにランタイム リンク依存関係がないことを意味します。シンボル名から判断すると、OpenGL 実装パッケージ (おそらく Mesa) が欠落または破損しています。パッケージ マネージャーがパッケージ依存関係 (おそらくこれがエラーの原因) を修正し、欠落している前提条件をすべてインストールすれば、Cairo を再インストールすると問題が解決する可能性があります。

また、 -ldd /usr/lib/i386-linux-gnu/libcairo.so.2を含む行を実行して確認することもできます=> not found。これにより、システムに不足しているライブラリがわかり、どのパッケージにそのライブラリが含まれているかを検索して、(再)インストールできます。

これは、依存パッケージが更新されても依存関係が更新されない状況でよく見られる現象でもあります (これは、たとえば独自のドライバーで簡単に発生する可能性があり、今回のケースもその通りでした)。

答え3

RH 命名法では: (Debian パッケージ形式も知りません)

試してみたところ、次のことがわかりました。

  1. # sudo **'yum whatprovides /usr/lib/libGL.so.1'**結果:

    *mesa-libGL-9.2.5-1.20131220.fc20.i686 : Mesa libGL runtime libraries and DRI drivers*
    

    A.lddプリント共有オブジェクトライブラリの依存関係したがって、リンクに問題がない限り、このツールは適していません。何も見つかりませんでした。

私は見ましたとても大変そして、見つけたこの質問

  2. 残りは簡単でした:

    # nm -D /usr/lib/libGL.so.1 |grep 'glXGetProcAddress'
    00014310 T glXGetProcAddress
    00014310 T glXGetProcAddressARB

   3. 私はアドビリーダーこれを追って走る。

答え4

Gnomeに従って書かれており、それは ライブラリGTK+ libraryに依存します。アップグレード時に発生した場合は、ローカルからではなく、再度ダウンロードしてください。使用して、すべてを検索してください。cairocairo libraryre-installapt-cachecairo packages

関連情報