さまざまなソフトウェア(特にSteamとYenka)を実行しようとすると、次のようなエラーに遭遇しました:error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
NVidia Optimusカードを搭載した64ビットシステムを実行しています(専用のグラフィックカードを必要とする特定のWindows専用ソフトウェアのデュアルブート)。バンブルビーをインストールしましたが、推奨どおりNVidiaからダウンロードしたドライバーではなく、nvidia-currentドライバーを使用しています。
ライブラリ(libGL.so.1)は/usr/lib
の最上位ディレクトリには存在しませんが、/usr/lib32/nvidia-current
へのソフトリンクとして/usr/lib32/nvidia-current/libGL.so.304.64
に存在します。
Ldconfig -pの出力のセクション:
libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so
明らかにその名前のライブラリがロードされていますが、それらは/usr/lib/x86_64-linux-gnu
にありますが、インストールされたソフトウェアはそれを「見る」ことができないようです。 Steamの場合、optirunで実行すると動作しますが、Yenkaの場合はそうではありません。 optirunによって/usr/lib32/nvidia-current
に格納されているライブラリが使用され、Steamが実行できるようになるため、Yenkaが実行されない理由がわかりません。
ソフトウェアが通常のメサライブラリを表示できない理由、およびYenkaがnvidia-currentライブラリでの実行を拒否する理由を説明できますか?
Nvidiaドライバーをインストールすると、skypeはnvidiaパッケージで提供されるi386 libを探します。これは存在しないため、mesaが提供するi386 libGL.so.1を使用しても構いません。
(ubuntu-gnome raring、nvidia-325を使用)および(ubuntu-gnome saucy、nvidia-319を使用)でテストした結果、次のように修正できました。
update-alternatives --display i386-linux-gnu_gl_conf
これにより、使用可能なオプションが表示されます。
i386-linux-gnu_gl_conf - auto mode
link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'
そのため、以下を実行します。
Sudo update-alternatives --config i386-linux-gnu_gl_conf
次に、最適な代替手段を選択します(i386-linux-gnu/mesa/ld.so.confを選択しました)。以下の出力には、代替i386-linux-gnu_gl_confの2つの選択肢があります(/etc/ld.so.confを提供します。 d/i386-linux-gnu_GL.conf)。
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/nvidia-325/alt_ld.so.conf 8602 auto mode
1 /usr/lib/i386-linux-gnu/mesa/ld.so.conf 500 manual mode
2 /usr/lib/nvidia-325/alt_ld.so.conf 8602 manual mode
Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
それが完了したら、実行してみてください:
Sudo ldconfig
これで完了です。
Skypeをインストールした後も同じ問題が発生します。そのため、このエラーを修正するためにどちらかを行うことができます。
最初のコマンドは、次のコマンドによってアプリケーションを実行します。たとえば、skypeを実行しています。
LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype
2番目に私がやったこと
Sudo nano /etc/ld.so.conf.d/skype.conf
そして次の行を追加します
/usr/lib/i386-linux-gnu/mesa/
保存して終了
そして最後に走る
Sudo ldconfig -v
これがあなたのlibGL.so.1エラーを修正したことを願っています
libGL.so.1も見つけることができます
find / -name libGL.so.1
ここでの修正は機能しますが、もっと簡単な修正があります。
skype
は機能しないが、optirun skype
は機能する場合は、次の方法で修正できます。
Sudo apt-get install bumblebee-nvidia --reinstall
(AMDカードでBumblebeeを使用しているユーザーは、同等の再インストールが必要になる場合があります)。
Bumblebeeはこの問題の原因と修正の両方を行いますが、libGLライブラリを統合カードおよびより強力なカードで利用できるようにするときに、インストール時に適用されます。これは、Bumblebeeをインストールしたときにそれらのライブラリがまだインストールされていなかった場合には発生しないため、再インストールが必要です。マルハナバチの設定にも影響はありませんが、これを行った後は明らかに確認する価値があります。
デスクトップエントリを編集します。
Sudo nano /usr/share/applications/skype.desktop
Execを次のように変更します。
Exec=env Pulse_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U
これが実行されます:
LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1
ランチャー/デスクトップエントリを使用して起動すると、Skypeを実行する前に。
アプリケーションランチャーを使用して起動する限り、その後は正常に動作するはずです。
これが明確化に役立つかどうかはわかりませんが、skypeとlibGL.so.1で同じ問題が発生しました。また、オプティマスカードとマルハナバチで13.04を実行しています。
Optirunなしでskypeを実行すると問題が発生しましたが、問題なく動作しました。毎回optirunで実行するようにデスクトップファイルを変更しました。一定!
同様の問題があり、64ビットシステムに32ビットライブラリをインストールすることで解決しました:apt-get install ia32-libs
公式のSteamページから最新バージョンをダウンロードします。ターミナルから必要なものをダウンロードします(必要な場合)。まだ行っていない場合は、bumblebee ppaを追加します。
Sudo add-apt-repository ppa:bumblebee/stable
次のコマンドで更新します。
Sudo apt-get update
virtualgl
をインストールします(Steamでlibgl.so.1
エラーを解決しました)
Sudo apt-get install virtualgl
試してください:
Sudo apt-get install libgl1-mesa-glx-lts-utopic:i386