IBus/IBus-Anthyのその後(2009/6/12現在)
しばらくぶりにIBus/IBus-Anthyを試してみた。今回はMandriva Linux 2010.0(開発版)向けのソースRPMパッケージ*1からビルドしてみた。作業はMandriva Linux 2009.0上*2で行った。
- 本体のビルドエラー
- IBusデーモンの起動
- 本体(20090609版)の設定項目
- IBus-Anthy(20090603版)の設定項目
- かな入力
- 関連:Fedora 11とIBus
- 関連:特殊なインストール先でのGTK+ 2 immoduleのテスト
本体のビルドエラー
本体のビルドに失敗した。make[3]: Entering directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609/src' /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -DG_LOG_DOMAIN=\"IBUS\" -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -MT libibus_la-ibusshare.lo -MD -MP -MF .deps/libibus_la-ibusshare.Tpo -c -o libibus_la-ibusshare.lo `test -f 'ibusshare.c' || echo './'`ibusshare.c ../libtool: line 845: X--tag=CC: command not found ../libtool: line 878: libtool: ignoring unknown tag : command not found ../libtool: line 845: X--mode=compile: command not found (中略) ../libtool: line 1214: libtool: compile: cannot determine name of library object from `': command not found make[3]: *** [libibus_la-ibusshare.lo] Error 1 make[3]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609' make: *** [all] Error 2
どうもこれはMandriva Linuxの.specファイルが実行しているautogen.shから実行されるlibtoolizeが問題を起こしているように見えたのでautogen.sh内のlibtoolizeの実行部分のみコメントにするようにした。
今度は
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -DG_LOG_DOMAIN=\"IBUS\" -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -MT libibus_la-ibuscomponent.lo -MD -MP -MF .deps/libibus_la-ibuscomponent.Tpo -c ibuscomponent.c -fPIC -DPIC -o .libs/libibus_la-ibuscomponent.o ibuscomponent.c: In function ‘ibus_component_stop’: ibuscomponent.c:709: error: ‘SIGTERM’ undeclared (first use in this function) ibuscomponent.c:709: error: (Each undeclared identifier is reported only once ibuscomponent.c:709: error: for each function it appears in.) make[3]: *** [libibus_la-ibuscomponent.lo] Error 1 make[3]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/mandrake/rpm/BUILD/ibus-1.1.0.20090609' make: *** [all] Error 2
となったが、SIGTERMは(広い意味での)UNIX系OSにおける(プロセスに送られる)シグナルの1つで
[引用]ファイル名: /usr/include/bits/signum.h より
#define SIGTERM 15 /* Termination (ANSI). */
のように数字に展開される。これに関するヘッダファイルを取り込んでいないようなのでibus-1.1.0.20090609/src/ibuscomponent.cの先頭の「#include」の行があるところに「#include <signal.h>」を追加するようにしたところ、ビルドは通り、インストールができるようになった。
ここまでにおいて.specファイルに行った修正は下のようになった。
--- ibus.spec.orig +++ ibus.spec @@ -69,6 +69,8 @@ %if %mdkversion < 200900 export PKG_CONFIG_PATH=%_libdir/pkgconfig:%qt4lib/pkgconfig %endif +%{__sed} -i 's:libtoolize:#:' autogen.sh +%{__sed} -i 's:\(#include <glib/gstdio.h>\):#include <signal.h>\n\1:' src/ibuscomponent.c ./autogen.sh %configure2_5x --enable-qt4-immodule \ --disable-dbus-python-check --disable-iso-codes-check
後は作成したRPMパッケージをインストールするだけ。下は作業例なので、出力先やファイル名の一部は異なる場合がある。
$ sudo urpmi [RPM出力先]/x86_64/ibus{,-gtk,-qt4}-1.1.0.20090609-1kkr2009.0.x86_64.rpm $ sudo urpmi [RPM出力先]/x86_64/ibus-anthy-1.1.0.20090603-1kkr2009.0.x86_64.rpm
IBusデーモンの起動
IBusのデーモンを起動するにはibus-daemonに--xim --daemonizeオプションを付けて実行する。この処理をログイン時に実行されるスクリプトの中に含める。ファイル名: ~/.xprofile など
ibus-daemon --xim --daemonize
もし手動で/opt/ibus/のような場所をconfigureスクリプトの--prefix=オプションで指定して入れた場合、Pythonのパッケージ(モジュール群)「ibus」が読み込める場所になく正常に動作しないので、環境変数PYTHONPATHにsite-packagesディレクトリの場所を指定することになる。
ファイル名: ~/.xprofile など
PYTHONPATH=$(echo /opt/ibus/lib/python*/site-packages) /opt/ibus/bin/ibus-daemon --xim --daemonize
XIMとして使用するための準備としてはこの他に「ibus-anthyを試してみる(2008/9/9現在)」でも書いた環境変数XMODIFIERSの設定があるが、以前と同じなのでここでは書かない。
本体(20090609版)の設定項目
以前と設定ツールのインターフェースは随分変わった印象を受ける。「一般」タブ
- キーボードショートカット
- 有効/無効の切り替え [キーボードショートカットのリスト]
- 次の入力メソッド [キーボードショートカットのリスト]
- 前の入力メソッド [キーボードショートカットのリスト]
- フォントとスタイル
- 候補の並ぶ向き(横並びか縦並び) [リストから1つ選択]
- 言語バー(パネル)の表示条件 [リストから1つ選択]
- 入力メソッド名を言語バーに表示するかどうか [チェック]
- 候補一覧のカスタムフォント [チェック時にフォントを選択]
「インプットメソッド」タブ
入力メソッドのタブでは「日本語 - Anthy」を入力メソッド選択のリストから選んで「追加」ボタンを押す。他にエンジンを入れていないのでこれだけ。IBus-Anthy(20090603版)の設定項目
「全般」タブ
入力モードや幾つかの挙動に関する設定が行えるようになっている他、キーの割り当てもできるようにはなっているが、入力履歴に基づく予測入力についてはまだサポートされていない。「キー割当」タブ
多くのIBus-Anthy固有のキー割り当てが設定できる。かな入力
非常に残念なことに、かな入力時に「ー」のキーを押すと「ろ」が入力されるようになってしまっている。以前、早い段階からこの部分がきちんと処理されるようになっていて、期待が持てていただけに、残念。関連:Fedora 11とIBus
Fedoraのバージョン11がIBusを標準の入力メソッドに採用したようだが、まだ既存のSCIMやuimといった入力メソッドよりも機能が低いため、日本人ユーザがSCIMかuimに逃げるという現象が幸い、両方ともパッケージは用意されているのが確認できるので、パッケージ名「scim-anthy」や「uim-anthy」などをパッケージマネージャかyumからインストールするということになるものと思われる(実際にFedora上での確認はしていないため、間違っている部分があるかもしれない)。
関連:特殊なインストール先でのGTK+ 2 immoduleのテスト
Mandriva Linux 2010.0のソースRPMパッケージを試す前に一度/opt/ibus/という場所に手動でインストールしてみたのだが、そのとき、GTK+ 2のimmoduleのディレクトリは特殊な方法で指定することになった。ただ、本来は本体のconfigureスクリプトで--prefix=/usrのようにGTK+のインストール先と同じインストール先接頭辞を指定するか、--with-gtk-im-module-dir=[ディレクトリ]で直接モジュールのディレクトリを指定することになる。まずは
[任意]ファイル名: immodules.txt
"/opt/ibus/lib64/gtk-2.0/2.10.0/immodules/im-ibus.so" "ibus" "IBus (Intelligent Input Bus)" "ibus" "/opt/ibus/share/locale" "ja:ko:zh"
このようなファイル*3を作成してから環境変数GTK_IM_MODULE_FILEにこのファイルの場所を指定してGTK+ 2の適当なアプリケーションを起動する。
$ GTK_IM_MODULE_FILE=[immodules.txtの場所] gedit &
その上でテキストが入力できる場所でコンテキストメニューを開いて入力メソッドの一覧から選択し、Ctrl+SPACEなどの有効/無効の切り替えのキーを押すと日本語が入力できるようになる。
なお、実際には(ディストリのパッケージの場合など)本体のインストール後にupdate-gtk-immodulesによって/etc/gtk-2.0/以下のimmodulesファイルを自動的に更新することになる。今回使用したソースRPMパッケージでも
[引用] ファイル名: ibus.spec より
%post gtk gtk-query-immodules-2.0 > %{_sysconfdir}/gtk-2.0/gtk.immodules.%_lib %postun gtk gtk-query-immodules-2.0 > %{_sysconfdir}/gtk-2.0/gtk.immodules.%_lib
このようにインストール/アンインストール後にこのファイルを更新するようになっている。
使用したバージョン: