Ichmy's Cygwin/Xming

あなたは
1 4 6 4 2 4 0
人目のお客様です。 (本日434人目、昨日473人) (from 2007-09-30)

Cygwin で遊ぼうのこーなー

0.目次

1.このこーなーの概要

2.インストール方法

3.環境整備 ( CUI 編)

4.環境整備 (GUI編)

5.Cygwin でもサーバーを立てて遊ぶ

6.Cygwin が消せないときの対処


1.このこーなーの概要

(1) Cygwin とは

Cygwin とは Windows上の開発ツールで、UNIXのさまざまなツールを Windowsで動作できるようにするもので、 Windows上で、Unixのコマンドが打てたり、UnixのCプログラムがコンパイル実行できたりする、なんちゃってUnix環境です

近年では、本サイトで紹介するようなフリーの仮想環境の発達で、なんちゃってじゃなく、本物のOSが手元のパソコン上で動いたりするので、魅力は半減していますが

UnixのCプログラムをWin上でそのままコンパイル実行できるので、それを生かした使われ方をしています

(2) Cygwin が対応している母艦OS

Cygwin はXP SP3 以降のWindows に対応していることになっていますが、 公式サイトで言及されているのはWin8.1までです。 本サイトでは、無理やりWin10上で動かします。うまく動かなくても泣かない。

(3) Cygwinの日本語化

Cygwinは、一昔前のLinux のように日本語が苦手です。少しでも日本人に使いやすく工夫してみます。

それでも、バージョンが1.7になってからは日本語の扱いがだいぶましになりました。Ver1.5以前の情報を載せているサイトと、やり方がまったく異なっていますのでご注意ください。

(4) CygwinX の紹介 (Cygwinの使われ方の例)

CygwinX とは Cygwin上でコンパイルされたXwindowサーバーで、 Cygwin で作成されたツールの代表として紹介します。 本サイトで紹介するガジェット類は画像が表示できても非常に非力なので Xwindow だけでも外だしすれば多少は動きがましになります。 他の使われ方の例として、windows版qemu も cygwinを使って作成されています

(5) Cygwin でもサーバーを立てて遊ぶ

Cygwin上でも、Linux同様にサーバーを立てて遊びます


2.インストール方法

(1) ダウンロード先

本項執筆時点で Cygwin DLL の最新バージョンは2.4.1 です。 CygwinInstall Cygwin のページから、

Windows 64bitの方は、2段落目の setup-x86_64.exeをダウンロードします。

(Windows 32bitの方は1段落目のsetup-x86.exe をダウンロードしてください)

(2) とりあえず最小インストール

① ディレクトリを2つ用意してください。1つはcygwin実行用、1つはcygwin設定用ワークです。
  筆者はcygwin実行用を“E:\cygwin64”に、設定用ワークを“E:\cygtmp”にしました。
  以下の説明でそれらのディレクトリを選んだものとして説明しますので 適宜読み替えてください。

② “E:\cygtmp”に上記ダウンロードしたsetup-x86_64.exeを放り込んで実行

③ ダウンロード先選択入力には"Install from internet”を選択

④ Root Directory選択入力には先ほど用意した"E:\cygwin64”を入力

⑤ ダウンロードサイト選択はネットワーク的に近いところを選択、筆者は“ftp://ftp.iij.ad.jp”を選択

⑥ パッケージ選択の画面になりますが、今回はすべてデフォルトのまま、後で改めてインストールします
  依存関係のため、いくつかのパッケージを追加インストールするよ。ってでるので「次へ」を押す。

⑦ インストールが開始されます。終わったら、デスクトップアイコン、スタートメニューへの登録をお好みで

⑧ Windowsシステムが「このプログラムは正しくインストールされなかった可能性があります」などと
  余計な事言うかもしれませんが、気にせず「正しくインストールされました」を選択する

⑨ デスクトップに出来たCygwin Terminal アイコンをクリックすると、mintty(端末)経由で、bashが使えます。


3.環境整備 (CUI編)

まずは、標準でインストールされるmintty端末経由で遊ぶ場合から

(1) 方針は大体こんな感じで

① なるべく公式サイト由来のコマンドを使い、設定ファイルでしのぐ
  折角のunix互換環境なので、困ったら自分でコンパイルでいいのですが、アップデート対応が面倒なのと
  少し前までは日本語別パッケージ必須だったのですが、Ver1.7では一昔前のLinux程度までいけるので

② 漢字コードは UTF-8 を使う
  SJIS でもいいのですが、UTF-8が標準なので

③ 使用用途はちょっとしたCプログラムが日本語で書ける程度を想定、 

(2) パッケージのインストール

パッケージのインストールには、上記で使ったsetup.exe を再起動します。

上記ではスキップしたパッケージの画面で選択します、以下は筆者の選択例ですが、お好みで

  Devel/gcc-core、make 、Editors/vim、Net/openssh、openssl、Utils/lv 、Interpreters/ruby

(3) 以下の設定ファイルを修正

① .bash_profile に追記

  export LANG=ja_JP.UTF-8
  export TZ=JST-9
  export PAGER=lv

② .bashrc に追記、これでwindowsの日本語フォルダー名が表示されます

  alias ls='ls -F --color=auto --show-control-chars ' 

③ .inputrc の次の行のコメントアウトを解除 (Allow ... はそのまま)、日本語IMEが使えるようになります

  # Allow 8-bit input/output
  set meta-flag on
  set convert-meta off
  set input-meta on
  set output-meta on 

④ .vimrc を作成、これで vim の漢字コード自動変換機能が生きます。

  set encoding=utf-8
  set fileencodings=utf-8,iso-2022-jp,sjis,euc-jp 

(4) minttyの設定

mintty窓内で右クリックして設定メニューを出し見栄えを調整します。

① 最低限、TextメニューのLocale はja_JPに、Chracater SetはUTF-8 に設定して下さい

② フォントは好みですが、筆者はMSゴシック12ptを設定しました。

③ 設定は .minttyrc に記録されますが、このファイルは漢字コードがSJISで記録されますので、
  lv や、vimの漢字コード自動変換機能を使って読んでください。

(5) Windows と同じ名前のコマンドで文字化け注意

ping など、windowsとunix で同じ名前のコマンドで文字化けすることがあります。以下のようにwindows側が呼ばれると、SJISで答えが返るためです。

  $ which ping
  /cygdrive/c/Windows/system32/ping
  $ ping www.google.com
  www.google.com [173.194.126.208]□ ping □□□□□□□32□□□□ : (□は文字化け部)
  $ ping www.google.com | lv                           (← lv でフィルタ掛けると読める)
  www.google.com [173.194.126.208]に ping を送信しています 32 バイトのデータ:
  173.194.126.208 からの応答: バイト数 =32 時間 =27ms TTL=54 

takuya_1st 様が、ブログ それマグで!でその問題を解決するコマンドラッパーを公開されています


4.環境整備 (GUI編)

ここでは、Xwindow を入れてみます

(1) パッケージのインストール

Xwindow をいれるには(本当は細かく取捨選択すべきなんですが)、X11カテゴリを丸ごと全部、Install にします

(2) Xwindow サーバーの起動

しばらくcygwin に触っていなかった間に、cygwin のXwindow の遊び方が変わったらしい。以下のようにします。

① Xwindow サーバーを起動します

  スタートボタンから 「Cygwin-X」→「Xwin Server」を起動すると、ツールバー(画面右下)にCywin Xserverの

  アイコンと、X aplications menu on :0 の2つのアイコンができます

② Xterm を起動します

  X aplications のアイコンを右クリックすると、メニューが現れ、Xtermが起動できます

  もしくは、上記CUIの端末から、$ xterm & とコマンド入力しても起動できます

  (環境変数DISPLAY=:0.0にするのを忘れずに)


(3) 他計算機からのXクライアントソフトの表示を受け入れるには

① Xwindow サーバーの設定

  上記スタートボタンの「Xwin Server」アイコン(ショートカット)のプロパティを開き、「リンク先」を以下のように

   変更してください。

(変更前)
  E:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"
(変更後)
  E:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/XWin.exe :0 -multiwindow -listen tcp"

② SSH X11 フォワーディング を使う (putty編)

  本当は、ここで xauth の設定方法とかが出るべきなんですが、筆者はよくわからかったので

  putty の SSH X11 フォワーディング機能を使います

   (a) 筆者はLinux ガジェットなど他計算機にリモートログインするのに putty を使ってます。

     今回はこのソフトを使用します。他ソフトの人は次節参照

   (b) putty でSSHを使って他計算機にログインします

     その際にputtyの設定として、「接続」→「SSH」→「X11」のタグで

     「X11フォワーディングを有効にします」にチェックを入れます

     他の項目は空欄で行けました

   (c) 上記ログイン先でXクライアントソフト(xtermなど)を起動するとcygwin側のXに画面が表示されます

     環境変数 DISPLAY は putty が設定しますので、.bashrc など他で設定しないでください

③ SSH X11 フォワーディング を使う (CUI編)

  putty をお使いでない方は

   (a) cygwinに、SSH 関連パッケージ(openssh、openssl)を追加します

   (b) 前章3.のCUI端末から SSH の-Y オプションを使って他計算機にログインします

 $ ssh -Y [他計算機でのユーザー名]@[他計算機のIP]

   (c) 上記ログイン先で、環境変数 DISPLAY をセットします

 $ export DISPLAY=localhost:10.0

   (d) 上記ログイン先でXクライアントソフト(xtermなど)を起動するとcygwin側のXに画面が表示されます


(4) XDMCP でリモートログイン

ここでは XDMCP を用いて他計算機にログインして、リモートデスクトップをパソコン上に表示して遊びます。

前節(3)では、各個別のXクライアントがcygwin側のXに表示されましたが、今節では、他計算機のデスクトップ丸ごとcygwin側のXで表示されます

① ガジェット側のリモログ許可設定

 (a) GuruplugDisplay( Debuan Lenny ) の場合

   GNOMEメニューの[デスクトップ]-[システム管理]-[ログイン画面]での「ログイン画面の設定」画面で
  「リモート」タブ で、スタイルを<リモート・ログインを無効にする>から<ローカルと同じにする>に変更

  /etc/hosts.allowも たとえば192.168.0.* からログインするには以下追加

  gdm : 192.168.0. 

② Cygwin側のMintty 端末から以下実行

  $ XWin -screen 0 1024 768 -query [ログイン先IP] 

これで、ガジェット側の画面で操作するのと同じことが出来ます。


5.Cygwin でもサーバーを立てて遊ぶ

unix 互換環境なのだから、やはり各種鯖が立たないと面白くありませんよね。でも Windowsと共存し、つじつま合わせるためlinuxとは異なる手続きが必要です。

(1) cygwin でサーバを立てる際の大まかな流れ

① 必要なパッケージ をインストールする

② サーバのプログラムをWindows のサービスとして登録する

③ サーバ を起動する

④ Windowsパソコン外からアクセスするにはファイヤーウォールの解除

(2) 各サーバに共通する一般的作業

① 各サーバーを立てるには、まず各パッケージの名前の付いたパッケージをインストールしてください

サーバ名 パッケージ
apache2 Web/apache2
cron Admin/cron
pure-ftpd Net/pure-ftpd

② サーバのプログラムをWindows のサービスとして登録する

<以下は“Windows”の管理者権限が必要なので、Cygwinプロンプトを右クリックで管理者として実行のこと>

サーバ名 登録コマンド
apache2 (事前準備として右2コマンド実行) ① cygserver-config ② net start cygserver
cygrunsrv --install apache2 --path /usr/sbin/httpd2 --args -DFOREGROUND --env "CYGWIN=ntsec binmode server"
cron cygrunsrv --install cron --path /usr/sbin/cron --args -n
pure-ftpd cygrunsrv --install pure-ftpd -d "CYGWIN pure-ftpd" --path /usr/sbin/pure-ftpd.exe

③ サーバ を起動する

  $ net start [[サーバ名]]   (逆に停止するには  $ net stop [[サーバ名]] )
  ( ※ cron の場合は )  $ cygrunsrv -S cron

④ 起動できたか確認するには

  $ cygrunsrv -Q [[サーバ名]]

⑤ Windows のサービス を登録解除するには

  $ cygrunsrv --remove [[サーバ名]]

   詳細は /usr/share/doc/ 下の各サーバごとのドキュメントに説明されてますので読んでください

⑤ Windowsパソコン外から[[サーバ名]]にアクセスするにはファイヤーウォールの解除が必要です。

  (a) 「スタート」-「コントロールパネル」より「システムとセキュリティ」をクリック。
  (b) Windowsファイアウォール内の「Windowsファイアウォールによるプログラムの許可」をクリック。
  (c) 「設定の変更」をクリックし、「別のプログラムの許可」をクリック。
  (d) 「参照」をクリックし、/usr/sbin/[[サーバ名]].exe のある場所を指定し、「追加」をクリック。
  (d) 許可されたプログラムおよび機能の一覧に [[サーバ名]] が追加されたことを確認し、「OK」をクリック。


6.Cygwin が消せないときの対処

Cygwin には、アンインスーラが残念ながら無いので、アンインストールしたいときは、ファイルとレジストリを自分で消すのですが、所有権がどうのと言ってファイルが消されるのを拒否される場合があります

管理者権限を持つ私に歯向かうとは、何とも生意気な奴なので、対処法をメモします。元ネタはケモケモ様ブログ、T2-Wonderlandです。

OS伝説で遊ぼうのこーなーへ戻る


ichmy本家サイト

OS伝説で遊ぼうのこーなー