2013年8月31日 7:23 1xx
2013年8月30日 22:41 ribbon
: a.
update-canna-yubin というcommandで各自で最新の辞書を作る様にすればいいのかな、
これらの方式の欠点は 1) shell scriptで作ればとても簡単だけども、 package化しようと思えば、意外と面倒くさい 2) 今までbuild環境のみに入れれば良かったcanna-devel等のpackageが 辞書をinstallする環境にも必要になる
とりあえず方法a.で処理できないか考えます。
以下のようなbash scriptになりました。
canna-yubin.spec fileを参照して作ったので、
canna-yubinと同じ、
License: GPL-2.0+ and SUSE-Public-Domain
で公開しようかと思います。
ここまでは簡単でした。
しかし、これをpackage化しようとすると面倒そうに見えます。
-------- BEGIN update-canna-yubin --------
#! /bin/bash -e
### Update canna yubin7 dictionary .
export PATH='/bin:/usr/bin'
## define japanpost information .
domain='www.post.japanpost.jp'
ken_all='ken_all'
jigyosyo='jigyosyo'
ken_all_url="http://$domain/zipcode/dl/kogaki/zip/$ken_all.zip"
jigyosyo_url="http://$domain/zipcode/dl/jigyosyo/zip/$jigyosyo.zip"
## define system environment information .
canna_yubin_dir='/usr/share/canna-yubin-0.0.20011101/'
canna_dic_dir='/var/lib/canna/dic/'
canna_system_dic_dir="$canna_dic_dir/canna/"
canna_user='wnn'
workdir="/tmp/update-canna-yubin.$$/"
trap "rm -r $workdir" EXIT
mkdir "$workdir"
cd "$workdir"
wget "$ken_all_url" "$jigyosyo_url"
unzip "$ken_all.zip"
unzip "$jigyosyo.zip"
mv 'KEN_ALL.CSV' 'ken_all.csv'
mv 'JIGYOSYO.CSV' 'jigyosyo.csv'
"$canna_yubin_dir/yu2can.pl" | nkf -Se >yubin7.ctd
mkbindic -m yubin7.ctd
echo "
install -m 644 yubin7.cbd yubin7.cld $canna_system_dic_dir
cd $canna_system_dic_dir
chown $canna_user:root yubin7.cbd yubin7.cld
" | sudo sh -e
echo 'Please reload canna .
ex: /sbin/service canna reload'
exit
-------- END update-canna-yubin --------
-------- 簡易test結果 --------
* 成功終了するか?
OK: openSUSE13.1M4x64
* 終了した時 $workdir を削除するか?
OK: openSUSE13.1M4x64
* "$canna_system_dic_dir/" のyubin7.cbd yubin7.cld が更新されているか?
OK: openSUSE13.1M4x64
* yubin7.cbd yubin7.cldのownerは wnn:root になっているか?
OK: openSUSE13.1M4x64
* (emacs+tamagoを起動、C-x RET C-\ でjapanese-egg-cannaを選択)
OK: openSUSE13.1M4x64
* 郵便番号が住所に変換されるか?
OK: openSUSE13.1M4x64
* update-canna-yubinの処理の途中で<Ctrl>+cで割り込み、
処理が途中で終了するか?
OK: openSUSE13.1M4x64
* その時、exit statusは0以外か?
OK: openSUSE13.1M4x64
* その時、$workdir を削除するか?
OK: openSUSE13.1M4x64
--------
--
1xx