Ref: Fedora Core 1 で ATOK を使う方法
Ref: Linuxビボ〜ろく 2003-12-29
Fedora Core へ ATOK X をインストールしてみました。Redhat版をrpmコマンドでインストールしたあとに、/usr/lib/im/locale/ja/atokserver/atokx_client を編集して環境変数の設定をしたり、xwnmoやkinput2やskkなど他のIMの設定をはずした方が良いようです。
環境変数の設定としては、次を追加しておきます。
LANG=”ja_JP.eucJP”
/usr/X11R6/bin/xrdb -m コマンドを使っている行があるので、その直下に次の行を挿入しておくと、画面左下に表示されるATOKの窓が非表示となり使いやすくなります。
(/etc/X11/xinit/xinitrc.d/xinput)
XIMの設定を変更します。対象部分を抜粋しています。
# if [ -e /usr/X11R6/bin/xwnmo ]; then
# XIM=”_XWNMO”
# elif [ -e /usr/X11R6/bin/kinput2 ]; then
# XIM=”kinput2″
if [ -x /usr/lib/im/locale/ja/atokserver/atokx_client ] ; then
XIM=”htt”
elif [ -e /usr/X11R6/bin/kinput2 ] ; then
XIM=”kinput2″
# elif [ -e /usr/X11R6/bin/skkinput ]; then
# XIM=”skkinput”
fi
XIMPROGRAMの設定を変更します。対象部分を抜粋しています。
# XIM_PROGRAM=kinput2
# if [ X”`ldd /usr/X11R6/bin/kinput2 | grep libcanna`” = X ] ; then
# XIM_ARGS=”-wnnenvrc /etc/FreeWnn/ja/wnnenvrc”
# else
# XIM_ARGS=”-canna”
# fi
# ;;
# skkinput)
# XIM_PROGRAM=skkinput
# XIM_ARGS=”” ;;
# *)
# XIM_PROGRAM=/bin/true ;;
htt)
. /usr/lib/im/locale/ja/atokserver/atokx_client
XIM_PROGRAM=/bin/true
;;
*)
esac
fi
;;
以上で、/usr/lib/im/locale/ja/atokserver/atokx_client, /etc/X11/xinit/xinitrc.d/xinput の編集に関してはおしまいです。
この他に、 OpenOffice を使う場合に、ATOKで日本語変換をしたい場合は環境変数USE_XOPENIMを設定しておきます。この環境変数は $HOME/.bash_profile に記述しておくのが良いでしょう。
実は、JUSTSYSTEMのFAQページにもやりかたが書いてありました。そちらを参考にしてもいいかもしれません。
http://faq.justsystem.co.jp/faq/1003/app/jsfaq.jsp?22055+0126
/usr/X11R6/lib/libXi.so.6を使えばいいというのは、どうやってわかるかというと、設定しないで動かすと、次のようなエラーメッセージがでるようです。これからXListInputDevicesという関数が呼び出せていないことがわかります。
jp.co.justsystem.atok12.AtokPaletteAux: relocation error: /usr/lib/libgdk-1.2.so.0: undefined symbol: XListInputDevices
jp.co.justsystem.atok12.SystemLineAux: relocation error: /usr/lib/libgdk-1.2.so.0: undefined symbol: XListInputDevices
jp.co.justsystem.atok12.LookupAux: relocation error: /usr/lib/libgdk-1.2.so.0: undefined symbol: XListInputDevices
このXListInputDevicesというのがどのライブラリにあるのかを探してみると、/usr/X11R6/libXi.so.6にあることがわかるらしいのですが、方法はよくわかりませんでした。lddコマンドを使って、昔のRedhatと、今使っているFedora Core における libgdk-1.2.so.0 にリンクされているライブラリを比較するとわかるのではないか、という感じです。実際に比較してみると、Redhat Linux 8 は次のようになります。
libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 (0x4004c000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x4004f000)
libdl.so.2 => /lib/libdl.so.2 (0x40074000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40079000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40081000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4008f000)
libm.so.6 => /lib/i686/libm.so.6 (0x4016e000)
libc.so.6 => /lib/i686/libc.so.6 (0x40190000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
一方のFedora Core 1 は次のようになり、かなり数がちがうことに気付くはずです。このことから、/usr/X11R6/libXi.so.6から順にLD_PRELOAD環境変数を使ってあらかじめロードすることを試してみれば、どれが必要なのかわかるはずです。
libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 (0x00de9000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x00101000)
libc.so.6 => /lib/tls/libc.so.6 (0x00a01000)
libdl.so.2 => /lib/libdl.so.2 (0x00b60000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x009e9000)
XのソースコードやMakefileなどを見ればわかると思うのですが、どうすれば良いかちょっとわかりませんでした。/usr/include/X11/にはヘッダファイルがあるので、XListInputDevicesがXInput.hで宣言されているところまではわかるのですが、XFree86-develはインストールしてあるのですが、どこにソースコードがあるのかよくわからず、これをインクルードしているソースファイルがどれか、提供しているライブラリはどれか、といったことを特定することができませんでした。とりあえず、rpmコマンドでみてみるとソースコードまではインストールされていませんでした。これをインストールしないといけないということになるのでしょうか。
lddを使って比較する方法でなんとかできますが、比較対象がないときは困ってしまいます。これだけのために環境を用意するわけにもいきませんから…