[Ubuntu/Kubuntu] パッケージをアップグレードしたらVMware Server Consoleが動かなくなった場合の対処
Kubuntu 8.04を導入しているメインマシンに導入されているVMware Server Consoleが先日のKernel 2.6.24-21から2.6.24-22へのパッケージアップグレードを機に動作しなくなった。その際に再びVMware Server Consoleが動作するように対処したときのメモ。
環境
VMware Server ホスト
- Debian GNU/Linux 4.0(etch)/i386
- VMware Server 1.0.6
VMware Server クライアント
- Kubuntu 8.04.1 日本語ローカライズド(i386)
- VMware Server Console 1.0.6
現象
VMware Server ConsoleがKatapultから起動させることが出来なくなった。で、vmware-server-console-distribに含まれているインストールスクリプトを叩いて再インストールしても立ち上がらず。直接VMware Server Consoleを叩くと以下のようなエラーを吐いていることを確認。
kaede@reika:/usr/local/bin/vmware-server-console-distrib$ vmware-server-console /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2) /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6) /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2) /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6) /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2) /usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
対処法
VMware Serverクライアントに導入されているGCCは4.2.4 (Ubuntu 4.2.4-1ubuntu3)。要求されているGCCは3.4または4.2.0。このあたりの整合性の問題でエラーを吐いて起動しないと考えられる。
いろいろ調べた結果、以下のファイルをリネームすればいいらしい。
$ cd /usr/lib/vmware-server-console/lib $ sudo mv libpng12.so.0/libpng12.so.0{,.bak} $ sudo mv libgcc_s.so.1/libgcc_s.so.1{,.bak}
他にもwrapper-gtk24.shにパッチを当てる方法でも対処できるらしい。参考にしたWebサイトにてその方法も紹介されています。
おそらく
対象のlibgcc_sライブラリについて調べてみたらvmware-server-consoleにて用意されたものの他に導入されていた。
$ find /usr -name "libgcc_s*" /usr/lib/gcc/i486-linux-gnu/4.2/libgcc_s.so /usr/lib/vmware-server-console/lib/libgcc_s.so.1 /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1.bak
おそらくVMware Server Consoleにて用意されているライブラリを優先的に参照し、GCCのバージョン不整合によりエラーが発生しているものと考えられる。一方、GCCのバージョンと整合性が取れているものは/usr/lib/gcc/i486-linux-gnu/4.2/以下に導入されていると考えられる。
問題のファイルをリネームすることで、優先順位が低く設定されているVMware Server Consoleにて用意されている方ではないlibgcc_sが利用させるようになり、エラーが解消されるのであろう。