Cygwin -- Windows で Unix 環境を利用する。

Ads

インストール

  1. cygwin のサイトの setup.exe を実行してミラーサイトと必要なパッケージを選択して進んでいけば簡単です。
    • インストールパッケージで _PostInstallLast を入れておくと一通りの初期設定をしてくれるのでインストールしておくのが良いです。
  2. 環境変数PATHの設定 必ず必要なわけではないがcygwinでサービスを動かそうと思った場合にDLLが見つからないというトラブルの元になるので、要らぬトラブルを避けるために設定しておくと便利です。
    • システム環境変数 PATH に C:\cygwin\bin を追加します。

アップデート

  • setup.exe を実行してポチポチ先へ進んでいけけば、それで新しいバージョンがあるものはアップデートされます。

Windowsアカウントをcygwinに反映させる

cygwinプログラム中の認証エラーや、自分で作ったファイルの上書きが出来なくなった等、認証や権限関係で挙動がおかしいときは以下の手順を行うことで回復することが多いです。

  • Windows のローカルアカウントを passwd と group に反映させる
    • mkpasswd と mkgroup を使って /etc に passwd ファイルと group ファイルを作ります。
      mkpasswd -l > /etc/passwd
      mkgroup -l > /etc/group
  • ドメインアカウントを passwd と group に追加する。
    • ドメインコントローラを利用している場合は以下の手順でドメインのアカウントを利用できるようにします。
      mkpasswd -d >> /etc/passwd
      mkgroup -d >> /etc/group

inetd を動かす

  • サービスとしてインストールする
    • 以下のコマンドを実行するとCYGWIN inetdという名前でサービスとしてインストールされます。
      /usr/sbin/inetd.exe --install-as-service
      必要な DLL にパスが通っていないとエラーで起動できないので、システムの環境変数PATHに C:\cygwin\bin を追加しておくと良い。
    • 不要なサービスを止める
      • /etc/inetd.conf にはデフォルトで沢山の不要なサービスが動くようになっています。
      • 不要なサービスは行頭に # を書いてコメントアウトしましょう。
    • 必要なサービスを動かす
      1. /etc/inetd.conf を編集する
      2. CYGWIN inetdサービスを再起動する。
  • サービスをアンインストールする
    • 以下のコマンドで inetd をサービスから削除できます。
      /usr/sbin/inetd.exe --remove-as-service

cron を動かす

  • コマンドラインで動かす
    • cygwin のコマンドラインで以下を実行すれば cron は動きます。
      /usr/sbin/cron
      または、C:\cygwin\usr\sbin\cron.exe を直接 Windows で実行すればバックグラウンドで cron が動きます。
    • ただしこのやり方だと cygwin プロンプトを閉じると cron も終了してしまいます。
    • この方法だとcronを実行したユーザがログオフするとcronが終了してしまいます。
    • ログイン前やログオフ後などにも動かしておきたい場合は cygrunsrv というコマンドを利用してサービスとして動かす方法もあります。
  • サービスとして動かす
    • cygwin のプログラムをサービスとして動かすには cygrunsrv を使います。
    • cygwin プロンプトで以下を実行すれば cron が Windows のサービスとして動作するようになります。
      cygrunsrv -I cron -d "CYGWIN cron" \
        -p /usr/sbin/cron.exe -a -D \
        -e "PATH=/usr/local/bin:/usr/bin:/bin"
    • cygrunsrv の使い方は以下のようにすれば表示されます。
      cygrunsrv --help
    • cron サービスをアンインストールするには以下のようにします。
      cygrunsrv -R cron
  • cron がエラーで起動できない場合は以下の点を確認してください。
    • DLLが見つからないというエラーの場合はシステムの環境変数PATHに C:\cygwin\bin を追加すれば大抵解決します。
      • サービスとして動いている場合は環境変数を反映させるのに Windows の再起動が必要になります。
    • 既に cron が動いている場合はエラーになります。
    • 他に cron が動いていない場合は /var/run/cron.pid を削除すると直ります。
    • 他の原因の場合はエラーメッセージを見て判断してください。
      • サービスとして動かしている場合は Windows のイベントログにエラーメッセージが出るのでイベントビューアで確認できます。

sshd を動かす

  • sshd をサービスとして動かす。
    • まずは以下のコマンドで必要な設定ファイルの作成を行います。
      ssh-host-config
      • 各種設定ファイルが作成された後にいくつか質問がありますが全て Enter または yes と答えていきます。
      • 途中でサービスとしてインストールしますか?とい質問項目がありますが、そこで yes と答えるとそのまま Windows にサービスとしてインストールされてしまいます。
  • sshd を設定を変えて動かす(面倒でトラブルも多いのでお勧めしない)
    • ssh-host-config 以外の方法で sshd を動かすのは結構骨が折れる作業なのでやめたほうが良いです。
    • 例えば22番ポートではなく20022番ポートで LISTEN するようにするには以下のようにします。
      • /etc/sshd_config のパーミッションを書き込みが出来るように変更します
        chmod 666 /etc/sshd_config
      • /etc/sshd_config の Port を 22 から 20022 に変更します。
        vi /etc/sshd/config
      • /etc/sshd_config のパーミッションを元に戻します。
        chmod 644 /etc/sshd_config
  • 実際に ssh でログインしてみる
    • cygwin で動かしている sshd では Windows のアカウントが利用されます。
    • アカウントを追加したり削除するには Windows のローカルアカウントかもしくは Widnows が参加しているドメインにアカウントを追加して passwd ファイルを作り直す必要があります。
      • Windows のローカルアカウントかドメインアカウントを追加及び削除する。
      • 『Windowsアカウントをcygwinに反映させる』で書いたように mkpasswd と mkgroup を使って passwd ファイルと group ファイルを作り直します。
      • パスワード変更の場合は何もする必要はありません。
      • パスワードの変更は Windows 上で行っても良いですが passwd コマンドでもパスワードを変更することが出来ます。
  • sshd をサービスから削除する。
    • ssh-host-config を使って sshd をサービスにした場合は cygrunsrv を利用するようになっている筈なので以下のコマンドでサービスから削除することが出来ます。
      cygrunsrv -R sshd

PostgreSQL を動かす

でぃすきぃぱすCygwin/PostgreSQL*1

というWikiなサイトがとてもとても参考になる。

これからの人は、折角なので postgresql-7.4.2-1 以上であることを確認して、cygserver を利用したセットアップをしたほうが良い PostgreSQL 8.0 以降は Windows 版が出来たのでそちらを使うべき。

Cygwin+PostgreSQL は過去の遺物となった。

コメント

  • cygwinプロンプトを閉じなければLinux上のcronとして機能するって事でしょうか? -- 2004-01-07 (日)
    • そうです。今確認してみたらcygwinプロンプトを閉じてもcronは終了しませんでした。単にプロンプトかもしくはWindowsから直接cron.exeを実行しておけば機能します。 -- KaWaZ 2004-01-11 (日) 18:00:08
  • 桜満開姫路城 - Cygwin + PostgreSQL もよい感じです。 -- discypus? 2004-07-14 (水) 21:15:08
  • cronはlinuxのそれとは多少違うみたいですね。/var/logにはログが出力されない。イベントビューアの方に出力されるみたいなのでfreesoftのdumpeventlogやxpに入っているeventquery.vbsでもってlogを/var/log/cron.logに書くスクリプトを組むと良いかも。 -- commenter? 2004-12-22 (水) 16:57:19
  • あと、cygwin1.dllが無い、という場合は単にpathの設定だけでは動かないと思いますよ。Win32のDLLと同じ用にcygwin1.dllを%systemroot%にコピーする必要があると思います。cygwin.dllがバージョンアップされたら%systemroot%の方の更新も忘れずに。 -- commenter? 2004-12-22 (水) 17:01:05
    • いや、その為に C:\cygwin\bin にパスを通すのでは…?cygwin1.dll がそこにあるから。 -- 2004-12-23 (木) 14:23:53

*1 URL変更したので書き換えました。…とはいえ、PostgreSQL 8.0.0 も出たことですし、需要は減るかも。 -- 2005-02-12 by discypus

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-03-07 (水) 23:11:30 (3433d)