[Ubuntu/Kubuntu] パッケージをアップグレードしたらVMware Server Consoleが動かなくなった場合の対処

2008/11/28PC::VMware

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が利用させるようになり、エラーが解消されるのであろう。

参考