2.インストールについて

前回 1. から予想外に時間がたってしまいました... >_<

今,町の書店をまわってみると, Cygwin についての本が多数出版されていることに気づきます。 このページの当初の構想時には予想もしなかったことでした。

実は昨年,ThinkPad X22 に Windows 2000*1 を再インストールしたとき,Cygwin をクリーン・インストールした画面をキャプチャしておいたので, それを使ってインストール手順を解説しようと考えていました。



しかし,長く量がかさむ割に退屈な内容になってしまいました。 大体のところはインストーラ自身の表示する英文を読めば分かることですし, それで分からなくても書店に多種多様な Cygwin 解説本がある現在, あえて手取り足取り段取りを書くこともないわけですから, 思い切ってそれらを捨てることにしました。

ここでは,インストールに関するいくつかのポイントだけを述べることにします。

2.1 Windows 98/Me でも動くけれども...

Cygwin は Windows 98/Me にもインストールできます。 しかし,98/Me では, 標準の端末で IME による日本語入力ができないほか, 妙に動作が重かったり不安定だったりで,本当に 一応 インストールできるにすぎないものです。

Cygwin を開発している人々もあまり 98/Me は使っていないようで, 98/Me に対するバグがいつまでも残っていたり, 修正が遅れがちだったりする傾向がときどき見られます。 だましだまし使えないことはないかもしれませんが, その努力が報いられるとは思えません。

2.2 統合パッケージ管理ツール setup.exe

インストール手順は次の2項目に集約されます。

  1. http://www.cygwin.com から setup.exe をダウンロードする。
  2. setup.exe を使って Cygwin を構成する各パッケージをインストールする。

setup.exe は最初に使うインストーラであるとともに, 末長く使う Cygwin の統合パッケージ管理ツールです。 これを使ってパッケージのダウンロードやインストール,アンインストール, 再インストールを行います。

setup.exe は,パッケージのダウンロードのとき,まず setup.ini*2 というパッケージ記述ファイルをダウンロードします。 これと現在インストールされているパッケージを比較して, ダウンロードまたはインストールする候補を決定します。 もしも更新されているパッケージがあれば,ダイアログでハイ, ハイと進めていくだけで,新版のダウンロード,または 旧版のアンインストール/新版のインストール/後処理スクリプトの実行を, 自動的に行ってくれます。

Cygwin 使いにとって setup.exe を実行するのが日課 (ないし週課) のようなものになります。

2.3 Default Text File Type は Unix に

setup.exe でインストールを進めると下図にさしかかります。 ここがインストール時の勘所です。



基本はすべてデフォルトどおりに,です。 特に理由のない限り,インストール先はデフォルトどおりにします。 デフォルトどおりに All Users 向けにインストールします (あらかじめ管理者権限で Windows にログオンしている必要があります)。 そして最も重要なことですが,特に理由がない限り, Default Text File Type は Unix にします。 こうすると, Cygwin からつねに透過的にファイルの内容にアクセスできます。

もしも,ここを DOS にすると,Cygwin でファイルを開くとき, text モードと binary モードが区別されるようになります。 text モードでは改行コードの \r\n と \n の変換が行われます。 読み取るときに \r\n が \n に変換され, 書き込むときに \n が \r\n に変換されます。

ISO/ANSI C 以降,たしかに fopen 関数等で text モードと binary モードを区別して指定することが Unix でもできるようになりました。 しかし,普通,Unix では両者の振舞に差はなく, Unix プログラムの多くは必ずしも両者を厳密に区別していません。 そもそも,Unix では, テキスト・ファイルの操作のために用意されたコマンドを, バイナリ・ファイルに使うことも珍しくありません。

そんなわけで,Unix とソースレベルでの互換性を目指した疑似 Unix (Linux) 環境としての Cygwin でも,Default Text File Type を Unix としておくのが無難です。 うっかり text モードでバイナリ・ファイルを扱ったがために ファイル内容を破壊してしまった,という悲劇を防ぐためです。

また,無事そのようにインストールできたかどうか確かめるには, Cygwin をインストールした後,mount コマンドを 引数なしで起動します。 表示に binmode とあれば OK です。

$ mount
C:\cygwin\usr\X11R6\lib\X11\fonts on /usr/X11R6/lib/X11/fonts type system (binmode)
C:\cygwin\bin on /usr/bin type system (binmode)
C:\cygwin\lib on /usr/lib type system (binmode)
C:\cygwin on / type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)

2005年 追記

2005年12月現在の setup.exe では, より分かりやすく,"All Users" と "Unix" の選択肢が RECOMMENDED (推奨) と明記されるようになっています。

2.4 パッケージの組み合わせ

前述したように,日課にできるほど Cygwin のパッケージ更新は頻繁です。

しかし,まれに 依存性のあるパッケージ群が首尾一貫して更新されないことがあります。 その結果,組み合わせが悪くて使い物にならなくなることがあります。 たとえば tcltk が更新されたのに,python が更新されなかったため, python から tcltk を使う Tkinter モジュールが機能しなくなったことがありました。 また,cygwin-1.5.6 のように,必須パッケージながら, 普段の使い勝手に支障が出るほど 不具合のあるバージョンがリリースされたこともあります。

これらはいずれも過渡的な問題であり, 2〜3日から2〜3週間のうちにアップデートされて解決しますが, それでもシビアな用途には不向きといえます。

このような場合,setup.exe で陽に旧版のインストールを指定することもできますが面倒です。 ですから,もしも Windows マシンの台数に余裕があれば,1台, いわゆる「人柱」マシンを用意し,パッケージの更新ごとに setup.exe と setup.ini ファイル, release フォルダをアーカイブすることをお勧めします。 安定性を確認したうえで,そのアーカイブを他のマシンに インストールするわけです。

ちなみに今これを書いている現在 (2004年2月16日), 少なくとも筆者の使用している範囲では,各パッケージは安定しているようです。 参考のため,筆者がインストールしているパッケージとそのバージョンを cygchek -c コマンドの出力で示します。

$ cygcheck -c
Cygwin Package Information
Package                 Version            Status
_update-info-dir        00226-1            OK
ash                     20040127-1         OK
aspell                  0.50.3-1           OK
aspell-en               0.51.0-1           OK
astyle                  1.15.3-3           OK
base-files              2.6-1              OK
base-passwd             1.1-1              OK
bash                    2.05b-16           OK
bc                      1.06-1             OK
binutils                20030901-1         OK
bison                   20030307-1         OK
bzip2                   1.0.2-5            OK
cgoban                  1.9.14-1           OK
clisp                   2.32-1             OK
cpio                    2.5-3              OK
crypt                   1.1-1              OK
cvs                     1.11.6-3           OK
cygipc                  2.03-2             OK
cygutils                1.2.4-1            OK
cygwin                  1.5.7-1            OK
cygwin-doc              1.3-6              OK
diffutils               2.8.4-1            OK
editrights              1.01-1             OK
expat                   1.95.7-1           OK
figlet                  2.2-1              OK
file                    4.06-1             OK
fileutils               4.1-2              OK
findutils               4.1.7-4            OK
flex                    2.5.4a-3           OK
fltk                    1.1.4-2            OK
fontconfig              2.2.0-1            OK
fortune                 1.8-2              OK
freetype2               2.1.5-1            OK
gawk                    3.1.3-4            OK
gcc                     3.3.1-3            OK
gcc-ada                 3.3.1-3            OK
gcc-g++                 3.3.1-3            OK
gcc-gpc                 3.3.1-3            OK
gcc-mingw-ada           20031020-1         OK
gcc-mingw-core          20031020-1         OK
gcc-mingw-g++           20031020-1         OK
gcc-mingw-gpc           20031020-1         OK
gdb                     20030919-1         OK
gdbm                    1.8.3-7            OK
gettext                 0.12.1-3           OK
gnugo                   3.4-1              OK
grep                    2.5-1              OK
groff                   1.18.1-2           OK
gzip                    1.3.5-1            OK
ImageMagick             5.5.7-2            OK
inetutils               1.3.2-25           OK
jbigkit                 1.5-3              OK
jpeg                    6b-11              OK
less                    381-1              OK
lesstif                 0.93.91-6          OK
libaspell15             0.50.3-1           OK
libbz2_1                1.0.2-5            OK
libcharset1             1.9.1-3            OK
libdb3.1                3.1.17-2           OK
libdb4.1                4.1.25-1           OK
libfontconfig-devel     2.2.0-1            OK
libfontconfig1          2.2.0-1            OK
libfreetype2-devel      2.1.5-1            OK
libfreetype26           2.1.5-1            OK
libgdbm                 1.8.0-5            OK
libgdbm-devel           1.8.3-7            OK
libgdbm3                1.8.3-3            OK
libgdbm4                1.8.3-7            OK
libgettextpo0           0.12.1-3           OK
libiconv                1.9.1-3            OK
libiconv2               1.9.1-3            OK
libintl                 0.10.38-3          OK
libintl1                0.10.40-1          OK
libintl2                0.12.1-3           OK
libjpeg62               6b-11              OK
libjpeg6b               6b-8               OK
libMagick-devel         5.5.7-2            OK
libMagick6              5.5.7-2            OK
libncurses5             5.2-1              OK
libncurses6             5.2-8              OK
libncurses7             5.3-4              OK
libpcre                 4.1-1              OK
libpcre0                4.5-1              OK
libpng12                1.2.5-4            OK
libpng12-devel          1.2.5-4            OK
libpopt0                1.6.4-4            OK
libreadline4            4.1-2              OK
libreadline5            4.3-5              OK
libtiff-devel           3.6.0-5            OK
libtiff3                3.6.0-2            OK
libtiff4                3.6.0-5            OK
libxml2                 2.6.4-1            OK
login                   1.9-7              OK
m4                      1.4-1              OK
make                    3.80-1             OK
man                     1.5k-2             OK
mingw-runtime           3.2-1              OK
mktemp                  1.5-3              OK
more                    2.11o-1            OK
ncurses                 5.3-4              OK
openssl                 0.9.7c-1           OK
patch                   2.5.8-8            OK
patchutils              0.2.22-2           OK
pcre                    4.5-1              OK
pcre-doc                4.5-1              OK
perl                    5.8.2-1            OK
python                  2.3.3-1            OK
readline                4.3-5              OK
ruby                    1.8.1-1            OK
sed                     4.0.8-1            OK
sh-utils                2.0.15-4           OK
sharutils               4.2.1-3            OK
splint                  3.1.1-1            OK
tar                     1.13.25-5          OK
tcltk                   20030901-1         OK
termcap                 20021106-2         OK
terminfo                5.3_20030726-1     OK
texinfo                 4.2-4              OK
textutils               2.0.21-1           OK
tidy                    030901-1           OK
unzip                   5.50-5             OK
vim                     6.2.098-1          OK
w32api                  2.5-1              OK
which                   1.5-2              OK
XFree86-base            4.3.0-1            OK
XFree86-bin             4.3.0-8            OK
XFree86-etc             4.3.0-6            OK
XFree86-fenc            4.2.0-3            OK
XFree86-fnts            4.2.0-3            OK
XFree86-lib             4.3.0-1            OK
XFree86-lib-compat      4.3.0-2            OK
XFree86-man             4.3.0-2            OK
XFree86-prog            4.3.0-12           OK
XFree86-startup-scripts 4.2.0-5            OK
XFree86-xserv           4.3.0-44           OK
zip                     2.3-5              OK
zlib                    1.2.1-1            OK
zsh                     4.1.1-2            OK

次回予告

次回は一次情報としての英語ドキュメントの紹介と, あまり知られていない /dev や /proc ファイルの利用方法について 少々述べることにします。


脚注

*1 英語モデルの ThinkPad,英語版の Windows 2000 (正確にはインストール後に SP4 を適用) です。 英語版 Windows XP もそうですが,英語版 Windows 2000 でも, 日本語フォントや日本語入力メソッドが標準で搭載されています。 それらは初期時は凍結された状態ですが, コントロールパネルの地域のオプションで選択することで解凍されます。 残念ながら (より完全な多国語対応の Mac OS X などと異なり) メニュー表示まですべて日本語に切り替わるわけではありませんが, 日本語ドキュメントの入力や表示は,日本語版 Windows と全くかわりなくできます。

ちなみに英語モデルを選んだ理由は,記号の配列が絶妙で かつキー数が少なく小型ノート PC でもピッチに無理がない 英語鍵盤にあるわけですが, ThinkPad のそれはキータッチは良いものの, 非標準的なキーを多数備えている一方で Command キー (Mac では Apple マーク,PC では Windows マークが刻印されているキー) のような重要なキー (とりわけ BeOS を動かすときなどに) が省略されており, バランスを欠いているきらいがあるようです。:-(

あと,ときどき驚かされることは, 英語鍵盤では日本語入力できないのに使おうとするなんて理解できない, と根本的に誤解している人がいることです。 英語鍵盤と日本語 Windows の組み合わせで販売される場合があることからも 分かるように,決してそんなことはありません。 日本語鍵盤で「漢字」キーのある位置に, 英語鍵盤では「`」があります。Alt キーを押しながら「`」キーを押せば, 日本語入力に切り替えられます。 これは日本語版 Windows でも,日本語環境を解凍した英語版 Windows でも同じです。

*2 setup.ini は単純なテキスト・ファイルです。 読むとすぐに分かりますが, setup.ini には各パッケージのバイト数と MD5SUM 値も記述されています。 setup.exe は,インストール前にこの値を照合して, パッケージがオリジナルと1バイトの違いもないことを確認します。

場合の数を考えれば,同じ MD5SUM 値をもつバイト列は複数あり得ますが, それらは1バイトどころでなく似ても似つかない内容なのが普通です。 わずかしか違わないケースも知られていますが, 各パッケージファイルは特定の形式で圧縮されていますから, その制約条件を満たす必要から,可能な場合の数はさらに少なくなります。 実用上,今のところ MD5SUM 値は照合基準として十分以上でしょう。

目次へ戻る


Copyright (c) 2004, 2005 Oki Software Co., Ltd.