第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 をインストールします!

(コウヅ)


比較サイト

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中