Redhat社のCygwinで日本語環境をひそかに整備しよう。
DOS窓じゃ所謂MS漢字(またの名をシフトJIS)しか扱えないので不満が溜まっていくばかりだよねぇ。
最近(2005年)はsetup.exe
で、Cygwin/XというWindow System Xの Version 11R6.8.2(CygwinでのX-WINDOW環境はXFree86のサポートは終了してX.orgのほうに移行しました。)がインストールできるようになったようなので、これを用いて何とか日本語環境を作りたいものである。
当然ながらCygwinはLinuxのような所謂POSIX系OSと互換性を持たせるのが一つの目標であっても、完全な互換性は得られないので泥沼の移植作業が待っていることを覚悟しなくてはならない。
X11には、コマンドを入力するためのXtermというターミナルウィンドウがついている。 X.orgによるとxtermのUNICODE化したバージョンが存在するらしい。 しかし、パッケージに含まれているのとは別バージョンで、なおかつ別部隊で管理しているらしい。
2003年2月20日(木)現在で、CygwinについてくるXfree86に含まれているXtermはutf8とワイドキャラクタをサポートしているようです。
~/.Xresource
に以下のような行を追加すると、コマンドxterm -u8
でxtermを起動したとき、cat
コマンドなどでutf8のテキストを表示できます。
XTerm*Font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
XTerm*Font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
Markus Gunther KuhnさんのサイトにUCSフォントがあります。
Cygwinにはrxvtというターミナルウィンドウが付属している。このrxvtはドキュメントによると日本語をサポートしているとある。
また、XサーバなしのWindows環境でDOSプロンプト代わりに用いることが出来るが、漢字入力はkinput2などのXインプットメソッドが必要なため、改造でもしない限り事実上Xサーバが動いている環境でしか使えない。
クライアント・アプリケーションに日本語など入力をするときに、Xインプット・メソッドとかいうのがいるらしい。
Xインプットメソッドの代表的なものの一つとしてkinput2がある。
移植にはkinput2のソースだけ取り寄せるだけではヘッダファイルなどいくつ語らないようなのでX-WINDOWのソースであるXCアーカイブを展開する必要があるようだ。
かな漢字変換サーバといえばwnnが、お気に入り。
フリーウェア版のwnnはhttp://www.freewnn.org/で開発している。
Cygwinには移植作業が必要である。
http://www.cygwin.com/ml/cygwin-xfree/2005-01/msg00009.htmlによるとペパーミントのzakkiさんが、XMIEというのを製作している。
XIMEを用いるとX-WINDOW/CygwinでWindowsのIMEから日本語入力ができるらしい。
使用方法などはペパーミント Diary 2005年1月を参照。
bashはそのままだと、8ビット文字を通さないので、~/.inputrc
(readline ライブラリに対するオプションを設定するファイル)を編集する必要がある。
~/.inputrc
がない場合は、/etc/defaults/etc/skel/.inputrc
をホームディレクトリにコピーしておく。
cp /etc/defaults/etc/skel/.inputrc ~/.inputrc
chmod -c 755 ~/chmod -c 755 ~/.profile
そして、コメントアウトされているメタキャラクタグ関係の項目を有効にして、以下のパラメータに変更する。
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
すくなくともバージョン1.5.18(0.132/4/2) 2005-07-02 20:30の時点においては、/usr/share/locale/locale.alias
にはシフトジスに対するロケール名がja_JP.SJISとなっており、正しい名前が記述されていないので内容修正が必要である。
/usr/X11R6/lib/X11/locale/locale.alias
(locale.alias,v 1.3 2000/08/17 19:46:48)にもシフトジスの名前に対する正しいロケールがないので同様にして編集を加える。
アプリケーションによっては誤った名前のロケールを使っていることも予想されるのでja_JP.SJIS
は、削除しないでja_JP.SJIS
がja_JP.Shift_JIS
のエイリアスであることを記述する。
またEUC-JPに対するロケール名もおかしいので正しい名前のエイリアスであることを記述する。
ja_JP.SJIS ja_JP.Shift_JIS
ja_JP.eucJP ja_JP.EUC-JP
さて、Windowsのコマンドプロンプトから利用する場合、~/.bash_profile
に、export LANG=ja_JP.Shift_JIS
とかしておけばShift_JISのメッセージカタログが利用できるようになる。
またX-WINDOW環境でja_JP.UTF-8
あるいは、陳腐化している環境ではja_JP.UJIS
を要求しているような場合は、~/.xinit
にexport LANG=ja_JP.UTF-8
あるいはexport LANG=ja_JP.UJIS
を書き加えておけば、環境変数LANGはオーバーライドされる。
もう一つの設定方法を紹介する。CMDからログオンした場合とか、Xのターミナルやシリアルポートなど様様な端末からログオンしたい場合で、それぞれエンコーディングが異なる場合にも対応できる方法は以下のようになる。
if [ $(tty) == '/dev/console' ]; then
# CMD のばあいはShift_JIS
export LANG=ja_JP.Shift_JIS
else
# その他の端末はUTF-8
export LANG=ja_JP.UTF-8
fi
WindowsのコマンドプロンプトはShift_JIS
しか扱えない仕様であるという欠点があります。日本語UNIXでの漢字コードがEUCであるのが一般的であることから、ご多分もれずにロケールjaの文字コードはEUCになっています。
ということでcygwinをコマンドプロンプトでヘルプやエラーメッセージを日本語で表示するには、メッセージカタログファイルのソース(拡張子.po)をShift_JISに変換してメッセージカタログのファイル(拡張子.mo)を作り出して、ロケールの樹形構造に格納しておかなくてはなりません。
バイナリだけとってきた状態では拡張子.poのファイルがありませんソースコードを落として拡張子.poのファイルをコンパイルするしかないようにおもわます。
はっきり言って雑多な作業です。でもWebをサーフィンしていたらソリューションを見つけました。http://shooting-star.myhome.cx/cygwin/obsolete/jp.html[k-square]にあるmo-euc2sjisです。
EUCの拡張子moファイルをShift_JIS
コードの拡張子moに変換して(しかもスクリプトまで用意してあって一気に変換)くれます。
ちなみに、mo-euc2sjisはja_JP.SJISを樹形構造に追加してくれます。
でも、Another HTML-lintによるロケールの解説ではja_JP.Shift_JISとするのがHTTPのRFC的に正解だそうだから、やっぱしja_JP.Shift_JISに統一したいならば、ja_JP.SJIS以下をja_JP.Shift_JISに移動してしまえばよい。
ビルドしたいアプリケーションのアーカイブが本物であるか、あるいは正しくダウンロードされたか検証するほうほうとして
md5sum
コマンドでチェックサムを確認するといった手段が選択できます。
md5sum
は、
md5sum hogehoge.tar.bz2とかコマンドラインを入力して実行するとチェックサムを生成してくれます。
あとはFTPサイトにあったチェックサムが書き込んであるファイル(MD5SUMとかhogehoge.tar.bz2.md5など)と生成されたチェックサムが同じかどうか確認すればよい。
署名ファイルがFTPにあるならば、署名ファイルを用いてアーカイブの検証をするほうがよりベタだと思われます。
検証の手順は以下のようにすればよろしいかと思います。また日本国内から公開鍵サーバを利用する場合にはopenpksd.orgを利用するとよろしいかと思います。
$ gpg --keyserver pgp.nic.ad.jp --verify Archives.gpg.txt hogehoge.tar.bz2
とかします。 ここで、まだ自分の鍵輪にアーカイブに署名した相手の公開錠IDがない場合は、公開鍵サーバから公開錠を受信します。
$ gpg --keyserver pgp.nic.ad.jp --recv-key FBB75451
そして署名が受信できたら、もうちちどアーカイブの検証をします。
$ gpg --keyserver pgp.nic.ad.jp --verify Archives.gpg.txt hogehoge.tar.bz2
準備中
準備中
著作権 大槻昌弥 © 2002年,2003年
このファイルの著作権は大槻昌弥が所有しています。
無断転載厳禁。