Cygwin で便利!
"Cygwin の初期設定"でこのページの内容を一気に実施できるようにしましたので、
2003/05/10 の更新を最後にこのページの更新は停止しています。
参考としてのみ残しておきます。
Cygwin 1.3.19 をベースにした環境設定ファイル (systemenv1.3.19.tgz) から
Cygwin 1.3.22 をベースにした環境設定ファイル (systemenv1.3.22.tgz) に更新しました。
結構細かくいじってはいますが基本的に機能は一緒なので
どちらを使っても大差はないと思います。
部分的に反映する場合は既存のファイルとよく比較してから実施してください。
また、このページでの作業は Administrators に所属しているユーザで
行うことを想定しています。
Cygwin の日本語化
rpm コマンドのインストール
標準でインストールされるバイナリでは日本語への対応がいまいちなので、
必須コマンドの日本語対応バージョンを用意しましょう。
日本語環境を整えるには、最初に MB (マルチバイト文字=多バイト文字)に
対応した実行ファイルを準備する必要があります。
ソースを集めて最新のものを作るのも良いかもしれませんが、
そんな時間があるなら、ほかのことをしたほうがおすすめだし、
もっと優秀な人が作ってくれている rpm パッケージのバイナリがあるので、
それを用いることにしましょう。
私が(勝手に)尊敬している Riue (りう)さんが作っている
HeavyMoon プロジェクトの rpm パッケージがおすすめです。
かなりふるかったりもしますが、Cygwinのことを良くわかっている
パッケージのありかたで、良い感じです(だと思います)。
古いとは言っても、使用には問題ありませんし、
気分の問題でしかないでしょう。
そういうわけで、まずは rpm パッケージをインストールするためのコマンドである、
rpm をインストールしましょう。
ftp://ftp.st.ryukoku.ac.jp/pub/ms-windows/HeavyMoon/
から、
rpm-3.0.6.bin.tar.gz をDLして、'/'で展開して、
$ rpm --initdb
$ touch /etc/mtab
を実行すれば、rpm のインストールと使用する準備が完了です。
この作業で rpm パッケージをインストールする準備が整いました。
MB (日本語)対応コマンドのインストール
日本語対応されて無いと使い物にならないかもしれない、
grep , awk , sed について
MB 対応版を追加でインストールします。
また、必須の nkf もインストールしましょう。
ftp://ftp.st.ryukoku.ac.jp/pub/ms-windows/HeavyMoon/rpms/i686/
から、
gawk-mb-3.0.4_mb1.12-2.i686-cygwin.rpm
grep-mb-2.0-2.i686-cygwin.rpm
sed-mb-3.02-3.i686-cygwin.rpm
nkf-1.92-2.i686-cygwin.rpm
をDLしたら、
$ rpm -i --nodeps --force ファイル名
で一つずつインストールしてください。
このオプションは依存関係を無視した、強制上書きでのインストールを指示していますが、
この設定のインストールで特に問題ありません。
また、OSの違いで文句をいわれるなら、 --ignoreos オプションを追加指定し、
CPUアーキテクチャの違いで文句をいわれるなら、
--ignorearch オプションを追加指定してください。
上記のインストール作業で、MB対応コマンドがインストールされ、
gawk-mb , grep-mb , sed-mb , nkf が使えるようになります。
お好みなら既存のコマンドをリプレースするような形で、
alias 設定したり、シンボリックリンク張ったりするのも良いかもしれません。
Cygwin上で日本語の入ったファイルを扱うときはMB対応コマンドを使うようにしましょう。
なお、Cygwin上で日本語扱う場合は ShiftJIS + LF(ラインフィード) が基本です。
日本語マニュアル環境構築(1)
次に、日本語で man コマンドが読めるようにもしておきましょう。
まずは日本語対応のバイナリの準備からです。
これまた、HeavyMoonプロジェクトのrpmパッケージを用います。
ftp://ftp.st.ryukoku.ac.jp/pub/ms-windows/HeavyMoon/rpms/i686/
から、
termcap-20001216-2.i686-cygwin.rpm
info-4.0-9.i686-cygwin.rpm
groff-1.16-1.i686-cygwin.rpm
less-358.iso242-5.i686-cygwin.rpm
man-1.5h1-2.i686-cygwin.rpm
をDLしたら、
termcap-20001216-2.i686-cygwin.rpm以外は
$ rpm -i --nodeps --force ファイル名
で一つずつインストールしてください。(この時の注意点は上と同様です)
termcap-20001216-2.i686-cygwin.rpm を準備したのは、
termcapではなく、このパッケージに同梱されている
cygtermcap.dllが、
ほしいだけなので、そのファイルだけを取り出します。
Windowsのアーカイバで取り出して、/bin におけばオッケイです。
Windowsのアーカイバで取り出し方がわからない人や、
Cygwin上で何でもやりたい人は、以下の手法を用いてください。
$ rpm2cpio termcap-20001216-2.i686-cygwin.rpm | cpio -id
$ cd usr/bin
$ mv cygtermcap.dll /bin/
以上で、日本語manを読む下地ができました。
さらに日本語マニュアル本体のインストールと、
環境設定を行えば、日本語のmanを読むことができるようになります。
日本語マニュアル環境構築(2)
次は、日本語マニュアル本体をインストールです。
以下のURLから日本語のマニュアルフルパッケージをDLしてください。
http://www.linux.or.jp/JM/download.html
DLしたファイルを展開して、
$ make config
で、対話的なconfigに入ります。
/usr/share/man/ja_JP.SJIS にインストールして、
ユーザーは Administrators。
グループは Administrators で
圧縮は gzip(好みでどうぞ)と回答したあとは、
すべてデフォルトでOKです。
コンフィグが終わったら
$ make install
で、インストール。
最後に、
$ /usr/sbin/makewhatis
で'whatisファイル'の再構築を行えば日本語manファイルのインストール完了。
残るは 'CygwinのSystem全体' と 'ユーザ' の環境設定です。
日本語マニュアル環境構築(3) -環境変数の設定-
最後に環境変数を調整すれば、日本語でmanが読めるようになります。
必要な作業は以下のとおりです。
- JLESSCHARSET の設定
- PAGER の設定
- MANPATH の設定
これらは 'CygwinのSystem全体' に設定するのが妥当だと考えます。
そういうわけで、1 及び 2 については
/etc/profile に
export JLESSCHARSET=japanese-sjis
export PAGER=/usr/bin/less
を設定しましょう。
3 については
/etc/man.config に
MANPATH /usr/share/man/ja_JP.SJIS
を設定しましょう。
なお、このあとに説明する 'LANG=ja_JP.SJIS' を設定するなら、
MANPATHの設定は必要ありません。
日本語環境用環境変数の設定(1) -SJISカタログファイルの導入-
日本語環境をこよなく愛する人なら、環境変数LANGにja_JP.SJISを
設定したいと思うかもしれませんが、ただこの環境変数を設定するだけだと
多くのメッセージが文字化けするようになります。
これは、Cygwinで公式に配布されている日本語カタログファイルがEUCのためで、
環境変数LANGを設定する前に、この問題に対処する必要があります。
英語に抵抗がないなら、後ろ向きの対処として(笑)、
export LANG=ja_JP.SJIS
export LC_MESSAGES=C
を設定するのがよいと思いますが、
LANGを設定する意味は大幅に薄れる気もします(汗)
新しい機能を取り入れた、前向きな対処として
export OUTPUT_CHARSET=sjis
を設定するのも良いでしょう。
最近のgettextはlibiconvを有効にされてるようですので、
しばらく文字化けを我慢していれば、
そのうち文字化けしなくなる(EUCからSJISにiconvで変換される)と思います。
が、まだこれでは(現段階では)完璧ではありません。
現状ではSJIS日本語カタログファイルを
インストールするのが文字化けの対処になります。
人によって必要なカタログファイルが違うので、
SJISカタログファイルを配布するのではなく、
EUCのカタログファイルからSJISのカタログファイルを作るためのコマンド群と
それを一気に処理するためのスクリプトを用意しました。
mo-euc2sjis.tgz
mo-euc2sjis.tgzをダウンロードしたら、
権限のあるユーザで(普通ならAdministrators)、以下のように実行してください。
$ tar zxvf mo-euc2sjis.tgz
$ cd mo-euc2sjis
$ ./sjismo.sh
プロンプトが帰ってくれば処理は完了です。
$ export LANG=ja_JP.SJIS
$ grep --help
などを実行して確認してみてください。
たいていのものはこれで処理が完了するのですが、探してみると
これ以外に vim のカタログファイルもEUCなので、
これにも対処をしましょう。
vimのsourceファイルを探すと EUC -> SJIS のためのコードが準備されてるので、
利用させてもらうことにしましょう。
vimのsourceファイルが'vim-6.1-2-src.tar.bz2'だとして説明すると、
$ bzcat vim-6.1-2-src.tar.bz2 | tar xvf -
$ cd vim-6.1-2/src/po/
$ gcc -o sjiscorr.exe sjiscorr.c
$ export VIMLANG=/usr/share/vim/vim61/lang
$ mkdir -p $VIMLANG/ja_JP.SJIS/LC_MESSAGES
$ msgunfmt $VIMLANG/ja/LC_MESSAGES/vim.mo \
> | nkf -s | ./sjiscorr \
> | msgfmt -o $VIMLANG/ja_JP.SJIS/LC_MESSAGES/vim.mo -
$ unset VIMLANG
という感じに実行するとOKです。
ちなみに、このときの msgunfmt とか msgfmt は 上で配布している、
mo-euc2sjis.tgz に同梱の日本語に対応したものを使わないと
エラーであふれます。
めんどうだなぁ、とか、わからない〜、とか思った人は
私の作った vim.mo を使ってください。
vim-mo.tgz
'/'で展開すれば終わりです。
日本語環境用環境変数の設定(2) -環境変数の設定-
日本語SJISカタログファイルを入れ終わったら、
環境変数LANGの設定です。
日本語のメッセージを出したいなら、/etc/profile に
export LANG=ja_JP.SJIS
export OUTPUT_CHARSET=sjis
日本語でメッセージを出したくないなら、/etc/profile に
export LANG=ja_JP.SJIS
export OUTPUT_CHARSET=sjis
export LC_MESSAGES=C
を設定してください。
ホスト全体の環境変数設定
ここまでの作業をすれば、
基本的なメッセージは日本語で表示される環境が構築できているはずです。
でも、Linuxとちがい新規ユーザのホームディレクトリとか、
個人環境設定ファイルのテンプレートとかは
Cygwin標準のままでは対応できません。
そういうわけで、 /etc/profile をいじって、完全ではないにしろ、
擬似的に /etc/skel を使えるようにするように拡張してみました。
ここまでに行った環境変数設定も組み込んでます。
つまり、
このファイルを使うなら、
このページで"-環境変数の設定-"と
書いてあるチャプターを
実施する必要がありません。
さらに、いくつか "私の好み" の設定値を加えてあります(笑)
systemenv1.3.22.tgz (1.3.22 ベース) ■■最新■■
systemenv1.3.19.tgz (1.3.19 ベース)
使ってみたい方は、 systemenv1.3.XX.tgz を上記のリンクから取得して
例のごとく '/' で展開すれば既存のファイルが上書きされて完了です。
オリジナルを取っておきたい人は、
自分が気に入るように処理してください。
ファイル内容の詳細は以下のリンクをご覧ください。(1.3.22 ベース)
/etc/profile
/etc/bash.bashrc
/etc/man.config
/etc/skel/.bash_profile
/etc/skel/.bashrc
/etc/skel/.inputrc
/etc/skel/.vimrc