2015-02-28

ibus-anthyの設定が保存されない 問題解決

前回のibus-anthyの設定が保存されない問題の原因がわかりました。

まずは正常に動作していたLinux Mint17.1mateのタスクマネージャで実行しているプロセスを確認してみると、ibus-dconfが起動していました。
Void Linuxでも同じものがインストールされていたのですが、ibusを起動させてもibus-dconfが起動していなかった。
これが起動していないとibus-anthyの設定を変更してもdconfのdbへ書き込みを行わないようです。
(ibus本体の設定はibus-dconfが起動していないくても設定は保存されます)

Void Linuxでは代わりにibus-memconfが起動している。
ibus-dconfとibus-memconfは同時には起動出来ず、特に指定しないとmemconfの方が優先されるらしい。

ibus-daemonのマニュアルを見ると、起動時にコンフィグプログラムを指定するオプションがあるのを見つけました。
これで指定すればibus-dconfを起動できるのではないかと思い、ターミナルでコマンド実行。

$ ibus-daemon --config=/usr/libexec/ibus-dconf -drx

で起動。
タスクマネージャでibus-dconfが起動したのを確認。

dconfのユーザーdbへの書き込みは、dconf watch /desktop/ibus/ で状態を監視して書き込まれたかを確認します。

ibus-anthyでの設定を変更し設定を保存すると監視していたPATHが更新されて設定値がdbへ保存された事が確認できました。

2015-02-27

ibus-anthyの設定が保存できない

XBPSパッケージを作成してインストールしたibus-anthyの設定が保存されないことに気づいた。
たまに日本語入力を使うが、xbpsパッケージの作成などでは日本語入力は使わないので気づかなかった。

他のディストリビューションでibusとibus-anthyをインストールして確認してみるとdconfのユーザーDBに設定が書き込まれているが、Void Linuxではエンジンの設定が書き込まれない。
ibusのdconf用のデータが違うのかと思い両ディストリビューションで確認してみても初期設定値にエンジンのPATHが書かれていないのでこれが原因じゃないっぽい。

ibus-anthyの設定はPythonのスクリプトなので、何か足りないものがあるのか?
と思って別のディストリのibus-anthyパッケージの依存リストみてもpythonの基本パッケージを要求しているだけでそれ以外のPythonがらみのパッケージはなかった。

ibusかibus-anthyのビルドオプションが悪いのか?


2015-02-17

xbps-srcでパッケージを作成する

Void LinuxにはXBPSパッケージを作成するための環境、void-packagesというのがある。
これを使うと、メインのルートファイルシステムにアレコレ開発用パッケージをインストールすること無くパッケージの作成ができるので便利。

詳しい利用方法はコチラ。
https://github.com/voidlinux/void-packages

ソースコードからパッケージをビルドするにはテンプレートファイルを作成する必要があるし、シェルスクリプトの知識がある程度ないとファイルが読めないのでちょっと大変だけど。

試行錯誤しながらなんとかibus-anthy、atnthy、kasumiのパッケージ作成に成功。
それをインストールしてVoid Linuxでなんとか日本語入力が出来るようになった。

細かい作り方は面倒なのでとりあえずパッケージ作成に成功したテンプレートファイルの内容を置いておく。

# Template file for 'anthy'

pkgname="anthy"
version="9100h"
revision=1
build_style=gnu-configure
short_desc="Input method for Japanese"
maintainer="mail@address"
license="GPL-2.1"
homepage="https://packages.debian.org/source/wheezy/anthy"
distfiles="${DEBIAN_SITE}/main/a/anthy/${pkgname}_${version}.orig.tar.gz"
checksum="d256f075f018b4a3cb0d165ed6151fda4ba7db1621727e0eb54569b6e2275547"
configure_args="--prefix=/usr --sysconfdir=/etc"
hostmakedepends="make gcc"
lib32disabled="yes"

post_install() {
ldconfig
}


# Template file for 'ibus-anthy'

pkgname="ibus-anthy"
version="1.5.4"
revision=1
build_style=gnu-configure
#configure_script="autogen.sh"
short_desc="Intelligent Input Bus Anthy Plugin"
license="LGPL-2.1"
homepage="https://ibus.googlecode.com"
distfiles="https://ibus.googlecode.com/files/${pkgname}-${version}.tar.gz"
checksum="4c0a8b88a2c547e72173a7d682d82797f6c65fe712abe5f3b89495d4eec7b031"
configure_args="--prefix=/usr --sysconfdir=/etc"
hostmakedepends="make gcc intltool pkg-config 
python>=2.5 gobject-introspection python-gobject-devel perl>=5.8.1"
makedepends="anthy ibus>=1.5.0"
depends="ibus>=1.5.0 anthy hicolor-icon-theme"
lib32disabled="yes"

post_install() {
ldconfig
}


# Template file for 'kasumi'

pkgname="kasumi"
version="2.5"
revision=1
license="GPL-2"
short_desc="Anthy User dictionary tool"
maintainer="mail@address"
build_style=gnu-configure
homepage="http://kasumi.sourceforge.jp"
distfiles="${DEBIAN_SITE}/main/k/kasumi/${pkgname}_${version}.orig.tar.gz"
checksum="f21841ac9991e365abdb515e2c2a1ec9be5914fe8562f01e8571264ceb2528de"
configure_args="--prefix=/usr --sysconfdir=/etc"
hostmakedepends="make gcc-c++ pkg-config gtk+-devel anthy"
depends="anthy"

2015-02-14

ロケールのファイルが無い

いままでLANG=ja_JP.UTF-8やっとけばロケールの変更が出来るのだと思っていたのですが、ロケールのファイルが無いとほとんど意味が無いという事に気づいた。
コマンド打つとたまにそんなロケールないっすよ的なメッセージが表示されるのでなんでだろうとは思っていたのですけど。

locale -a で表示されるリストに日本のロケールが無いとダメ。

Void Linuxでそのコマンドを打ってみると、

$ locale -a

実行結果
C
POSIX
en_US.utf8

しか無い。

無いのでロケールのファイルを作成してみる。

# localedef -f UTF-8 -i ja_JP /usr/lib/locale/ja_JP.utf8

作成後に再度locale -aを実行してみる。

実行結果
C
POSIX
en_US.utf8
ja_JP.utf8

これでLANG=ja_JP.UTF-8にしておけば日本語化されるところはちゃんとされるようになった。

2015-02-13

GNOMEが起動出来ない

Void LinuxでGNOME3.14をインストールしたのだけど、dbusを起動させてgnome-sessionでstartxsしてもエラーが出て起動出来ず。


gnome-sessionで起動出来ないのでgdmでグラフィカルログインすら試せない状態。


KDE、Cinnamon、MATE、LXDE、LXQT、Xfceは全てちゃんと起動できたけどGNOMEだけ無理っす。

2015-02-11

そういえばログファイルが増えていない

Void Linuxをいじり始めて1ヶ月くらい経つが、そういえばログファイルが全然増えていないような気がする。

調べてみるとロギングサービスがインストールされていない。
VMware上でいじっているし、動かなくなったらとりあえずスナップショットで前の状態に戻してしまうので気にしていなかったのですが、エラーの原因を調べる時に無いと困るのでロギングサービスをインストール。

socklogというのがrunitにも対応しているらしいのでインストールする。
# xbps-install -S socklog-void

通常ユーザでもログが見られるようにsocklogグループにユーザを追加する。
# usermod -aG socklog USERNAME

インストールが終わったらサービスを起動…
なんか2つあります。
nanoklogdとsocklogd-unix

どっちもサービス起動させます。
# ln -s /etc/sv/nanoklogd /var/service/
# ln -s /etc/sv/socklog-unix /var/service/

ちゃんとログがとれているか見てみる。
socklogは/var/log/socklog/*/currentにログを記録するようです。
*の部分がログの分類名になります。
いくつか開いて見てみるとちゃんと記録されているので大丈夫そう。

ちなみにログファイルのローテーションはsocklog自身が勝手にやってくれるのでcronとかでスケジュールする必要は無いそうです。

2015-02-10

Anthyの個人辞書管理ツールkasumiをインストールする

Anthyをインストールしたのですが、個人用の辞書ファイルを管理するツールが無い。
ibusのAnthy設定ではkasumiを使うようコマンドが登録されていますが一緒にインストールされるわけでは無いのでソースコードからコンパイルしてインストールします。

ソースコードはsourceforge.jpにあります。
http://kasumi.sourceforge.jp/index.php?FrontPage

ソースコードをダウンロードしたら展開
$ tar xvf kasumi-2.5.tar.gz

$ cd kasumi-2.5

必要なパッケージが無くてエラーが出たりするけど、その都度XBPSパッケージをインストールしながらコンパイル作業を続ける。

./configureを実行
$ ./configure --prefix=/usr --sysconfdir=/etc

$ make

$ su
PASSWORD

# make install


ibus-anthyの設定ウインドウを開く

メニューラベルの「辞書 - Anthy」のチェックを入れてibusを再起動。

Anthyを選択した際にメニューに辞書ツールの項目が追加されるのでそれぞれ選択して追加や編集を行えるようになりました。



2015-02-09

icewm起動時にibusを起動させる

ibusをウインドウマネージャを起動したらいちいち手動で起動させるのは面倒なのでicewm起動時にibusを起動できるようにする。

~/.icewmに移動する。ディレクトリはテーマやフォーカスの設定をメニューから変えていない場合は作成されていないはず。ない場合は適当にテーマを切り替えるか手動でディレクトリを作成する。

$ cd ~/.icewm

startupというシェルスクリプトのファイルをエディタで作成する。

$ nano startup

ファイルの内容
#!/bin/sh 
ibus-daemon -drx

ファイルを保存したらファイルに実行権限を付ける。

$ chmod +x startup

既にicewmを起動している場合は再起動させる。

2015-02-08

ibusのタスクトレイアイコンが正常に表示されない

Void Linuxで無事に日本語入力が出来るようになりました。

ibusをインストールしてデーモンを起動するとicewmのタスクトレイにアイコンが表示されるのですが、アイコンは正常に作成されているのにアイコンを読み込めないらしく、システムのアイコンが代用されてしまいます。

これだとAnthyがONなのかOFFなのかわからないのでアイコンを正常に読めるようにします。

$ su -
PASSWORD

# gtk-update-icon-cache -f /usr/share/icons/hicolor

これで指定したディレクトリにあるアイコンテーマのキャッシュが更新されます。
あとはibus-daemonを再起動させればちゃんとアイコンが表示されるようになります。

2015-02-07

Void Linuxで日本語入力③ 日本語入力出来ない問題

Anthyとibus、ibus-anthyのコンパイルに成功してibusもちゃんと起動できることが確認されたのですが、日本語入力が出来ない件。

他のIMを試そうとuimをコンパイルしてインストールしたら直った…
uimのコンパイル時に追加でインストールしたXBPSパッケージは無いのですが、どういうわけかテキストエディタを使っての動作確認でちゃんと日本語入力できるようになってしまいました。

直ったのならいいような気もしますが、なんか納得いきません。
仮想環境のスナップショットでインストール前の状態に戻してuimをインストールしないでなんとかならないものかと色々やってみた。
動作確認で使用したテキストエディタは
xfw(X)
leafpad (gtk2)
gedit (gtk3)

で、いきなり脱落するテキストエディタが…
xfwはそもそも日本語入力に対応していないっぽい。
Linux Mint 17.1にパッケージからインストールして使ってみたのですが、Void Linux同様に日本語入力が全く出来ませんでした。


ibus-daemon -drx で起動。キーボードやIMの切り替えの設定をひと通り行った状態。
これが前回の状態です。

GTK_IM_MODULE=ibus
XMODIFIERS=@im=ibus
QT_IM_MODULE=ibus
も設定済み。

leafpad …無反応。入力ウインドウ内で右クリックするとインプットメソッドを選択する項目があるけどリストに無い。
gedit …無反応。


gtkアプリケーションが利用するimmoduleというやつがあるらしい。
それのキャッシュファイルを各gtkアプリケーションが利用するのですが、そのファイルが作成されていないっぽい。
gtk2用は、
/usr/lib/gtk-2.0/2.10.0/immodules.cache
gtk3用は、
/usr/lib/gtk-3.0/3.0.0/immodules.cache
がそのファイルなのですが、両方共無い。

コマンドを実行してファイルを作成。
$ su -
PASSWORD

# gtk-query-immodules-2.0 --update-cache

# gtk-query-immodules-3.0 --update-cache

# exit

キャッシュファイルはテキストデータなので中身を確認し、ibusのimmoduleのライブラリがデータ内にあるのを確認。

ibus-daemonを再起動させてテキストエディタで確認。
leafpad …インプットメソッドのリストに追加されるも何故かibusがリストに無い。
gedit …無反応。


ibusの設定はdconfが使われているので設定を確認してみる。
dconfのデータベースはバイナリファイルなので専用のエディタをインストールして確認。
$su -
PASSWORD

# xbps-install -S dconf-editor

# exit

$ dconf-editor

ほぼUIで設定した項目がデータベースに登録されているだけなので特にいじってみる項目はなし。
GTKの設定もひと通り見てみるがこれと言った設定が無い。


お手上げでなのでOSを再起動させてみる。
そしたら日本語入力出来るようになりました…
ここまでで変わったことといえばimmoduleのキャッシュを更新しただけです。
そういえばキャッシュ更新してから一度もログアウトしてなかったような気がする。

GTK_IM_MODULE=ibus
の設定は~/.bashrcに書いているのでログインした時に環境変数が設定されますが、この時点ではまだimmoduleのキャッシュファイルがなかったのでibusのimmoduleが読み込めず使えなかったと思われます。
これがキャッシュ作成 → 再起動 → ログインでちゃんとモジュールが読み込めたので使えるようになったと。

2015-02-05

Void Linuxで日本語入力② ibusをコンパイルしてみる。

Void Linuxで日本語入力出来るようチャレンジその2
ibusをコンパイルしてみようと思います。

今回必要なXBPSパッケージは前回Anthyをインストールした時にmakeとgccをインストールしましたが、追加で以下のパッケージをインストールします。

ibusのソースコードとibus-anthyのソースコードは下記URLから入手します。
https://code.google.com/p/ibus/downloads/list

ibus-1.5.5.tar.gz
ibus-anthy-1.5.4.tar.gz

まずはibus本体からコンパイルします。

$ tar xvf ibus-1.5.5.tar.gz

$ cd ibus-1.5.5

$ ./configure --prefix=/usr --sysconfdir=/etc --enable-python-library

./configure実行時に足りないものが色々出てエラーが出るのでその都度パッケージをインストールしてconfigureを完了させます。

あとはmakeとmake installを実行してコンパイルとインストールを完了させます。
$ make

$ su
PASSWORD

# make install

# exit

$ cd ..

次はibus-anthyをコンパイルします。
$ tar xvf ibus-anthy-1.5.4.tar.gz

$ cd ibus-anthy-1.5.4

$ ./configure --prefix=/usr --sysconfdir=/etc 

$ make

$ su
PASSWORD

# make install

最後にldconfigを実行してライブラリの情報を更新しておく。

# ldconfig

# exit

これで必要と思われるものは用意出来た(と思う)のでibusを起動してみる。
$ ibus-setup

GUIでちょろっとメッセージや起動させるための設定についてのウインドウが表示されるのでそれに従って~/.bashrcに設定していく。

設定ウインドウ表示後、
インプットメソッドにJapaneseキーボードとAnthyを登録。
ibusの設定でシステムキーボードレイアウトを利用するにチェックを入れる。
インプットメソッドの切り替えを好みに合わせて設定。

基本的な設定を行ったらちゃんと入力出来るか試してみると…


こんな感じで変換前の文字は表示されるのですが、確定させても入力エリアに確定文字が入力されない…
(使用したテキストエディタはxfw)
また、他のテキストエディタのleafpadやgeditでも試したのですが、確定前の日本語文字すら出ずインプットメソッドすら

まだ完全に使えませんがとりあえず今回のコンパイルするという目的は達成したので良しとします。

2015-02-04

Void Linuxで日本語入力① Anthyをコンパイルしてみる。

Void Linuxで日本語入力が出来るようにしたい…
いまのところインプットメソッドはibusとfcitxがパッケージリストにありますが、かな漢字変換エンジンがないので日本語入力は出来ません。
また、変換エンジン用のモジュールも無いようなので結局自力でソースコードからコンパイルしないと日本語入力をするにはたぶん使えません。

無いものはソースコードを入手して自力でコンパイルするしかないので出来るかわからないがとりあえずチャレンジ。

変換精度は全然ダメですが、一番簡単そうなのがAnthyみたいなのでAnthyのソースコードを入手してコンパイルしてみます。

今回は一般ユーザーメインで作業します。

まずコンパイルに必要なmakeとgccをインストールします。
$ su -
PASSWORD

# xbps-install -S make gcc

# exit

次はAnthyのソースコードを入手。
http://sourceforge.jp/projects/anthy/
から入手。バージョンは9100hを利用します。

ダウンロードしたらソースコードを解凍・展開。
$ tar xvf anthy-9100h.tar.gz

展開したディレクトリに移動。
$ cd anthy-9100h

※2015/02/04 追記
ライブラリファイルや設定ファイルが分散してしまうので./configureのオプションを追加。
configureを実行
$ ./configure --prefix=/usr
$ ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib

makeを実行
$ make

インストール
$ su
PASSWORD

# make install

# exit

ここまででエラーで停止しなかったのでたぶんコンパイルされているハズ。
anthy-agent
anthy-dic-tool
anthy-morphological-analyzer
の3つが/usr/binにインストールされ、ライブラリファイルが/usr/libにインストールされました。

ライブラリのインストール先/usr/local/libは他のディストリビューションでは/etc/ld.so.confにパスを書いてldconfigを実行しなくてはならないらしいです。
Void Linuxだとそのファイルは/etc/ld.so.conf.d/ ディレクトリ内のファイルを読み込むようになっているので該当ディレクトリを調べてみると、/usr/local/libのパスが書かれたファイルusr_local.confというファイルがあるので問題無さそう。
管理者権限でldconfigを実行しておく。
$ su -
PASSWORD

# ldconfig

# exit

コマンド実行後に一応ldconfigに-pオプションを付けて実行してみる。
$ ldconfig -p | grep libanthy
    libanthyinput.so.0 (libc6,x86-64) => /usr/lib/libanthyinput.so.0
    libanthyinput.so (libc6,x86-64) => /usr/lib/libanthyinput.so
    libanthydic.so.0 (libc6,x86-64) => /usr/lib/libanthydic.so.0
    libanthydic.so (libc6,x86-64) => /usr/lib/libanthydic.so
    libanthy.so.0 (libc6,x86-64) => /usr/lib/libanthy.so.0
    libanthy.so (libc6,x86-64) => /usr/lib/libanthy.so

と出力されたので問題ないっぽい。
※2015/02/06 追記
ライブラリが追加・削除された場合はldconfigコマンドでライブラリのリンク?の更新をしないといけないらしい。XBPSパッケージをインストールするとこれを自動でやってくれているようです。

とりあえずコンパイルとインストールは出来たのですが、これだけでは日本語入力は出来ません。