第17課 Firefox をインストールする!

今回は Firefox のインストールに挑戦します。Web ブラウザは非常に便利ですからね。

dojomaster@slackware:~$ wget -P pkg/ ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/10.0.2/source/firefox-10.0.2.source.tar.bz2
(中略)
dojomaster@slackware:~$ mv src/firefox-10.0.2.source.tar.bz2 pkg/
dojomaster@slackware:~$ tar -C src/ -xjf pkg/firefox-10.0.2.source.tar.bz2 
dojomaster@slackware:~$ cd src/mozilla-release/
dojomaster@slackware:~/src/mozilla-release$ ./configure && make
(中略)
checking for gnome-vfs-2.0 >= 2.0 gnome-vfs-module-2.0 >= 2.0... checking for gconf-2.0 >= 1.2.1 gobject-2.0 ... checking for libnotify >= 0.4... Package libnotify was not found in the pkg-config search path. Perhaps you should add the directory containing `libnotify.pc' to the PKG_CONFIG_PATH environment variable No package 'libnotify' found
configure: error: Library requirements (libnotify >= 0.4) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.

libnotify というのが必要なようです:

dojomaster@slackware:~/src/mozilla-release$ wget -P ~/pkg http://ftp.gnome.org/pub/GNOME/sources/libnotify/0.7/libnotify-0.7.4.tar.xz
(中略)
dojomaster@slackware:~/src/mozilla-release$ tar -C ~/src/ -xJf ~/pkg/libnotify-0.7.4.tar.xz 
dojomaster@slackware:~/src/mozilla-release$ pushd ../libnotify-0.7.4/
~/src/libnotify-0.7.4 ~/src/mozilla-release
dojomaster@slackware:~/src/libnotify-0.7.4$ ./configure && make
(中略)
configure: error: Package requirements (gtk+-3.0 >= 2.90) were not met:

No package 'gtk+-3.0' found

試した libnotify のバージョンが新しすぎたようです。古いのを試しましょう。0.6 系はダメだったので、0.5 系でいきます:

dojomaster@slackware:~/src/libnotify-0.7.4$ wget -P ~/pkg http://ftp.gnome.org/pub/GNOME/sources/libnotify/0.5/libnotify-0.5.2.tar.gz
(中略)
dojomaster@slackware:~/src/libnotify-0.7.4$ tar -C .. -xzf ~/pkg/libnotify-0.5.2.tar.gz 
dojomaster@slackware:~/src/libnotify-0.7.4$ cd ../libnotify-0.5.2/
dojomaster@slackware:~/src/libnotify-0.5.2$ ./configure && make
(中略)
dojomaster@slackware:~/src/libnotify-0.5.2$ sudo make install
(中略)

Firefox に再挑戦です:

dojomaster@slackware:~/src/libnotify-0.5.2$ popd
~/src/mozilla-release
dojomaster@slackware:~/src/mozilla-release$ ./configure && make
(中略)
checking for alsa... Package alsa was not found in the pkg-config search path.
Perhaps you should add the directory containing `alsa.pc'
to the PKG_CONFIG_PATH environment variable
No package 'alsa' found
configure: error: Need alsa for Ogg, Wave or WebM decoding on Linux.  Disable with --disable-ogg --disable-wave --disable-webm.  (On Ubuntu, you might try installing the package libasound2-dev.)

ALSA がないのでエラーになりました。別に音が出なくてもいいので、ヒントのとおり無効化します:

dojomaster@slackware:~/src/mozilla-release$ ./configure --disable-ogg --disable-wave --disable-webm && make
(中略)
checking for GL/glx.h... no
configure: error: Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))

X Window System に OpenGL のモジュールを組込んでいないので、エラーになりました。drm と mesa をインストールしなかったバチが当たりまあした。こんなところで影響が出るとは、横着せずにちゃんとビルドするんでした。

ということで、今からビルドしてみます。まずは glproto です。もうインストールしてある気もしますが:

dojomaster@slackware:~$ cd src/xorg/util/modular/proto/glproto/
dojomaster@slackware:~/src/xorg/util/modular/proto/glproto$ sudo PKG_CONFIG_PATH=/usr/local/share/pkgconfig:$PKG_CONFIG_PATH ./configure
(中略)
dojomaster@slackware:~/src/xorg/util/modular/proto/glproto$ sudo make install
(中略)

次は mesa/drm です。 “–enable-nouveau-experimental-api” という configure オプションを渡してビルドしないと、mesa のビルドができません。ひどい話です。:

dojomaster@slackware:~/src/xorg/util/modular/proto/glproto$ cd ../../mesa/drm
dojomaster@slackware:~/src/xorg/util/modular/mesa/drm$ sudo PKG_CONFIG_PATH=/usr/local/share/pkgconfig:$PKG_CONFIG_PATH ./configure --enable-nouveau-experimental-api
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/drm$ sudo make
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/drm$ sudo make install
(中略)

次は mesa です。そのまま configure したら ATI のドライバ云々でエラーが出たので、 “–with-gallium-drivers” オプションで必須らしい nouveau だけを指定しました。正直意味は分かりません。Firefox のビルドさえできればそれでいいのです:

dojomaster@slackware:~/src/xorg/util/modular/mesa/drm$ cd ../mesa/
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo PKG_CONFIG_PATH=/usr/local/share/pkgconfig:$PKG_CONFIG_PATH ./configure --with-gallium-drivers=nouveau
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
python -t -O -O main/es_generator.py -S main/APIspec.xml -V GLES1.1 > main/api_exec_es1.c
Traceback (most recent call last):
  File "main/es_generator.py", line 26, in <module>
    import APIspecutil as apiutil
  File "/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/mesa/main/APIspecutil.py", line 28, in <module>
    import libxml2
ImportError: No module named libxml2
gmake[2]: *** No rule to make target `main/api_exec_es1.c', needed by `depend'.  Stop.
gmake[2]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/mesa'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src'
make: *** [default] Error 1

Python の libxml2 モジュールがないとかでエラーになったので、インストールします:

dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ wget -P ~/pkg/ ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.8.tar.gz
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ tar -C ~/src/ -xzf ~/pkg/libxml2-sources-2.7.8.tar.gz 
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ pushd ~/src/libxml2-2.7.8/
~/src/libxml2-2.7.8 ~/src/xorg/util/modular/mesa/mesa
dojomaster@slackware:~/src/libxml2-2.7.8$ cd python/
dojomaster@slackware:~/src/libxml2-2.7.8/python$ sudo ./setup.py build install
(中略)
dojomaster@slackware:~/src/libxml2-2.7.8/python$ python
Python 2.6.6 (r266:84292, Nov 27 2010, 19:47:39) 
[GCC 4.5.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libxml2
>>> ^D

mesa のビルドに戻ります:

dojomaster@slackware:~/src/libxml2-2.7.8/python$ popd
~/src/xorg/util/modular/mesa/mesa
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make clean
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo PKG_CONFIG_PATH=/usr/local/share/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH ./configure --with-gallium-drivers=nouveau
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
gcc -c -I. -I../../../../src/gallium/include -I../../../../src/gallium/auxiliar
y -I../../../../src/gallium/drivers -I/usr/local/include -I/usr/local/include/l
ibdrm   -I../../../../src/gallium/drivers/nouveau/include  -g -O2 -Wall -std=c9
9 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-
aliasing -fno-builtin-memcmp -g -O2  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3
DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_XCB_DRI2 -fvisibility=hidden  nouveau_screen.c -o nouveau_screen.o
In file included from nouveau_screen.c:24:0:
/usr/local/include/libdrm/nouveau_drmif.h:29:28: fatal error: nouveau_device.h: No such file or directory
compilation terminated.
gmake[4]: *** [nouveau_screen.o] Error 1
gmake[4]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/drivers/nouveau'
gmake[3]: *** [default] Error 1
gmake[3]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/drivers'
gmake[2]: *** [default] Error 1
gmake[2]: *** [default] Error 1
gmake[2]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src'
make: *** [default] Error 1

“nouveau_device.h が見付からないというエラーが出ました。問題となっている “usr/local/include/libdrm/nouveau_drmif.h” の 29 行目の ‘#include “nouveau_device.h”‘ を ‘#include <nouveau/nouveau_device.h>’ に書き換えてから再挑戦です:

dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
gcc -c -I. -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers -I../../../../../include -I../../../../../src/mapi -I../../../../../src/mesa -I../../../../../src/gallium/state_trackers/dri/common -I../../../../../src/mesa/drivers/dri/common -I../../../../../src/mesa/main  -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -g -O2  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_XCB_DRI2 -fvisibility=hidden  dri_context.c -o dri_context.o
In file included from ../../../../../src/mesa/drivers/dri/common/utils.h:32:0,
                 from dri_context.c:32:
../../../../../include/GL/internal/dri_interface.h:51:17: fatal error: drm.h: No such file or directory
compilation terminated.
gmake[5]: *** [dri_context.o] Error 1
gmake[5]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/state_trackers/dri/drm'
gmake[4]: *** [default] Error 1
gmake[4]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/state_trackers/dri'
gmake[3]: *** [subdirs] Error 1
gmake[3]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/state_trackers'
gmake[2]: *** [default] Error 1
gmake[2]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src'
make: *** [default] Error 1

include/GL/internal/dri_interface.h の 51 行目、’#include <drm.h>’ を ‘#include <libdrm/drm.h>’ に書き換えてから再挑戦です:

dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
gcc -c -I. -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers  -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno
-builtin-memcmp -g -O2  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_XCB_DRI2 -fvisibility=hidden  nouveau_drm_winsys.c -o nouveau_drm_winsys.o
nouveau_drm_winsys.c:9:27: fatal error: nouveau_drmif.h: No such file or directory
compilation terminated.
gmake[3]: *** [nouveau_drm_winsys.o] Error 1
gmake[3]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/winsys/nouveau/drm'
gmake[2]: *** [default] Error 1
gmake[2]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/winsys'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src'
make: *** [default] Error 1

以下の変更を施します:

--- ./src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c.orig  2012-03-02 03:42:29.273000629 +0900
+++ ./src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c       2012-03-02 03:49:12.131997694 +0900
@@ -6,9 +6,9 @@
 
 #include "nouveau_drm_public.h"
 
-#include "nouveau_drmif.h"
-#include "nouveau_channel.h"
-#include "nouveau_bo.h"
+#include <libdrm/nouveau_drmif.h>
+#include <nouveau/nouveau_channel.h>
+#include <nouveau/nouveau_bo.h>
 
 #include "nouveau/nouveau_winsys.h"
 #include "nouveau/nouveau_screen.h"

また、/usr/local/include/xf86drm.h の 40 行目を ‘#include <libdrm/drm.h>’ に変更します。さっきから様子がおかしいですが、とにかく続けます:

dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
g++ -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -g -O2  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_XCB_DRI2 -fvisibility=hidden -o nouveau_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o nouveau_dri.so.tmp  -L../../../../lib -Wl,-R/usr/local/lib/dri -ldricore -lglsl  -L/usr/local/lib -ldrm   -lexpat -lm -lpthread -ldl  ;
nouveau_dri.so.tmp: undefined reference to `nouveau_resource_alloc'
nouveau_dri.so.tmp: undefined reference to `nouveau_pushbuf_flush'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_pending'
nouveau_dri.so.tmp: undefined reference to `nouveau_reloc_emit'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_status'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_reset'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_busy'
nouveau_dri.so.tmp: undefined reference to `nouveau_grobj_autobind'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_return_val'
nouveau_dri.so.tmp: undefined reference to `nouveau_pushbuf_marker_emit'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_map_range'
nouveau_dri.so.tmp: undefined reference to `nouveau_device_get_param'
nouveau_dri.so.tmp: undefined reference to `nouveau_resource_destroy'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_unmap'
nouveau_dri.so.tmp: undefined reference to `nouveau_channel_free'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_map_flush'
nouveau_dri.so.tmp: undefined reference to `nouveau_grobj_free'
nouveau_dri.so.tmp: undefined reference to `nouveau_device_open_existing'
nouveau_dri.so.tmp: undefined reference to `nouveau_pushbuf_emit_reloc'
nouveau_dri.so.tmp: undefined reference to `nouveau_device_close'
nouveau_dri.so.tmp: undefined reference to `nouveau_channel_alloc'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_wait_status'
nouveau_dri.so.tmp: undefined reference to `nouveau_pushbuf_submit'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_handle_get'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_map'
nouveau_dri.so.tmp: undefined reference to `nouveau_resource_init'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_new'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_ref'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_handle_ref'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_alloc'
nouveau_dri.so.tmp: undefined reference to `nouveau_bo_new_tile'
nouveau_dri.so.tmp: undefined reference to `nouveau_grobj_alloc'
nouveau_dri.so.tmp: undefined reference to `nouveau_notifier_free'
nouveau_dri.so.tmp: undefined reference to `nouveau_resource_free'
collect2: ld returned 1 exit status
gmake[3]: *** [nouveau_dri.so] Error 1
gmake[3]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/targets/dri-nouveau'
gmake[2]: *** [default] Error 1
gmake[2]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src/gallium/targets'
make[1]: *** [subdirs] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xorg/util/modular/mesa/mesa/src'
make: *** [default] Error 1

コンパイル時のオプションが足りてないみたいですね。`nouveau_*’ なんとかというシンボルは /usr/local/lib/libdrm_nouveau.so に含まれているので、Makefile を編集して gcc にそう教えてやります:

--- src/gallium/targets/dri-nouveau/Makefile.orig       2012-03-02 04:55:01.814001201 +0900
+++ src/gallium/targets/dri-nouveau/Makefile    2012-03-02 04:55:07.721000068 +0900
@@ -23,6 +23,6 @@
 
 include ../Makefile.dri
 
-DRI_LIB_DEPS += $(shell $(PKG_CONFIG) libdrm_nouveau --libs)
+DRI_LIB_DEPS += $(shell $(PKG_CONFIG) libdrm_nouveau --libs) $(NOUVEAU_LIBS)
 
 symlinks:

NOUVEAU_LIBS は configs/current で定義されています。

改めて make します:

dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make
(中略)
dojomaster@slackware:~/src/xorg/util/modular/mesa/mesa$ sudo make install
(中略)

やっと mesa のオタンコナスがインストールできました。Firefox のビルドに戻ります:

dojomaster@slackware:~/src/mozilla-release$ ./configure --disable-ogg --disable-wave --disable-webm && make
(中略)
dojomaster@slackware:~/src/mozilla-release$ sudo make install
(中略)

ビルドに数時間を費し、やっと Firefox のインストールが完了しました。X Window System なみに大変でした。

何故か英語版になっていることと、マウスホイールの設定をしていないことと、キレイな日本語フォントをまだインストールしていないことに気付きましたが、もう疲れたのでこれでよしとしましょう。

ひたすらソースコードをバキバキコンパイルして GUI 環境を手に入れるという当初の目標を達成した (?) ので、とりあえずこのツアーは終了です。やはりdeb や rpm といったパッケージ管理システムは偉大です。むやみにソースからインストールせずに、deb や rpm を活用しましょう。でないと大変なことになります。

(コウヅ)



比較サイト

第16課 GUI 環境をチューンアップする!

Xfce が不完全ながらも動作するようになりました。もう一息で快適な GUI 環境が手に入りそうです。

前回表示されないアイコンが多いことに気付いたので、まずはこれを直します。Xfce の警告文で提示された http://icon-theme.freedesktop.org/releases/ から必要なファイルをダウンロードし、インストールします:

dojomaster@slackware:~$ wget -P pkg/ http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.12.tar.gz
(中略)
dojomaster@slackware:~$ tar -C src/ -xzf pkg/hicolor-icon-theme-0.12.tar.gz 
dojomaster@slackware:~$ cd src/hicolor-icon-theme-0.12/
dojomaster@slackware:~/src/hicolor-icon-theme-0.12$ ls
dojomaster@slackware:~/src/hicolor-icon-theme-0.12$ ./configure && make
(中略)
dojomaster@slackware:~/src/hicolor-icon-theme-0.12$ sudo make install
(中略)

これでバッチリかと思いましたが、xfce4-settings-manager を起動してみると、まだ半分くらいしかアイコンが表示されません。特にエラーメッセージも出力されないので、どうしたものでしょう。まあアイコンがなくても何とかなるだろう、ということで、放っておきます。

以前時計がずれていることに気付いて直しましたが、ハードウェアクロックへの書き込みを忘れていましたので、もう一度直します :

dojomaster@slackware:~$ sudo date 03011404
Thu Mar  1 14:04:00 JST 2012
dojomaster@slackware:~$ sudo /sbin/hwclock -w --utc

VirtualBox の設定で “ハードウェアクロックをUTCにする” を選んだので、 “–utc” オプションを渡しました。

さて、現状だと CLI でユーザログインして、それから startxfce4 を起動するという具合で、少し不便です。そこで、グラフィカルなログイン画面を提供してくれるディスプレイマネージャがあれば便利です。

ディスプレイマネージャにはいくつか種類がありますが、手っ取り早く X Window System 標準の XDM を使うことにします。何はともあれ、XDM を起動してみましょう (X をシャットダウンしてから):

dojomaster@slackware:~$ sudo ps ax | grep '[s]tartxfce4'
Password:
 2236 tty1     S+     0:00 sudo startxfce4
dojomaster@slackware:~$ sudo kill 2236
dojomaster@slackware:~$ sudo xdm

何ともノスタルジックな画面ですが、気にせずログインしてみましょう。なお、パスワードはエコーバックされません。…………………ログインには成功したようですが、先に進めません。でたらめなユーザ名を入力すると違った反応が見れますが、先に進めないことに変わりありません。

xdm のマニュアルによると、ログイン画面の後、Xsession というファイルを実行するようです。/usr/local/lib/X11/xdm/Xsession を開いてみると、$HOME/.xsession があればそれを実行することが分かりました。~/.xsession が存在していたので開いてみると、何故か GPG の設定がありましたが、それだけでした。

Xsession が終了するとまたログイン画面に戻る仕組みなので、この ~/.xsession の中から startxfce を呼び出せばよさそうです。試しにそのように編集します:

dojomaster@slackware:~$ echo `which startxfce4` >> ~/.xsession

この状態で再度 XDM からログインします。すると、今度はログイン画面から先に進み、Xfce が起動しました。簡単ですね。

さて、一般ユーザで文字化けしない Xfce 環境にログインしました。初回ログイン時にデフォルトの Xfce パネルにするか、空のパネルにするか聞かれます。デフォルトを選んだところ、パネルは表示されたものの、画像の表示が明らかにヘンです。

パネル以外の表示は問題ないので、パネルが依存しているライブラリが問題なんでしょうか。試しに garcon 0.1.10 と libwnck 2.24.2 を入れてみましたが、効果はありませんでした。少し古いバージョンの Xfce も試すべきでしょうが、面倒臭いので、別にパネルなんかなくてもいいや、と開き直ることにしました。パネルの設定をコントロールパネルで変更し、全項目削除、極小サイズ、しかも自動的に隠れる、という風にしてやりました。忌々しい。

XDM でログインできるようになりましたが、Slackware 起動時に xdm も起動して欲しいですね。/etc/inittab を編集し、デフォルトランレベルを 4 にします。あと、/etc/rc.d/rc.4 の xdm のフルパスを、/usr/bin/xdm から /usr/local/bin/xdm に変更しておきます。

次は日本語化です。これは ~/.xsession の中での startxfce4 呼び出しの直前に、 “export LANG=ja_JP.UTF-8” を追加すればめでたく日本語表示になります。びっくりするほど簡単です。

GUI が大活躍する場面の 1 つは Web の閲覧でしょうか。これは CLI だとつらいですからね。

というわけで、次回 Firefox をビルドします。お楽しみに!

(コウヅ)



ペット

第15課 Xfce を起動する!

随分文章の調子が落ち着いてきましたが、ともかく Xfce のインストールが終わったので、起動してみましょう。コンソールから startxfce4 を実行すればいいようです:

dojomaster@slackware:~$ sudo startxfce4 

文字化けして豆腐だらけになっています。困りました。たぶん GTK+ がおかしいんでしょう。

背景で右クリックしてコンテキストメニューを表示し、一番下の項目をポイントするとサブメニューが開きます。その一番上の、ギアのアイコンが付いている項目をクリックすると、”コマンド名を指定して実行する” (とか何とか) のダイアログが表示されるので、”xterm” と入力して (文字化けしますが) エンターを押しました。

起動した xterm は GTK+ と無縁なので、幸い文字化けしません。xterm 内で gtk-demo と入力して起動すると、以下のメッセージが出力されました:

(gtk-demo:1991): Pango-WARNING **: failed to choose a font, expect ugly output.
engine-type='PangoRenderFc', script='common'

“ugly output” というか、文字が全部豆腐で全く読めないんですが…。なお、LANG は en_US になっていました。

上記エラーメッセージで Google 検索したところ、次のサイトを見付けました: https://bbs.archlinux.org/viewtopic.php?id=73863

“fc-list” というキーワードを発見しました。これは利用可能なフォントの一覧を表示するプログラムです。颯爽と実行してみました:

dojomaster@slackware:~$ fc-list

何も表示されませんでした。おかしいですね。

man fc-list の SEE ALSO に fc-cache というのが載っていました。フォントキャッシュを作るプログラムなんでしょうが、fc-list の充実につながるか不明です。ともあれ実行してみました:

dojomaster@slackware:~$ sudo fc-cache -fv /usr/local/share/fonts/X11
/usr/local/share/fonts/X11: caching, new cache contents: 0 fonts, 10 dirs
/usr/local/share/fonts/X11/100dpi: caching, new cache contents: 398 fonts, 0 di
rs
/usr/local/share/fonts/X11/75dpi: caching, new cache contents: 398 fonts, 0 dir
s
/usr/local/share/fonts/X11/OTF: caching, new cache contents: 23 fonts, 0 dirs
/usr/local/share/fonts/X11/Speedo: caching, new cache contents: 0 fonts, 0 dirs
/usr/local/share/fonts/X11/TTF: caching, new cache contents: 13 fonts, 0 dirs
/usr/local/share/fonts/X11/Type1: caching, new cache contents: 29 fonts, 0 dirs
/usr/local/share/fonts/X11/cyrillic: caching, new cache contents: 0 fonts, 0 dirs
/usr/local/share/fonts/X11/encodings: caching, new cache contents: 0 fonts, 1 dirs
/usr/local/share/fonts/X11/encodings/large: caching, new cache contents: 0 fonts, 0 dirs
/usr/local/share/fonts/X11/misc: caching, new cache contents: 59 fonts, 0 dirs
/usr/local/share/fonts/X11/util: caching, new cache contents: 0 fonts, 0 dirs
/usr/local/var/cache/fontconfig: cleaning cache directory
/root/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded
dojomaster@slackware:~$ fc-list

残念ながらハズレだったようです。が、fc-cache の出力に “.fontconfig” というキーワードが出てきたので、これで Google 検索したところ、Wikipedia の記事が出てきました: http://ja.wikipedia.org/wiki/Fontconfig. どうも “fonts.conf” というのが鍵らしい。locate でこのファイルを探すと、/usr/local/etc/fonts/fonts.conf にありました。早速開いてみると、”このファイルを編集すべからず。設定の変更は local.conf で行うべし” とありました。が、 “local.conf” は存在せず、どうやって書けばいいのか分からないので Google 検索したところ、次のサイトを発見しました: http://wiki.fdiary.net/font/?unixuser200403-2. そしてそこを参考に以下の /usr/local/etc/fonts/local.conf を作りました:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <dir>/usr/local/share/fonts</dir>
</fontconfig>

もう一度 fc-list を実行してみます:

dojomaster@slackware:~$ fc-list
Luxi Serif:style=Regular
LucidaBright:style=Italic
Utopia:style=Bold Italic
Serto Malankara:style=Regular
Luxi Serif:style=Bold
Serto Mardin:style=Regular
LucidaTypewriter:style=Sans Bold
Fixed:style=Bold
Estrangelo Edessa:style=Regular
Serto Kharput:style=Regular
Times:style=Bold Italic
Clean:style=Regular
Luxi Mono:style=Bold
Utopia:style=Bold
Estrangelo Nisibin:style=Regular
ClearlyU PUA:style=Regular
Charter:style=Bold Italic
Bitstream Charter:style=Bold Italic
Luxi Sans:style=Bold
Serto Batnan:style=Bold
Estrangelo Midyat:style=Regular
Estrangelo Talada:style=Regular
Courier:style=Bold Italic
Luxi Sans:style=Regular
Courier:style=Regular
Charter:style=Bold
Cursor:style=Regular
Helvetica:style=Oblique
LucidaBright:style=Regular
Terminal:style=Bold
Estrangelo Quenneshrin:style=Regular
Serto Jerusalem:style=Regular
East Syriac Ctesiphon:style=Regular
Bitstream Charter:style=Regular
Fixed:style=Bold SemiCondensed
Serto Jerusalem Outline:style=Regular
Fixed:style=SemiCondensed
Times:style=Bold
Courier 10 Pitch:style=Bold Italic
Charter:style=Italic
Luxi Mono:style=Regular
Estrangelo Antioch:style=Regular
Courier:style=Oblique
Bitstream Charter:style=Italic
Newspaper:style=Regular
Serto Urhoy:style=Bold
Times:style=Italic
ClearlyU:style=Regular
Lucida:style=Sans Bold
micro.pcf:style=Regular
Fixed:style=Oblique SemiCondensed
Fixed:style=Oblique
LucidaTypewriter:style=Sans
New Century Schoolbook:style=Bold
ClearlyU Alternate Glyphs:style=Regular
Courier 10 Pitch:style=Italic
Utopia:style=Italic
Courier:style=Bold Oblique
Lucida:style=Sans Italic
Lucida:style=Sans
Serto Urhoy:style=Regular
Luxi Serif:style=Oblique
Luxi Serif:style=Bold Oblique
Serto Batnan:style=Regular
decsess.pcf:style=Regular
Helvetica:style=Bold
Times:style=Regular
New Century Schoolbook:style=Bold Italic
Luxi Mono:style=Oblique
Courier 10 Pitch:style=Regular
Lucida:style=Sans Bold Italic
Helvetica:style=Regular
Luxi Sans:style=Oblique
Serto Mardin:style=Bold
Estrangelo TurAbdin:style=Regular
Courier:style=Italic
deccurs.pcf:style=Regular
cursor.pcf:style=Regular
Charter:style=Regular
Courier 10 Pitch:style=Bold
Serto Jerusalem:style=Italic
Terminal:style=Regular
Serto Jerusalem:style=Bold
Fixed:style=ko
Fixed:style=ja
Fixed:style=Regular
Helvetica:style=Bold Oblique
New Century Schoolbook:style=Italic
Luxi Sans:style=Bold Oblique
Luxi Mono:style=Bold Oblique
Courier:style=Bold
Utopia:style=Regular
Goha\-Tibeb Zemen:style=Regular
Estrangelo Nisibin Outline:style=Regular
East Syriac Adiabene:style=Regular
Bitstream Charter:style=Bold
New Century Schoolbook:style=Regular

フヒヒ! うまくいきました。いい感じです。

では startxfce4 を再起動してみましょう:

dojomaster@slackware:~$ sudo ps axf | grep '[s]tartxfce4'
 1931 tty1     S+     0:00  \_ sudo startxfce4
dojomaster@slackware:~$ sudo kill 1931
dojomaster@slackware:~$ sudo startxfce4

今度はキレイに文字が表示できるようになりました。が、アイコンの一部が表示されないようです。xterm から xfce4-settings-manager を起動すると、以下のメッセージが xterm 内に表示されました:

(xfce4-settings-manager:2314): Gtk-WARNING **: Could not find the icon 'preferences-desktop'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
        http://icon-theme.freedesktop.org/releases

Xfce のテーマというのをインストールしないといけないようです。

長くなったので、こは次の回を待ちねかし。

(コウヅ)



ペット

第14課 Xfce をインストールする! その2

さて、前回 Glade のインストールに挑戦しましたが、その後よくよく見てみたら、Glade と libglade は別々に配布されていることが分かりました。なので、Glade ではなく、libglade をインストールすればいいようです。では早速。

dojomaster@slackware:~$ wget -P pkg http://ftp.gnome.org/pub/GNOME/sources/libglade/2.6/libglade-2.6.4.tar.bz2
(中略)
dojomaster@slackware:~$ tar -C src -xjf pkg/libglade-2.6.4.tar.bz2 
dojomaster@slackware:~$ cd src/libglade-2.6.4/
dojomaster@slackware:~/src/libglade-2.6.4$ ./configure && make
(中略)
 gcc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"libglade\" -I.. -pthread -I/usr/local/include/libxml2 -I/usr/local/include/atk-1.0 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/include -I/usr/local/include/cairo -I/usr/local/include/gdk-pixbuf-2.0 -I/usr/local/include/pango-1.0 -I/usr/local/include/pixman-1 -I/usr/local/include -I/usr/local/include/freetype2 -I/usr/local/include/libpng12 -I/usr/local/include/libpng15 -DGLADE_LIBDIR=\"/usr/local/lib\" -DGLADE_PREFIX=\"/usr/local\" -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGNOME_DISABLE_DEPRECATED -g -O2 -Wall -std=c9x -MT glade-init.lo -MD -MP -MF .deps/glade-init.Tpo -c glade-init.c  -fPIC -DPIC -o .libs/glade-init.o
In file included from /usr/local/include/pango-1.0/pango/pango-gravity.h:98:0,
                 from /usr/local/include/pango-1.0/pango/pango-types.h:91,
                 from /usr/local/include/pango-1.0/pango/pango-font.h:26,
                 from /usr/local/include/pango-1.0/pango/pango-utils.h:27,
                 from glade-init.c:30:
/usr/local/include/pango-1.0/pango/pango-script.h:132:12: error: expected declaration specifiers or '...' before 'G_CONST_RETURN'
/usr/local/include/pango-1.0/pango/pango-script.h:133:12: error: expected declaration specifiers or '...' before 'G_CONST_RETURN'
(中略)
make[2]: *** [glade-init.lo] Error 1
make[2]: Leaving directory `/home/dojomaster/src/libglade-2.6.4/glade'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dojomaster/src/libglade-2.6.4'
make: *** [all] Error 2

何やら長大なエラーを吐いて倒れました。Google 検索したところ、GLib の G_CONST_RETURN は deprecated なので、G_DISABLE_DEPRECATED が宣言されているとずっこけるようです (http://forums.gentoo.org/viewtopic-t-891388-start-0.html 参照)。

じゃあ、G_DISABLE_DEPRECATED を外しましょう。

dojomaster@slackware:~/src/libglade-2.6.4$ grep -Rn G_DISABLE_DEPRECATED *
(中略)
glade/Makefile:241:  -DG_DISABLE_DEPRECATED \
(中略)
dojomaster@slackware:~/src/libglade-2.6.4$ sed -e '241d' -i glade/Makefile     
dojomaster@slackware:~/src/libglade-2.6.4$ make
(中略)
dojomaster@slackware:~/src/libglade-2.6.4$ sudo make install
(中略)

入りました。なんてことはないですね。では Xfce のビルドを粛々と続けましょう。

dojomaster@slackware:~/src/libglade-2.6.4$ cd ../xfce/libxfcegui4-4.8.0
dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ sudo make install
(中略)

libxfce4menu (deprecated since 4.8) と garcon (new in 4.8) をまずインストールする必要があるみたいですが、そんなパッケージは見当たらないので、exo に移ります:

dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ cd ../exo-0.6.0
dojomaster@slackware:~/src/xfce/exo-0.6.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/exo-0.6.0$ sudo make install
(中略)

xfce4-panel に移ります:

dojomaster@slackware:~/src/xfce/exo-0.6.0$ cd ../xfce4-panel-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ ./configure && make   
(中略)
checking for garcon-1 >= 0.1.5... not found
*** The required package garcon-1 was not found on your system.
*** Please install garcon-1 (atleast version 0.1.5) or adjust
*** the PKG_CONFIG_PATH environment variable if you
*** installed the package in a nonstandard prefix so that
*** pkg-config is able to find it.

やはり garcon (ギャルソン) がいないとダメなようです。Google 検索で発見したので、インストールします:

dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ wget -P ~/pkg/ http://archive.xfce.org/src/xfce/garcon/0.1/garcon-0.1.9.tar.bz2
(中略)
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ tar -C .. -xjf ~/pkg/garcon-0.1.9.tar.bz2 
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ pushd ../garcon-0.1.9/
~/src/xfce/garcon-0.1.9 ~/src/xfce/xfce4-panel-4.8.0
dojomaster@slackware:~/src/xfce/garcon-0.1.9$ ./configure && make 
(中略)
dojomaster@slackware:~/src/xfce/garcon-0.1.9$ sudo make install
(中略)

改めて xfce4-panel をインストールします:

dojomaster@slackware:~/src/xfce/garcon-0.1.9$ popd
~/src/xfce/xfce4-panel-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ ./configure && make
(中略)
checking for libwnck-1.0 >= 2.22... not found
*** The required package libwnck-1.0 was not found on your system.
*** Please install libwnck-1.0 (atleast version 2.22) or adjust
*** the PKG_CONFIG_PATH environment variable if you
*** installed the package in a nonstandard prefix so that
*** pkg-config is able to find it.

libwnck というのが必要みたいなので、インストールします:

dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ wget -P ~/pkg http://ftp.gnome.org/pub/GNOME/sources/libwnck/2.30/libwnck-2.30.7.tar.xz
(中略)
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ tar -C ~/src -xJf ~/pkg/libwnck-2.30.7.tar.xz 
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ pushd ~/src/libwnck-2.30.7/
~/src/libwnck-2.30.7 ~/src/xfce/xfce4-panel-4.8.0
dojomaster@slackware:~/src/libwnck-2.30.7$ ./configure && make
(中略)
dojomaster@slackware:~/src/libwnck-2.30.7$ sudo make install
(中略)

改めて xfce4-panel をインストールします:

dojomaster@slackware:~/src/libwnck-2.30.7$ popd
~/src/xfce/xfce4-panel-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ sudo make install
(中略)

thunar をインストールします:

dojomaster@slackware:~/src/xfce/xfce4-panel-4.8.0$ cd ../thunar-vfs-1.2.0
dojomaster@slackware:~/src/xfce/thunar-vfs-1.2.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/thunar-vfs-1.2.0$ sudo make install
(中略)

xfce4-settings をインストールします:

dojomaster@slackware:~/src/xfce/thunar-vfs-1.2.0$ cd ../xfce4-settings-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-settings-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce4-settings-4.8.0$ sudo make install
(中略)

xfce4-session をインストールします:

dojomaster@slackware:~/src/xfce/xfce4-settings-4.8.0$ cd ../xfce4-session-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-session-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce4-session-4.8.0$ sudo make install
(中略)

xfdesktop をインストールします:

dojomaster@slackware:~/src/xfce/xfce4-session-4.8.0$ cd ../xfdesktop-4.8.0
dojomaster@slackware:~/src/xfce/xfdesktop-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfdesktop-4.8.0$ sudo make install
(中略)

xfwm4 をインストールします。これがウィンドウマネージャっぽいですね:

dojomaster@slackware:~/src/xfce/xfdesktop-4.8.0$ cd ../xfwm4-4.8.0
dojomaster@slackware:~/src/xfce/xfwm4-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfwm4-4.8.0$ sudo make install
(中略)

xfce-utils をインストールします:

dojomaster@slackware:~/src/xfce/xfwm4-4.8.0$ cd ../xfce-utils-4.8.0
dojomaster@slackware:~/src/xfce/xfce-utils-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce-utils-4.8.0$ sudo make install
(中略)

xfce4-appfinder をインストールします:

dojomaster@slackware:~/src/xfce/xfce-utils-4.8.0$ cd ../xfce4-appfinder-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-appfinder-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce4-appfinder-4.8.0$ sudo make install
(中略)

まだ gtk-xfce-engine が残っています。まず gtk-xfce-engine をインストールします:

dojomaster@slackware:~/src/xfce/xfce4-appfinder-4.8.0$ cd ../gtk-xfce-engine-2.8.0
dojomaster@slackware:~/src/xfce/gtk-xfce-engine-2.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/gtk-xfce-engine-2.8.0$ sudo make install
(中略)

Thunar をインストールしたつもりでしたが、よく見たら thunar-vfs でした。今度こそ間違えずに Thunar をインストールします:

dojomaster@slackware:~/src/xfce/gtk-xfce-engine-2.8.0$ cd ../Thunar-1.2.0
dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ ./configure && make
(中略)
  CCLD   Thunar
libtool: link: cannot find the library `/usr/lib/libgobject-2.0.la' or unhandled argument `/usr/lib/libgobject-2.0.la'
make[3]: *** [Thunar] Error 1
make[3]: Leaving directory `/home/dojomaster/src/xfce/Thunar-1.2.0/thunar'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/dojomaster/src/xfce/Thunar-1.2.0/thunar'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dojomaster/src/xfce/Thunar-1.2.0'
make: *** [all] Error 2

Thunar が GLib の libtool アーカイブを発見できずにいるようです。正攻法が分からないので、必要な libtool アーカイブにリンクを張ってしのぎます:

dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ sudo ln -s /usr/local/lib/libgobject-2.0.la /usr/lib/libgobject-2.0.la
dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ sudo ln -s /usr/local/lib/libgthread-2.0.la /usr/lib/libgthread-2.0.la
dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ sudo ln -s /usr/local/lib/libglib-2.0.la /usr/lib/libglib-2.0.la
dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ make
(中略)
dojomaster@slackware:~/src/xfce/Thunar-1.2.0$ sudo make install
(中略)

次回は Xfce を起動します! うまくいくかな?

(コウヅ)



キャリアアップ

第13課 Xfce をインストールする!

GTK+ のインストールが終わったので、いよいよ Xfce をインストールする! http://docs.xfce.org/xfce/building を見て順番を守りながらコンパイルすべし!

dojomaster@slackware:~$ cd src/xfce/xfce4-dev-tools-4.8.0
dojomaster@slackware:~/src/xfce/xfce4-dev-tools-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfce4-dev-tools-4.8.0$ sudo make install
(中略)
dojomaster@slackware:~/src/xfce/xfce4-dev-tools-4.8.0$ cd ../libxfce4util-4.8.1
dojomaster@slackware:~/src/xfce/libxfce4util-4.8.1$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/libxfce4util-4.8.1$ sudo make install
(中略)
dojomaster@slackware:~/src/xfce/libxfce4util-4.8.1$ cd ../xfconf-4.8.0
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ ./configure && make
(中略)
checking for dbus-glib-1 >= 0.72... not found
*** The required package dbus-glib-1 was not found on your system.
*** Please install dbus-glib-1 (atleast version 0.72) or adjust
*** the PKG_CONFIG_PATH environment variable if you
*** installed the package in a nonstandard prefix so that
*** pkg-config is able to find it.

xfce4-dev-tools-4.8.0 と libxfce4util-4.8.1 の 2 つのインストールが終わり、xfconf-4.8.0 の configure を始めましたが、D-Bus がないのでズッコケたようです。

dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ wget -P ~/pkg http://dbus.freedesktop.org/releases/dbus/dbus-1.4.16.tar.gz
(中略)
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ cd ~/src
dojomaster@slackware:~/src$ tar xzf ../pkg/dbus-1.4.16.tar.gz
dojomaster@slackware:~/src$ cd dbus-1.4.16/
dojomaster@slackware:~/src/dbus-1.4.16$ ./configure && make
(中略)
dojomaster@slackware:~/src/dbus-1.4.16$ sudo make install
(中略)
dojomaster@slackware:~/src/dbus-1.4.16$ cd ../xfce/xfconf-4.8.0
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ ./configure && make
(中略)
checking for dbus-glib-1 >= 0.72... not found
*** The required package dbus-glib-1 was not found on your system.
*** Please install dbus-glib-1 (atleast version 0.72) or adjust
*** the PKG_CONFIG_PATH environment variable if you
*** installed the package in a nonstandard prefix so that
*** pkg-config is able to find it.

あらら。D-Bus 入れたのになぜ?と思ったら、必要なのは DBus-GLib というやつでした…。

dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ wget -P ~/pkg http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.98.tar.gz
(中略)
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ tar -C ~/src/ -xzf ~/pkg/dbus-glib-0.98.tar.gz
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ pushd ~/src/dbus-glib-0.98/
~/src/dbus-glib-0.98 ~/src/xfce/xfconf-4.8.0
dojomaster@slackware:~/src/dbus-glib-0.98$ ./configure && make
(中略)
dojomaster@slackware:~/src/dbus-glib-0.98$ sudo make install
(中略)
dojomaster@slackware:~/src/dbus-glib-0.98$ popd
~/src/xfce/xfconf-4.8.0
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ sudo /sbin/ldconfig
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ sudo make install
(中略)

はい、xfconf-4.8.0 が片付きました。どんどんいきます。

dojomaster@slackware:~/src/xfce/xfconf-4.8.0$ cd ../libxfce4ui-4.8.0
dojomaster@slackware:~/src/xfce/libxfce4ui-4.8.0$ ./configure && make
(中略)
dojomaster@slackware:~/src/xfce/libxfce4ui-4.8.0$ sudo make install
(中略)
dojomaster@slackware:~/src/xfce/libxfce4ui-4.8.0$ cd ../libxfcegui4-4.8.0
dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ ./configure && make
(中略)
checking for libglade-2.0 >= 2.0.0... not found
*** The required package libglade-2.0 was not found on your system.
*** Please install libglade-2.0 (atleast version 2.0.0) or adjust
*** the PKG_CONFIG_PATH environment variable if you
*** installed the package in a nonstandard prefix so that
*** pkg-config is able to find it.

libxfce4ui-4.8.0 のインストールが終わり、libxfcegui4-4.8.0 の configure をおっ始めました。が、Glade がない、ということでエラーが出ました。Glade は Visual Studio みたいな RAD 環境です。Glade で作ったアプリケーションは libglade やらなんやらがないと動きません、ということでしょうか。

dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ wget -P ~/pkg http://ftp.gnome.org/pub/GNOME/sources/glade/2.12/glade-2.12.2.tar.bz2
(中略)
dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ tar -C ~/src -xjf ~/pkg/glade-2.12.2.tar.bz2
dojomaster@slackware:~/src/xfce/libxfcegui4-4.8.0$ pushd ~/src/glade-2.12.2/
~/src/glade-2.12.2 ~/src/xfce/libxfcegui4-4.8.0
dojomaster@slackware:~/src/glade-2.12.2$ ./configure && make
(中略)
checking for scrollkeeper-config... no
configure: error: Couldn't find scrollkeeper-config, please install the scrollkeeper package

Glade 2 をビルドするには、ScrollKeeper というのが必要らしいです。

dojomaster@slackware:~/src/glade-2.12.2$ wget -P ~/pkg 'http://downloads.sourceforge.net/project/scrollkeeper/scrollkeeper/0.3.14/scrollkeeper-0.3.14.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fscrollkeeper%2Ffiles%2Fscrollkeeper%2F0.3.14%2F&ts=1330417859&use_mirror=jaist'
(中略)
dojomaster@slackware:~/src/glade-2.12.2$ tar -C ~/src -xzf ~/pkg/scrollkeeper-0.3.14.tar.gz 
dojomaster@slackware:~/src/glade-2.12.2$ pushd ~/src/scrollkeeper-0.3.14/
~/src/scrollkeeper-0.3.14 ~/src/glade-2.12.2 ~/src/xfce/libxfcegui4-4.8.0
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ ./configure && make
(中略)
checking for DocBook XML DTD... configure: error: not found. Make sure you have the DocBook DTD installed and ensure that it is registered in /etc/xml/catalog.

ScrollKeeper には DocBook が必要らしいです。こいつはアプリケーションだのライブラリだのといったものではなくて、文書構造の規格です。DTD がどうのとか、そういう小難しいことを抜かすヤツです。

dojomaster@slackware:~/src/scrollkeeper-0.3.14$ wget -P ~/pkg/ http://www.docbook.org/xml/4.1.2/docbkx412.zip
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ sudo unzip -d /etc/xml ~/pkg/docbkx412.zip
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ sudo ln -s /etc/xml/docbook.cat /etc/xml/catalog
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ ./configure && make
(中略)
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ sudo make install
(中略)
dojomaster@slackware:~/src/scrollkeeper-0.3.14$ popd
~/src/glade-2.12.2 ~/src/xfce/libxfcegui4-4.8.0
dojomaster@slackware:~/src/glade-2.12.2$ ./configure && make
(中略)
In file included from /usr/local/include/gtk-2.0/gtk/gtk.h:229:0,
                 from /usr/local/include/gtk-2.0/gtk/gtksignal.h:32,
                 from /usr/local/include/gtk-2.0/gtk/gtkclist.h:34,
                 from gbclist.c:22:
/usr/local/include/gtk-2.0/gtk/gtkctree.h:110:3: error: expected specifier-qualifier-list before 'GtkCList'
/usr/local/include/gtk-2.0/gtk/gtkctree.h:127:3: error: expected specifier-qualifier-list before 'GtkCListClass'
/usr/local/include/gtk-2.0/gtk/gtkctree.h:149:3: error: expected specifier-qualifier-list before 'GtkCListRow'
/usr/local/include/gtk-2.0/gtk/gtkctree.h:342:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gtk_ctree_node_get_cell_type'
make[3]: *** [gbclist.o] Error 1
make[3]: Leaving directory `/home/dojomaster/src/glade-2.12.2/glade/gbwidgets'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/dojomaster/src/glade-2.12.2/glade'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dojomaster/src/glade-2.12.2'
make: *** [all] Error 2

ScrollKeeper を片付けて Glade に戻りましたが、またコンパイルエラーですか…。Glade と Gtk のバージョンが噛み合ってないんでしょうか。はあ。

ここで Glade 2.12.2 の README を見てみると、”Glade 2.12 requires GTK+ 2.8″ と書いてあります。インストール済みの GTK+ は 2.24.1 です。GTK+ が新しすぎるんでしょうか…。ギャー! どうすんだ!

というわけで続く!

(コウヅ)


キャッシング

第12課 Gnome を窓から投げ捨てろ!

ドージョーマスターのキャラがいまいち定まっていません。それはさておき、前回急に Gnome が憎らしくなったので、代わりのデスクトップ環境を考えてみます!

KDE は Qt を使っているのが何となくイヤです。となると LXDE か Xfce です。両者のロゴを見比べてみると、LXDE はパッとしません。Xfce はねずみがキュートです。

ということで、Xfce で行ってみましょう! (Xfce の土台になる部分が Gnome と密接に関係しているなんて事実、僕は知りません!)

dojomaster@slackware:~$ wget -P pkg/ http://archive.xfce.org/xfce/4.8/fat_tarballs/xfce-4.8.tar.bz2
dojomaster@slackware:~$ cd src/
dojomaster@slackware:~/src$ tar xjf ../pkg/xfce-4.8.tar.bz2 
dojomaster@slackware:~/src$ mv src xfce        
dojomaster@slackware:~/src/xfce$ ls
Thunar-1.2.0.tar.bz2                xfce4-appfinder-4.8.0.tar.bz2
Thunar-1.2.0.tar.bz2.md5            xfce4-appfinder-4.8.0.tar.bz2.md5
Thunar-1.2.0.tar.bz2.sha1           xfce4-appfinder-4.8.0.tar.bz2.sha1
exo-0.6.0.tar.bz2                   xfce4-dev-tools-4.8.0.tar.bz2
exo-0.6.0.tar.bz2.md5               xfce4-dev-tools-4.8.0.tar.bz2.md5
exo-0.6.0.tar.bz2.sha1              xfce4-dev-tools-4.8.0.tar.bz2.sha1
gtk-xfce-engine-2.8.0.tar.bz2       xfce4-panel-4.8.0.tar.bz2
gtk-xfce-engine-2.8.0.tar.bz2.md5   xfce4-panel-4.8.0.tar.bz2.md5
gtk-xfce-engine-2.8.0.tar.bz2.sha1  xfce4-panel-4.8.0.tar.bz2.sha1
libxfce4ui-4.8.0.tar.bz2            xfce4-session-4.8.0.tar.bz2
libxfce4ui-4.8.0.tar.bz2.md5        xfce4-session-4.8.0.tar.bz2.md5
libxfce4ui-4.8.0.tar.bz2.sha1       xfce4-session-4.8.0.tar.bz2.sha1
libxfce4util-4.8.1.tar.bz2          xfce4-settings-4.8.0.tar.bz2
libxfce4util-4.8.1.tar.bz2.md5      xfce4-settings-4.8.0.tar.bz2.md5
libxfce4util-4.8.1.tar.bz2.sha1     xfce4-settings-4.8.0.tar.bz2.sha1
libxfcegui4-4.8.0.tar.bz2           xfconf-4.8.0.tar.bz2
libxfcegui4-4.8.0.tar.bz2.md5       xfconf-4.8.0.tar.bz2.md5
libxfcegui4-4.8.0.tar.bz2.sha1      xfconf-4.8.0.tar.bz2.sha1
thunar-vfs-1.2.0.tar.bz2            xfdesktop-4.8.0.tar.bz2
thunar-vfs-1.2.0.tar.bz2.md5        xfdesktop-4.8.0.tar.bz2.md5
thunar-vfs-1.2.0.tar.bz2.sha1       xfdesktop-4.8.0.tar.bz2.sha1
xfce-utils-4.8.0.tar.bz2            xfwm4-4.8.0.tar.bz2
xfce-utils-4.8.0.tar.bz2.md5        xfwm4-4.8.0.tar.bz2.md5
xfce-utils-4.8.0.tar.bz2.sha1       xfwm4-4.8.0.tar.bz2.sha1
dojomaster@slackware:~/src/xfce$ for a in *.tar.bz2; do tar xjf $a; done

えらい大量ですね…。X Window System の悪夢再来でしょうか…。と思いきや、Xfce には親切なビルドの手引きがあります: http://docs.xfce.org/xfce/building

この手引きを見て思い出しましたが、GTK+ がまだインストールされていません!

dojomaster@slackware:~/src/xfce$ /sbin/ldconfig -p  | grep -i gtk

まず GTK+ から片付けましょう! GTK+ にも親切なビルドの手引きがあります: http://developer.gnome.org/gtk/stable/gtk-building.html. Xfce 4.8.0 に必要な GTK+ はバージョン 2.14 系列です。が、2.24 でも大丈夫かな?と特に根拠もなくチャレンジしてみます。

dojomaster@slackware:~/src/xfce$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.10.tar.xz
(中略)
dojomaster@slackware:~/src/xfce$ cd ..
dojomaster@slackware:~/src$ tar xJf ../pkg/gtk+-2.24.10.tar.xz 
dojomaster@slackware:~/src$ cd gtk+-2.24.10/
dojomaster@slackware:~/src/gtk+-2.24.10$ ./configure && make
(中略)
checking for BASE_DEPENDENCIES... no
configure: error: Package requirements (glib-2.0 >= 2.27.3    atk >= 1.29.2    pango >= 1.20    cairo >= 1.6    gdk-pixbuf-2.0 >= 2.21.0) were not met:

No package 'atk' found
No package 'pango' found
No package 'cairo' found
No package 'gdk-pixbuf-2.0' found
(以下略)

ATK, Παν語 (パンゴ), cairo, GDK pixbuf、と依存関係の大行進です。1 個ずつ潰していきましょう!

まずは ATK.

dojomaster@slackware:~/src/gtk+-2.24.10$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/atk/1.33/atk-1.33.6.tar.bz2
dojomaster@slackware:~/src$ cd atk-1.33.6/
dojomaster@slackware:~/src/atk-1.33.6$ ./configure && make
(中略)
make[3]: Entering directory `/home/dojomaster/src/atk-1.33.6/atk'
  CC     atkaction.lo
In file included from ../atk/atkobject.h:28:0,
                 from atkaction.h:27,
                 from atkaction.c:20:
../atk/atkstate.h:173:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
In file included from atkaction.h:27:0,
                 from atkaction.c:20:
../atk/atkobject.h:384:3: error: expected specifier-qualifier-list before 'G_CONST_RETURN'
../atk/atkobject.h:538:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
../atk/atkobject.h:539:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
../atk/atkobject.h:574:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
../atk/atkobject.h:585:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
In file included from atkaction.c:20:0:
atkaction.h:58:3: error: expected specifier-qualifier-list before 'G_CONST_RETURN'
atkaction.h:88:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.h:90:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.h:92:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.h:100:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.c:104:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.c:143:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.c:169:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.c:206:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gchar'
atkaction.c: In function 'atk_action_set_description':
atkaction.c:243:12: error: 'AtkActionIface' has no member named 'set_description'
atkaction.c:244:18: error: 'AtkActionIface' has no member named 'set_description'
atkaction.c:247:1: warning: control reaches end of non-void function
make[3]: *** [atkaction.lo] Error 1
make[3]: Leaving directory `/home/dojomaster/src/atk-1.33.6/atk'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/dojomaster/src/atk-1.33.6/atk'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dojomaster/src/atk-1.33.6'
make: *** [all] Error 2

困りますねー、こういうの。”../atk/atkstate.h:173:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘gchar'” に注目して、実際に “../atk/atkstate.h” の 173 行目を見てみます:

dojomaster@slackware:~/src/atk-1.33.6$ cat -n atk/atkstate.h | grep '^\s*173'
   173  G_CONST_RETURN gchar* atk_state_type_get_name   (AtkStateType type);

“gchar の前” って G_CONST_RETURN のことでしょうか。これは /usr/local/include/glib-2.0/glib/gmacros.h で定義されていますが、glib.h をインクルードすれば gmacros.h だのなんだのをごっそりインクルードできるみたいですが、”atk/atkstate.h” で glib.h をインクルードしている様子はありません。atkstate.h をインクルードしている、大元の atkaction.h も glib.h をインクルードしてません。代わりに glib-object.h というのをインクルードしていますが、このヘッダファイルは gmacros.h をインクルードしません…。もしや、このバージョンの atk は古い glib をターゲットに書かれている…?

要は色んなバージョンを試せということなので、最新の atk 2.3 を入れてみましょう!

dojomaster@slackware:~/src/atk-1.33.6$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/atk/2.3/atk-2.3.3.tar.xz
(中略)
dojomaster@slackware:~/src/atk-1.33.6$ cd ..  
dojomaster@slackware:~/src$ tar xJf ../pkg/atk-2.3.3.tar.xz 
dojomaster@slackware:~/src$ cd atk-2.3.3/
dojomaster@slackware:~/src/atk-2.3.3$ ./configure  && make
(中略)
dojomaster@slackware:~/src/atk-2.3.3$ sudo make install
(以下略)

あっさり片付きました。最初っから最新版を試せばよかったんですよ! じゃあ次、Pango! 最初から最新版を試します。

dojomaster@slackware:~/src/atk-2.3.3$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/pango/1.29/pango-1.29.5.tar.xz
(中略)
dojomaster@slackware:~/src/atk-2.3.3$ cd ..
dojomaster@slackware:~/src$ tar xJf ../pkg/pango-1.29.5.tar.xz 
dojomaster@slackware:~/src$ cd pango-1.29.5/
dojomaster@slackware:~/src/pango-1.29.5$ ./configure && make
(中略)
checking for GLIB... no
configure: error: 
*** Glib 2.31.0 or better is required. The latest version of
*** Glib is always available from ftp://ftp.gtk.org/.

“こんな古い Glib 使ってられっかバッキャロー!” と Pango がご立腹です。やっぱりいきなり最新版じゃなくて、まずはちょっと古いバージョンを試すべきなんですよ!

dojomaster@slackware:~/src/pango-1.29.5$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.4.tar.bz2
(中略)
dojomaster@slackware:~/src/pango-1.29.5$ cd ..
dojomaster@slackware:~/src$ tar xjf ../pkg/pango-1.28.4.tar.bz2 
dojomaster@slackware:~/src$ cd pango-1.28.4/
dojomaster@slackware:~/src/pango-1.28.4$ ./configure && make
(中略)
dojomaster@slackware:~/src/pango-1.28.4$ sudo make install
Password:
(以下略)

いやー、うまくいきました。やっぱり何事もほどほどが一番です。次、cairo!

dojomaster@slackware:~/src/pango-1.28.4$ wget -P ~/pkg http://cairographics.org/releases/cairo-1.10.2.tar.gz
(中略)
dojomaster@slackware:~/src/pango-1.28.4$ cd ..
dojomaster@slackware:~/src$ tar xzf ../pkg/cairo-1.10.2.tar.gz 
dojomaster@slackware:~/src$ cd cairo-1.10.2/
dojomaster@slackware:~/src/cairo-1.10.2$ ./configure && make
(中略)
dojomaster@slackware:~/src/cairo-1.10.2$ sudo make install
Password:
(以下略)

次は GDK pixbuf です。

dojomaster@slackware:~/src/cairo-1.10.2$ wget -P ~/pkg http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.24/gdk-pixbuf-2.24.1.tar.xz
(中略)
dojomaster@slackware:~/src/cairo-1.10.2$ cd ..  
dojomaster@slackware:~/src$ tar xJf ../pkg/gdk-pixbuf-2.24.1.tar.xz 
dojomaster@slackware:~/src$ cd gdk-pixbuf-2.24.1/
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ ./configure && make
(中略)
checking for TIFFReadRGBAImageOriented in -ltiff... no
checking for TIFFWriteScanline in -ltiff... no
checking for TIFFFlushData in -ltiff34... no
configure: WARNING: *** TIFF loader will not be built (TIFF library not found) ***
configure: error: 
*** Checks for TIFF loader failed. You can build without it by passing
*** --without-libtiff to configure but some programs using GTK+ may
*** not work properly

libtiff がないのでエラーになりました。”–without-libtiff” オプションをつけて configure するか、libtiff をインストールするかの 2 択のようです。TIFF なんてどこで使うんだろう…と思いましたが、”せっかくだから、オレは libtiff をインストールすることを選ぶぜ!”

dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ wget -P ~/pkg http://download.osgeo.org/libtiff/tiff-3.9.6.tar.gz
(中略)
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ pushd ..
~/src ~/src/gdk-pixbuf-2.24.1
dojomaster@slackware:~/src$ tar xzf ../pkg/tiff-3.9.6.tar.gz 
dojomaster@slackware:~/src$ cd tiff-3.9.6/
dojomaster@slackware:~/src/tiff-3.9.6$ ./configure && make
(中略)
dojomaster@slackware:~/src/tiff-3.9.6$ sudo make install
Password:
(中略)
dojomaster@slackware:~/src/tiff-3.9.6$ popd
~/src/gdk-pixbuf-2.24.1
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ ./configure && make
(中略)
checking for jpeg_destroy_decompress in -ljpeg... no
configure: WARNING: *** JPEG loader will not be built (JPEG library not found) ***
configure: error: 
*** Checks for JPEG loader failed. You can build without it by passing
*** --without-libjpeg to configure but some programs using GTK+ may
*** not work properly

libtiff を入れて gdk-pixbuf のコンパイルを再開しましたが、今度は libjpeg です。せっかくだから (以下略)

dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ wget -P ~/pkg http://www.ijg.org/files/jpegsrc.v8d.tar.gz
(中略)
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ cd ..
dojomaster@slackware:~/src$ tar xzf ../pkg/jpegsrc.v8d.tar.gz 
dojomaster@slackware:~/src$ cd jpeg-8d/
dojomaster@slackware:~/src/jpeg-8d$ ./configure && make 
(中略)
dojomaster@slackware:~/src/jpeg-8d$ sudo make install
Password:
(中略)
dojomaster@slackware:~/src/jpeg-8d$ cd ../gdk-pixbuf-2.24.1/
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ ./configure && make
(中略)
dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ sudo make install
(以下略)

では GTK+ に戻ります。

dojomaster@slackware:~/src/gdk-pixbuf-2.24.1$ cd ../gtk+-2.24.10/
dojomaster@slackware:~/src/gtk+-2.24.10$ ./configure && make
(中略)
checking for BASE_DEPENDENCIES... no
configure: error: Package requirements (glib-2.0 >= 2.27.3    atk >= 1.29.2    pango >= 1.20    cairo >= 1.6    gdk-pixbuf-2.0 >= 2.21.0) were not met:

No package 'atk' found
(以下略)

うーん。やっぱり ATK が新しすぎたんだろうか…。でも ATK 1.x は GLib のバージョンが合わないし…。とりあえず、ATK 2.0 で試してみます:

dojomaster@slackware:~/src/gtk+-2.24.10$ wget -P ~/pkg http://ftp.gnome.org/pub/gnome/sources/atk/2.0/atk-2.0.1.tar.xz
(中略)
dojomaster@slackware:~/src/gtk+-2.24.10$ cd ..
dojomaster@slackware:~/src$ tar xJf ../pkg/atk-2.0.1.tar.xz
dojomaster@slackware:~/src$ cd atk-2.0.1/
dojomaster@slackware:~/src/atk-2.0.1$ ./configure && make
(中略)
dojomaster@slackware:~/src/atk-2.0.1$ sudo make install
(中略)
dojomaster@slackware:~/src/atk-2.0.1$ cd ../gtk+-2.24.10/
dojomaster@slackware:~/src/gtk+-2.24.10$ ./configure && make 
(中略)
checking Pango flags... configure: error: 
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.

お! ATK はクリアできたみたいですね。またしても Pango が問題になってますが、どうも Cairo -> Pango という順番でコンパイルしないといけなかったみたいです。やーねー。

dojomaster@slackware:~/src/gtk+-2.24.10$ pushd ../pango-1.28.4/
~/src/pango-1.28.4 ~/src/gtk+-2.24.10
dojomaster@slackware:~/src/pango-1.28.4$ make clean
(中略)
dojomaster@slackware:~/src/pango-1.28.4$ ./configure      
(中略)
configuration:
        backends: Cairo Xft FreeType X
dojomaster@slackware:~/src/pango-1.28.4$ make
(中略)
dojomaster@slackware:~/src/pango-1.28.4$ sudo make install
(中略)
dojomaster@slackware:~/src/pango-1.28.4$ popd
~/src/gtk+-2.24.10
dojomaster@slackware:~/src/gtk+-2.24.10$ ./configure && make
(中略)
./gtk-update-icon-cache: error while loading shared libraries: libgdk_pixbuf-2.0.so.0: cannot open shared object file: No such file or directory
make[2]: *** [gtkbuiltincache.h] Error 127
make[2]: Leaving directory `/home/dojomaster/src/gtk+-2.24.10/gtk'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dojomaster/src/gtk+-2.24.10'
make: *** [all] Error 2

Cairo 対応の Pango を叩き込んで、GTK+ のビルドに戻りました。が、libgdk_pixbuf-2.0.so.0 が見付からないらしいです。そんなバカな…。

dojomaster@slackware:~/src/gtk+-2.24.10$ locate -r '^/usr/.*/libgdk_pixbuf-2.0.so.0'
/usr/local/lib/libgdk_pixbuf-2.0.so.0
/usr/local/lib/libgdk_pixbuf-2.0.so.0.2400.1

ちゃんとありますよ。もう、しっかりして下さいよ! ldconfig を使って確認すると:

dojomaster@slackware:~/src/gtk+-2.24.10$ /sbin/ldconfig -p | grep gdk_pixbuf
dojomaster@slackware:~/src/gtk+-2.24.10$ sudo /sbin/ldconfig 
dojomaster@slackware:~/src/gtk+-2.24.10$ /sbin/ldconfig -p | grep gdk_pixbuf
        libgdk_pixbuf-2.0.so.0 (libc6) => /usr/local/lib/libgdk_pixbuf-2.0.so.0
        libgdk_pixbuf-2.0.so (libc6) => /usr/local/lib/libgdk_pixbuf-2.0.so

なんでやねん…。ともかく、気を取りなおしてガンガンいきます!

dojomaster@slackware:~/src/gtk+-2.24.10$ make
(中略)
dojomaster@slackware:~/src/gtk+-2.24.10$ sudo make install
(以下略)

やーっと入りました。やっぱ GTK+ は大物でした。大変ですが、リッチな GUI エクスペリエンスのために必要なのです。剥き出しの Xlib を操る漢どもには無用の長物ですが…。

では次回、Xfce をインストールします!

(コウヅ)


比較サイト

第11課 Gnome!?

さあ! いよいよ Gnome です! と、その前に、前回 startx した時に xclock が自動起動して気付きましたが、時計がおかしい! 直します:

dojomaster@slackware:~$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
Password:
dojomaster@slackware:~$ sudo date '02271704'
Mon Feb 27 17:04:00 JST 2012

ok. /etc/lilo.conf も直しましょう。毎回カーネルを選ぶ画面で 2 分止まって、挙句画面解像度の選択画面で 30 秒止まるのはおかしい!

--- lilo.conf.orig      2012-02-27 17:06:32.998002858 +0900
+++ lilo.conf   2012-02-27 17:09:37.759001042 +0900
@@ -31,12 +31,12 @@
 prompt
 # Timeout before the first entry boots.
 # This is given in tenths of a second, so 600 for every minute:
-timeout = 1200
+timeout = 50
 # Override dangerous defaults that rewrite the partition table:
 change-rules
   reset
 # Normal VGA console
-vga = normal
+#vga = normal
 # Ask for video mode at boot (time out to normal in 30s)
 #vga = ask
 # VESA framebuffer console @ 1024x768x64k
@@ -57,6 +57,8 @@
 #vga=784
 # VESA framebuffer console @ 640x480x256
 #vga=769
+# VESA framebuffer console @ 1024x768x1677k
+vga=792
 # End LILO global section
 # Linux bootable partition config begins
 image = /boot/vmlinuz
dojomaster@slackware:/etc$ sudo /sbin/lilo
Warning: LBA32 addressing assumed
Added Linux *
One warning was issued.

これでばっちしだね! ちなみに、”/etc/lilo.conf” の “vga=792” の “792” ってどこから出て来た!?これは前回出てきた “318 1024x768x24 VESA” の318 (16進数) を 10 進数に直すと 792、になります。16^2*3+16^1*1+16^0*8=792 です! 2、3 秒考えて “あー、本当だ” と思えたら、立派なギークです! こう書きかえると分かりやすいです:2^8*3+2^4*1+2^0*8=792.

さあ、ともあれ Gnome! 公式サイトにアクセスすると、おや?何か、”金くれ” というメッセージがページの上端に表示されます…。どうしちゃったんでしょうか、まるで Wikipedia です…。募金額は $20,000、Wikipedia に比べればかわいいもんですが、こんなに大々的に募金しないと、もはや維持できないんでしょうか、このプロジェクトは。なんかがっかりです…。がっかりだよ!

別に募金は悪くないと思います。僕もいくつかのオープンソースプロジェクトにお小遣いをあげたことがあります。でもそれは、催促されたからやったわけではありません。”いいね!” と思って自発的にやったんです。なのに…! Gnome のやつ…! 許さない!

何故か怒り狂った挙句 Gnome を憎み始めてしまった! 一体どうなる!?次回、乞うご期待!

(コウヅ)



ペット