Cygwinで日本語環境

概要

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と互換性を持たせるのが一つの目標であっても、完全な互換性は得られないので泥沼の移植作業が待っていることを覚悟しなくてはならない。

内容・目次


Xtermについて

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フォントがあります。

rxvtについて

Cygwinにはrxvtというターミナルウィンドウが付属している。このrxvtはドキュメントによると日本語をサポートしているとある。
また、XサーバなしのWindows環境でDOSプロンプト代わりに用いることが出来るが、漢字入力はkinput2などのXインプットメソッドが必要なため、改造でもしない限り事実上Xサーバが動いている環境でしか使えない。

kinput2について

クライアント・アプリケーションに日本語など入力をするときに、Xインプット・メソッドとかいうのがいるらしい。 Xインプットメソッドの代表的なものの一つとしてkinput2がある。
移植にはkinput2のソースだけ取り寄せるだけではヘッダファイルなどいくつ語らないようなのでX-WINDOWのソースであるXCアーカイブを展開する必要があるようだ。

FreeWnnについて

かな漢字変換サーバといえばwnnが、お気に入り。 フリーウェア版のwnnはhttp://www.freewnn.org/で開発している。
Cygwinには移植作業が必要である。

Cygwin/XとWindowsのIMEを連携して使う

http://www.cygwin.com/ml/cygwin-xfree/2005-01/msg00009.htmlによるとペパーミントのzakkiさんが、XMIEというのを製作している。
XIMEを用いるとX-WINDOW/CygwinでWindowsのIMEから日本語入力ができるらしい。
使用方法などはペパーミント Diary 2005年1月を参照。

bashの設定について

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.SJISja_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を要求しているような場合は、~/.xinitexport 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に移動してしまえばよい。

ビルドしたいアプリケーションのアーカイブ(tarbalファイル)の検証

ビルドしたいアプリケーションのアーカイブが本物であるか、あるいは正しくダウンロードされたか検証するほうほうとして

といった手段が選択できます。
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年
このファイルの著作権は大槻昌弥が所有しています。 無断転載厳禁

Webサイトの内容に関するお問い合わせや、ご意見ご要望は連絡用フォームから送信するようにお願いします。
なお、iso2022-jpのプレーンテキストのみ送信できます。
また、整理の都合上、問い合わせになるURIを明記するようにお願いします。