戻る

Cygwin で便利!

Cygwin 1.3.22 を元にした記述を更新し、1.5.9 に最適化しました。
インストールされるパッケージの修正(主に追加)を行いました。
cygwin-setup.awkも更新していますので、
ダウンロードして保存している方は更新をおすすめします。
低いバージョンの Cygwin でも使えるようにしていますので、
最新のcygwin-setup.awkを使えば OK です。

また、このページでの作業は Administrators に所属しているユーザで
行うことを想定しています。
戻る

Cygwin のインストール

インストール手法についての考え

今ではインストールの解説本も解説サイトも多いので、
普通にインストールする方法を学ぶのは事欠かないでしょう。
でも、普通のインストール方法は、
必要なものだけインストールしたい人にとっては面倒くさい!!
です。
GUI で一つ一つインストールするかどうかを選択するなんて、
面倒以外のなにものでもないです。
しかも日本語環境で setup.exe を実行すると表示のレイアウトが崩れてるし。
私は、私が用いている、それらとは違った比較的面倒でない手法をおすすめします。
そしてこの方法は複数のメリットをもたらします。

この手法でのメリットは以下のとおりです。
  1. インストールの際に GUI で個別にパッケージを選択しなくてすむ
  2. 再インストールの際に何度も DL しなくてすむ
  3. 安定した Cygwin バージョンを見つけたら、その状態の全パッケージを保存できる(重要)
  4. ソースも取得して保存しておける
  5. setup.exe の不安定さにかかわらずバイナリを確実に取得できる (wget 使用時)

インストールの前準備(1)

さて、メリットが気に入った人は
まずは、インストールするためのパッケージを丸ごとDLしましょう。
FTP (anonymous) で
Cygwin のミラーリストのどれかの FTP サイトにつなげて、
releaseディレクトリ配下および、setup.exe setup.ini をDLすればフルパッケージです。
フルパッケージですと、ソースも含めて 1GB 以上ありますので、
全部取得するのは低速回線の人にとってはつらいかもしれません。
その場合は最低限の DL ディレクトリ配下と、
setup.exe setup.ini をDLしておいてください。
# なぜ、これらを最低限のディレクトリとして選択したのかは
# "インストールの前準備(2)" をご覧ください。


なお、DL したディレクトリを格納するフォルダには、
それら以外のファイルを置いてはいけません。

インストールの前準備(2)

DL が終わったら後は setup.exe を実行して、インストールするだけですが、
その前に「インストールの際に GUI で個別にパッケージを選択しなくてすむ」
ための仕掛けをする必要があります。
setup.ini を編集することでインストールの際のカテゴリを作れますので、
"setup.ini を編集するスクリプト" を使ってそれを実現します。

まずは
パッケージを選択するカテゴリを作るスクリプト (cygwin-setup.awk)
をダウンロードしてください

インストールするパッケージの選択基準は、
基本構成+開発環境+サーバパッケージ+α
です。(openssh xinetd crond exim proftpd cygrunsrv などを追加しています)

cygwin-setup.awk をダウンロードしたら、
以下のように実行して新しい(編集済みの) setup.ini を作ります。
$ chmod a+x cygwin-setup.awk
$ mv setup.ini setup.ini.origin
$ ./cygwin-setup.awk setup.ini.origin > setup.ini

上記の方法でうまくいかない人は、以下の方法を試してください。
$ mv setup.ini setup.ini.origin
$ awk -f cygwin-setup.awk setup.ini.origin > setup.ini
# 互換性維持のために k-square のパッケージ定義からの削除は
# 今後 (2004/05/04以降) は基本的に行いません。
# 実行して OK がでなかったパッケージがあっても問題ありません


どちらかの方法で実行して、新しくできた setup.ini を使って、
インストール作業を続けていきます。


ただ、ここで問題なのが、awk が使えない環境だとこのスクリプトが使えないところです。
何とかして、awk が使える環境までは自力で持っていってください。
EUC + LF で記述しているので、Linux で実行しても大丈夫ですし、
一度デフォルトで Cygwin をインストールをするのも良いでしょう。

インストールの前準備(3)

この作業は、Windows NT/2000 系 OS に
Cygwin をインストールしようとしている人のうち、
パーミッションというものがよく分かっていない人は是非行ってください。
また、完璧じゃなくても良いのでひとまず動いてほしい (ルーズに設定したい) 人も、
この設定を実施する対象です。

対象の人はシステム環境変数に
# [システムのプロパティ]-[詳細]タブ-[環境変数] から設定
CYGWIN=nontsec nosmbntsec
を設定することをおすすめします。

そして、この設定をしなかった人は別のことに注意してください。
Cygwin 1.3.15 以降ではデフォルトが "CYGWIN=ntsec binmode" なので、
NTFS のドライブ上では 所有者・パーミッションなどが有効になります。
この環境変数の設定についての 詳細はこれを読んでください

それからパーミッションに関係した重要なこととして、
マイクロソフトドメインとの関係があります。
NT / 2000 系の OS を使っている人は気づいていると思いますが、
ドメイン上のユーザとローカル PC のユーザは別物です!!
通常の Cygwin のインストールだと
ローカルユーザから生成した /etc/passwd しか作成しませんので
何も作業を行わない状態だと、
ドメインユーザに対するパーミッションがありません!
インストールしたユーザがドメインユーザの場合は、
そのユーザだけ /etc/passwd に追加されますが、
# Cygwin 1.5.x からは追加されるようになりました。
# Cygwin 1.3.22 以前は実行したユーザでさえ追加されないはずです。

それ以外のドメインユーザにはパーミッションが無い状態になり、
CYGWIN=ntsec (デフォルト)だとディスクにアクセスができなくなります。
この場合は CYGWIN=nontsec を設定するだけじゃ足りません。
この問題の解決法は次に記述しますので確認してください (ホントに重要)

インストールの前準備(4)

Cygwin 1.5.x のころから Cygwin のインストールフォルダに対する、
アクセス権の要求が大きくなるように仕様変更されているようです。
Cygwin のインストールフォルダに対して、インストールユーザがフルコントロールを
もつだけでは足りなくなっています。
# Cygwin 1.3.22 以前では問題ありません。
Windows 2000 で何度か実験した結果、
Cygwin のインストールフォルダに Everyone がフルコントロールをもつことを
前提に動作しているように見えます。
# Windows XP では確認していませんが同様かと思います。

そのため Cygwin をインストールするフォルダをあらかじめ作成して、
そのフォルダに対して、Everyone フルコントロールを設定してください。

私の場合は Everyone , SYSTEM , Administrators の 3 グループに
フルコントロールを設定するようにしています。

1.5.x からはこの作業を行わないと正常にインストールが完了しません。
一応インストール自体は終わりますが、正常に動作していないので、
すでにインストールした方は再度インストールからやり直すことをおすすめします。
( ただしあくまで "私の主観" であることはお断りしておきます )

Cygwin のインストール

前準備がすべて終わったら、DL したパッケージと、
新しくできた setup.ini を使ってインストールをしましょう。
インストール途中にパッケージの選択時に k-square という
カテゴリが出てくると思います。
そのカテゴリを丸ごとインストールするようにすれば OK です。
ほとんどの人には十分なものがインストールされるはずです。
納得いかない人は全パッケージのインストールをどうぞ。

インストールが終わったら、Cygwin のコンソールを起動してみてください。
正常に起動できたなら、Cygwin 本体のインストールは以上で完了です。


起動はしたけれどパーミッションが無いなどとエラーメッセージがでたら、
たぶんそれは CYGWIN=ntsec なマイクロソフトドメインの環境です。
マイクロソフトドメインで必要な作業は以下のとおり。
  1. OS に設定している CYGWIN 環境変数を CYGWIN=nontsec に変更して、
    Cygwin 上でのパーミッション制御を一時的に無効にする。
  2. ドメインユーザから生成される passwd/group ファイルを追加する。
    その際に、重複が無いように気をつける。
    私がおすすめする具体的な方法は以下のような方法です。
    $ cd /etc
    $ mkpasswd -d > passwd.domain
    $ mkgroup -d > group.domain
    $ cp passwd passwd.local
    $ cp group group.local
    $ sort -u group.domain group.local > group
    $ sort -u passwd.domain passwd.local > passwd
    # ローカルとドメインの passwd / group ファイルを
    # 分けて保存しておくと意外と助かりますので、おすすめしておきます。

  3. 起動している Cygwin をすべて終了します。
  4. 再度 CYGWIN 環境変数を変更して元通りに設定しなおします。
  5. Cygwin コンソールを再度起動して、id コマンドなどで確認してください。

Cygwin のインストール完了

以上で、Cygwin のインストールは完了です。
基本的にすべて英語ですし、日本語文字列は扱えないことが良くあります。
だからといって落胆しないでください。
これから使いやすくする方法 (一部の日本語化も含む) を記述しています。
まだまだ、これからです!
戻る

Cygwin のアンインストール

アンインストール手法

せっかくインストールしても、やはり必要ない方もいるでしょうし、
それに、再インストールしたいこともあるでしょう。
そういうわけで、アンインストール方法は必須です。

ひとつの方法として、setup.exe を実行して、一番上のカテゴリで
"Uninstall" を選択するというのがありますが、
私はより完全だと思われる方法でのアンインストールをおすすめします。
手順自体は、レジストリを削除して、
インストールしたフォルダごと消すというものです。
ただ、そのまま実行してしまうと、サービスにインストールした
crond や、sshd が残ったままになってしまいますので、
最初にサービスから登録情報を消すようにしましょう。


まずは Cygwin のコンソールから以下のコマンドを実行して
サービスに登録した Cygwin アプリケーションを削除します。
$ cygrunsrv -R サービス名
# 再インストールする際にはこの作業は必要ありません。
# SSHd を ssh-host-config からインストールした場合の
# "サービス名" は "sshd" です。


次に NTFS の ACL で設定しているパーミッションを解除しておきます。
Cygwin のコンソールから以下のコマンドを実行しましょう。
$ cd /
$ chown -R 544:544 ./
$ chmod -R 777 ./

さらに、レジストリから登録情報を削除します。
そのためのレジストリからの削除を行うファイルを準備しました。
Windows 95 / 98 / NT / Me 用:win98-Cygwin-Uninstall.reg
Windows 2000 / XP 用:win2k-Cygwin-Uninstall.reg
対応 OS のものをダウンロードして、実行してください。

最後に Cygwin をインストールしたフォルダごと消せば、
跡形なくアンインストールされます。
Valid XHTML 1.0 Strict Valid CSS!
戻る