2009年1月9日金曜日

Firefox3 on Debian etch 2 of 2

画像ライブラリビルド

しょうがないのでjpeg, tiff, pngの最新版をビルド。
jpegの共有ライブラリ(libjpegとかそんなの)はmake installではなく、make install-libを実行しないと
インストールされないらしい。
はまった...

gtk+ ビルド
  • jpegとtiffのヘッダファイルはhome/includeに直接置かれるので、CPPFLAGSに追加
  • jasper(JPEG2000)が無いと言われるが、withoutする。
  • gdk-pixbufのmakeで、gdk-pixbuf-enum-types.hだか何かでこける...なぜだー
    • どうもglib-mkenums(ヘッダを自動出力するPerlスクリプト)へのパスが/usr/binなので、これがいかんようである。PATHをglibをインストールした場所を先に読むようにする(つまりprefixのbin)。
      • PATH変更後もうまくいかない...
    • gtk+のソースを全削除、再展開してやってみることに。
      • うまくいったようだ...
gdk-pixbufの件はよく解らない。ググってもちゃんとした回答を得られている人が少ないようだったのでよしとしよう。

懸案事項として、ximをenableにしていない(デフォルトどっちなのか...)つまりこのgtk+では日本語入力があやしいかもしれない。

Firefox3ビルド
  • libIDLが無いといわれる。mozillaサイトからダウンロード。
    • libIDLのビルドでflex/lexが無いと言われる。debianパッケージでインストール。
    • flexインストールしconfigure成功するも、makeで失敗。うーん。
    • bisonが入っていなかったのが問題だった様子。
    • 念のため?libIDLも最新版(0.8.12)をビルドして使うことにする。
  • configureでsys/inttypes.hがどうのこうのと言われるが、libxt-devパッケージをインストールすることで解消。
makeのあとmake packageでtar玉が作成できるようだ。こりゃ便利。

で、tar玉をテキトーな場所で展開して、LD_LIBRARY_PATHをgtk+2.14がインストールされているディレクトリに通してあげて./firefox/firefoxを実行。
ちゃんと起動しましたよ、はい。
独自ビルドのFirefoxはMinefieldと呼ばれるらしい。なるほどね。

そういやcurlが無いんでcrashreporterをdisableにしてしまった。
これはあとでやり直しかな。

☆ ☆ ☆

独自ビルドの利点ってなんだろう?と思う。

Debianだとパッケージで準備されているものが古い(=こなれた)ものばかりなので、最新のものを使いたい!となると独自ビルドするのが常になるわけだ。これは立派な理由になる。

独自だと速い、ということもあるだろうが、そんなに違うのかな?
Linuxカーネルで要らないドライバを削除してモノリシックにくみ上げたら速くなるのは解るけど...今度Firefoxで計測してみよう。

なによりソフトウェアの依存関係がはっきりしたりとか、理解できたりするのが良いことなんじゃないかなぁ。構成管理とかパッケージメンテナって大変だよなって思う。
現にgtk.orgで入手できる依存相手のライブラリって古すぎたりするわけで。

このあたりの大変さを知って開発に望むのと、知らないでぼーっと参加するのじゃえらい違いだと思うわけです。

さて、折角gtk+の最新版をビルドしたから...次はGNOMEか!?

2009年1月7日水曜日

Firefox3 on Debian etch 1 of 2

今使っているDebian(etch)でFirefox3を使いたいが、現行ではGTKが2.8なので2.10以上を使え、と怒られる。
これでは埓が明かないので独自ビルドしてみることにする。

ライブラリの依存関係を良く知らないので怪しいが
  1. glib
  2. pango
  3. gtk+が依存するライブラリ
  4. gtk+
  5. firefox
という順番でビルドした。
gtk+やfirefox3自体は沢山のライブラリに依存していて
今回独自ビルドしたものでは足りないのだが、
そこはdebianが提供しているパッケージで済ませている。

...これは後になって気づいたことなのだが、gtk+までビルドが終わっていれば
firefox3のバイナリを落としてくるだけで使えるようである。
(LD_LIBRARY_PATHをビルドしたgtk+に通してあげるだけ)

基本的には依存関係の解決が出来ていれば問題無いようで、
makeで変にコケたのはgtk+だけ。

ダウンロード

ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/

からFirefox 3.0.5をダウンロード。

http://www.gtk.org/

からGTK一式をダウンロード。

gtk+-2.14.0
Pango-1.20.5
glib-2.18.3

gtk+のビルドに必要なatkとcairo, 画像ライブラリ(jpeg/tiff/png)は
GTKのサイトではなく配布元から取ってくる必要がある。
中途半端に置いておくのはやめてほしい...

http://ftp.gnome.org/pub/gnome/sources/atk/
http://cairographics.org/releases/
ftp://ftp.uu.net/graphics/jpeg
ftp://ftp.remotesensing.org/pub/libtiff

atk 1.25.2
cairo 1.8.6

cairoをビルドするのにpixmanも必要なので落としておくこと。
png用ライブラリはどこから落としたか忘れた...
firefoxをビルドするのに必要なlibIDLはGNOMEサイトから。

ftp://ftp.gnome.org/pub/GNOME/sources/libIDL

展開

ビルド用ディレクトリ($HOME/Garage/sourcesとしている)に上記のパッケージを展開

ビルド

glibのビルド

prefixに自分のビルド用HOME($HOME/Garage/home)を指定してビルド

pangoのビルド

インストールしたglibを指すようにしたあとでconfigure実行

export CPPFLAGS="-I<$HOME>/Garage/home/lib/glib-2.0/include"
export LDFLAGS="-L<$HOME>/Garage/home/lib"
export PKG_CONFIG_PATH="<$HOME>/Garage/home/lib/pkgconfig"
./configure --prefix=$HOME/Garage/home

次回はgtk+のビルド実施。