関連記事。
GTK+を自力でインストールしてみよう① GTK+インストールガイドの翻訳
GTK+を自力でインストールしてみよう② GlibのINSTALL翻訳
GTK+を自力でインストールしてみよう③ PangoのINSTALL翻訳
GTK+を自力でインストールしてみよう④ ATKとgdk-pixbufの翻訳
LubuntuにGTK+3をインストールする方法についてだが、
パッケージマネージャーや、apt-get等を利用するのがとても簡単。
しかし、その場合は最新版が手に入るとは限らない。
そこで、現在の最新版であるGTK+ 3.16を公式サイトからダウンロードして導入してみることにした。
最初はダウンロードしたファイルをテキトーに解凍してビルドしてインストールしてみようとしたのだが、あちこちでエラー頻発。しまいには余計なことまでしてLubuntuをインストールし直すハメに・・・・
そんなわけで、ちゃんとインストールガイドを読んだうえで再チャレンジすることにした。
ちゃんと説明書は読まなきゃダメだね~
結果としては(ほぼ)最新版を導入することに成功。
と、いうのもgobjectだけはうまく行かず、今のところ私では解決できそうになかったので、パッケージマネージャーを利用したため。
それ以外のものは標準ディレクトリにインストールすることができた。
今のところ動作に問題はなさそうだ。
やったことは以下の通り。
○基本のコマンド
基本的には端末から解凍したパッケージのディレクトリに入り、
./configureを実行後、makeしてsudo make installが基本。以下は標準ではない/opt/gtkにインストールする場合を想定して説明している。
1.pkg-config の環境変数設定(標準ディレクトリ以外にインストールする場合)
検索パスの追加
export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig
インクルードファイルの検索設定
CPPFLAGS="-I/opt/gtk/include"
LDFLAGS="-L/opt/gtk/lib"
PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
ライブラリの検索設定
LD_LIBRARY_PATH="/opt/gtk/lib"
PATH="/opt/gtk/bin:$PATH"
export LD_LIBRARY_PATH PATH
2.端末を使って移動
cd /Download/xxxx
3.パッケージの解凍(拡張子に応じて)
tar xvfj xxxx..tar.bz2
または
tar xvfJ xxxxx.tar.xz
4.解凍してできたディレクトリに移動
cd xxxx
./configure
※標準ディレクトリ以外なら
./configure --prefix=/opt/gtkのようにする。
make
sudo make install
(ldconfig プログラム構成の更新。標準ディレクトリにインストールしている場合のみ?)
○コマンドについて補足
他に関連するコマンドとして。
インストールのチェック
make installcheck
ソースコードディレクトリからプログラムバイナリおよびオブジェクトファイルを削除
make clean
インストールされたファイルを削除
make uninstall
ちなみに、環境変数を設定するexportコマンドはオプションをつけることができる。
export -n 設定した環境変数の削除
export -p 環境変数の表示
また、printenvコマンドでも環境変数を表示可能。
細かいところはこちらを参照
【 export 】 変数を大域変数として追加する【 printenv 】 環境変数を表示するLinux入門 » Linuxコマンド集 » システム
環境変数を設定するには export - 環境変数を定義・リスト表示する - Linuxコマンド
pkg-configでちゃんと引数が返ってくるかテスト(glib-2.0.pcを参照)。
pkg-config glib-2.0 --cflags --libs
単純にこのコマンドを打ち込むと、標準ディレクトリにインストールされたglib-2.0.pcに反応してしまう。こいつを改変してもいいのだけれど、一応古いGTKも残しておきたいので、このままにしておく。
新しくインストールした方を利用するためには、
export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig
を先に実行しておくこと。
このままでは少々使い辛いが、当面はこれで。
○事前に用意すること。
端末やパッケージマネージャーを利用して必要なものを探しておく。
最新版でなくてもよいのなら、サイトから直接ダウンロードしなくてもほとんど集めることができた。
GTK以外のものは最新版でなくても妥協するとしよう。
解凍用
ビルド用
- autoconf
- automake
- libtool
依存するツール、ライブラリ
- gcc
- pkg-config
- (GNU make(gmake)) だだのmakeで代用可。エラーが出たら検討。
- libjpeg-dev
- libpng12-dev
- libtiff5-dev
- freetype2-demos
そのほかにエラーの原因となったため、先に導入した方がよさそうなものは
GLib
Pango
GTK+
- libXi-devel
- libatk-bridge2.0-dev
※GTK+本体はインストール順に注意。後述。
gobject
○インストールの手順
ライブラリの順番がインストールガイドで指定されているので以下の順で行うことにした。
GLib、 Pango、 ATK,、GTK+
Gdk-Pixbuf、GObject-Introspectionの順番は不明。GTK+の前あたりでOK?
GTK+は同じディレクトリに以下のものがインストールされている必要があるらしいのでその点も注意。
- GLib 2.43.4以上
- Cairo 1.14.0以上
- Pango 1.36.7以上
- GdkPixbuf 2.30.0以上
- ATK 2.15.1以上
インストール先は特に指定しない場合、勝手に標準ディレクトリにインストールされるようだが、管理がしづらいので自分でディレクトリを指定することにした。
この場合、環境変数の設定や、引数が必要になる。
インストールガイドに書いてあるのを参考に/opt/gtkにインストール。
それと、/usr/include/glib-2.0の無効化をしておいた。
といっても、でリネームしてでバックアップしただけ。
/usr/include$ sudo mv glib-2.0 glib-2.0_BU
これで古いバージョンのヘッダが参照されてもエラーになってわかるはず。
以上のライブラリ等をそろえたうえでビルドしてインストールを行ったところ、
GLib、 Pango、 ATK,、 Gdk-Pixbufについては所々で警告を出しつつも成功。
まずconfigureで出てきたエラーは
configure: error: *** XInput2 extension not found. Check 'config.log' for more details.
このエラーについて検索した結果、ここを参考にした。
こちらを参考に。libXi-devを追加したらOKだった。
続いてのエラーは
configure: error: Package requirements (atk atk-bridge-2.0) were not met:
を参考にして、libatk-bridge2.0-devを導入。
これでconfigureを行うと、最後に
GTK+ 3.16.4
===========
GDK backends: x11
X11 extensions: XKB XI2.2 XFIXES
Print backends: file lpr
Dynamic modules: yes
Included immodules: none
colord support: no
libcanberra support: no
Introspection: no
Debugging: minimum
Documentation: no
と表示され、ようやく通る。
あとはインストールしても特にエラーはなかった。
そしてgobject
configureでflexが見つからないエラー。
さらにbisonの見つからないエラー。
おまけにPythonのヘッダファイルのエラー。Python-all-devを導入してOK
make してみると、cairoに関する一時ファイルらしきものにアクセスしてた模様。もしかして先にインストールすればcairoいらなかった?
問題はmake install時の以下のエラー
`GLib-2.0.gir' に必要なターゲット `/usr/include/glib-2.0/glib/*.h' を make するルールがありません. 中止.
環境変数を指定しているのに、なぜ標準ディレクトリを探しているのか謎。
原因っぽいのを解説してるのは
の記事。
これによると、今までconfigureは引数で--prefix=/opt/gtkとしているため、includeファイルもそちらにあるはずなのに、引数を付けなかった場合のデフォルトのインストール先である/usr/include/
を読みに行っているためとのこと。バグらしい。確かに、バックアップ用に名前を変えてあるので、エラーになるのは納得。環境変数も指定しているんだけど、ダメらしい。
congigureの引数で参考になりそうなのが
-with-glib-src=PATH
でありこのPATHはglibのあるパスだそう。でも、今回はヘッダファイルなんだよね。
仕方がないので、標準ディレクトリにインストールすることにした。
上記の方法をすべてやり直し、再びgobject。
しかし、makeの時点でglib-autocleanups.hに関するエラーが・・・
この原因が調べてもいまいちハッキリせず。
仕方がないので、このobject-introspectionはパッケージマネージャーからの導入となった。