google のブラウザの chrome を FreeBSD で動かしたかったんでちょっと調べてみた。

この辺にバイナリが公開されてるって記事が有ったので試してみた。
http://gihyo.jp/admin/clip/01/fdt/200911/27

この記事には FreeBSD/7.2 でビルドされたって書いてあるので 7.2 で試してみる。
#が実は7-stableでえらい苦労した。

ダウンロードは http://chromium.hybridsource.org/ の i386 から
この時点では chromium-5.0.375.125_1.tbz を利用。

pkg_add でインストール

# pkg_add chromium-5.0.375.125_1.tbz
pkg_add: could not find package python26-2.6.5_1 !
pkg_add: could not find package perl-5.10.1_2 !
pkg_add: could not find package eggdbus-0.6_1 !
pkg_add: could not find package polkit-0.96_2 !
pkg_add: could not find package alsa-lib-1.0.23 !
pkg_add: could not find package alsa-plugins-1.0.23_1 !


依存関係で幾つかエラーになるので必要な物を packageかportsでインストール。

実行

# chrome
/libexec/ld-elf.so.1: Shared object "libnssutil3.so.1" not found, required by "chrome"
/libexec/ld-elf.so.1: Shared object "libjpeg.so.11" not found, required by "chrome"
/libexec/ld-elf.so.1: /usr/local/lib/libxml2.so.5: version LIBXML2_2.6.15 required by chrome not defined

なんか依存関係に無いのにエラーになるのが結構有る.. orz
追加でインストール又はアップグレードが必要。

再実行

# chrome
/libexec/ld-elf.so.1: chrome: Undefined symbol "shmctl"

何やら見慣れないエラーが...

ググッてみたら FreeBSD-7 以降からライブラリのバージョン管理のせいらしい。

# objdump -T /lib/libc.so.7 | grep shmctl
00045f64 w DF .text 00000000 FBSDprivate_1.0 _shmctl
00045f64 w DF .text 00000000 FBSD_1.0 shmctl
00045f64 g DF .text 0000000a FBSDprivate_1.0 __sys_shmctl

# objdump -T /usr/local/bin/chrome | grep shmctl
00000000 DF *UND* 00000000 FBSD_1.1 shmctl

OS の libc は 1.0 だが chrome が使っているのは 1.1 と言うことらしい。

じゃあ力ずくで、と言うわけで libc.so をバージョンだけ替えてソースからコンパイルしてみた。

# objdump -T /lib/libc.so.7 | grep shmctl
00045f64 w DF .text 00000000 FBSD_1.1 shmctl

#chrome
/libexec/ld-elf.so.1: /usr/local/lib/libgdk-x11-2.0.so.0: Undefined symbol "shmget"

# objdump -T /usr/local/lib/libgdk-x11-2.0.so.0 | grep shmctl
00000000 DF *UND* 00000000 FBSD_1.0 shmctl

撃沈。
1.0 と 1.1 はアッパーコンパチと言うわけでは無いのか...
これってバイナリ互換性全然無くなるんじゃ無いの? > commiter の人達

どうも、7-stable と 7.2 はだいぶ環境が違うらしい。

7.2 はすぱっと諦め 8.1 で試してみる事にした。
パッケージが2つ足りなかったがあっさりインストール起動まで行った。



日本語が文字化けしてるが設定で行けると思う。

ちょっと時期尚早だったかな。素直に ports が出るまで待った方が良さげ。

追記: フォントをちゃんと設定したらきれいに動いた。結構安定している。



追記2: ports の www/chromium でも動きました。