cygwin インストールメモ

初版作成  2006.4
最終更新  2024.04.01


◆◆ インストール ◆◆


cygwin.com に接続する。を実行する。

デフォルト設定でインストールすると、

インストール先     C:\cygwin
パッケージ置き場   C:\user-home\downloads

となる。

私はパッケージ置き場は  C:\cygwin\package (手動で作成) に変更した。

ダウンロード元は ftp.jaist.ac.jp にした。

デフォルトでは以下のコマンドはインストールされない。
make, emacs, tcsh, gfortran, patch

最初にインストールしなかった場合、setup.exe を実行して
追加インストールする。

setup.exe (ダウンロードにある) は
何回でも使うので C:\cygwin に置いた。

fortran は gfortran がインストールされるので

  # cd /usr/bin
  # ln -s gfortran f77

として f77 でコンパイルできるようにしておく。

<追加情報>

2015.10 は setup-x86.exe と setup-x86_64.exe に分かれている。

2015.11 現在、古い setup.exe で接続すると unable to get setup.ini という
エラーが出て追加インストールできない。setup-x86.exe か setup-x86_64.exe の
いずれからをダウンロードしてきて使うこと。


◆◆ ログインの仕組み ◆◆


cygwin のアイコンは c:\cygwin\cygwin.bat への
シンボリックリンクである。中身は以下の通り。

-----------------------------
@echo off
C:
chdir C:\cygwin\bin
bash --login -i
-----------------------------

bash.exe が実行される。bash は当初コンソールアプリであったが、
2015.9.8 にインストールした cygwin の bash は
c:\cygwin\bin\mintty と同一である。

デフォルトではフォントが小さいので、
「右クリック」→「options」で設定する。

  $ pwd

の結果は /home/user-name である。

/ の実体は C:\cygwin である。

/home/user-name の実体は C:\cygwin\home\user-name

tcsh を使いたいときは、bash でログインした後、tcsh と打てばよい。


◆◆ make の注意点 ◆◆


(1) C++Builder との競合

bash.exe を起動すると、path 変数は /usr/bin などの Unix の
基本的なパスと Windows で設定されていたパスの両方が設定される。

cygwin の make をインストールしていない状態で、
C++Builder ver.1 をインストールしている場合、
make と打つと、C++Builder 付属の make コマンド
が起動される。この make コマンドは cygwin の make とは異なる構文規則
を持つので、エラーが発生する。

どの make を使っているかは which make で確認できる。

(2) 生成するコマンド

abc : a.o
        cc -o abc a.o

と書いてある場合、cc の結果生成されるファイルは abc ではなく abc.exe
である。

ygwin の make コマンドは abc というファイルが存在しない場合、
abc.exe と a.o のタイムスタンプを比較する。

abc というファイルが存在する場合、abc と a.o を比較する。
abc は make しても更新されないので、make が永遠に終わらない。

Linux や FreeBSD で開発したフォルダを cygwin 用にコピーした場合、
最初に

  $ make clean

を実行してバイナリを削除する。

次に、make clean と打ったときに *.exe ファイルが削除されるよう、
Makefile を書き換える。


◆◆ ターミナルエミュレータ ◆◆


cygwin.bat をダブルクリックすると bash.exe が起動する。
それ以外に、

  c:\cygwin\bin\mintty.exe

というターミナルエミュレータもある。

以前は bash.exe はコンソールアプリ、
mintty.exe はウィンドウズアプリだったが、
2015.9.8 にインストールした cygwin においては、
bash.exe と mintty.exe は同一である。

mintty は「右クリック」→「options」でフォントサイズを
変更できる。

以前の mintty ではフォントを「MS ゴシック」に変更したら、
デフォルトのフォントである Lucretia ? に戻せなくなってしまった。

mintty は行間を広くするオプションが見当たらない。

kterm や mlterm なら -lsp オプションがあるので、
mlterm の方が良いように思われる。


◆◆ X11 を使うプログラムのインストール 2013.5 ◆◆


   X11 -- libX11
   X11 -- libX11-devel

をインストールすると libX11.a をリンクしたり
X のインクルードファイルが使えるようになるようだ。
nsgraph がインストールできた。


◆◆ kterm のインストール 2013.5 ◆◆


UTF-8 が使えないという欠点はあるが、昔から使っている kterm を使おうと
思い、コンパイルしてインストールする。
まず、

   X11 -- libX11
   X11 -- libX11-devel

をインストールした。次に X11 全体をインストールした。
リンク時に ncurses がないというエラーが出るので

ncurses 関係もインストールされている必要がある。
ncurses で検索し、devel 以下の ncurses 関係のものをインストールする。

kterm-6.2.0 のソースファイルやパッチの当て方の説明は
このサイトにある。
ただし、パッチを当てる部分に誤植がある。

パッチは このサイト にある。

   $ tar zxf kterm-6.2.0.tar.gz
   $ cd kterm-6.2.0
   $ patch -p1 < ../kterm-6.2.0-cygwin.patch    ( < の向きに注意) 。
   $ xmkmf
   $ make
   $ make install

以上で /usr/bin/kterm.exe が作成される。

  ctrl + マウス中ボタン

で漢字コードを EUC にする。デフォルトは S-JIS


◆◆ mlterm のインストール 2015.9 ◆◆


cygwin mlterm で検索すると

   http://mlterm.sourceforge.net/cygwin-msys.html

に mlterm がある。cygwin, Windows, Android 版がある。
cygwin 版をインストールしたが、X ではなく windows アプリケーション
のようだ。

   mlterm-cygwin-201xmmdd.zip

というファイルがある。展開した後、

   (1) bin ディレクトリ内の全てのファイルを c:/cygwin/usr/bin にコピー
   (2) etc フォルダ以下を c:/cygwin/etc  以下にコピー
   (3) lib フォルダ以下を c:/cygwin/lib  以下にコピー

で mlterm が使えるようになった。FreeBSD で使用している
このファイル を

   ~/.mlterm

以下にコピーする。


◆◆ lxterminal 2015.9 ◆◆


ラズベリーパイの標準ターミナルである lsterminal をインストール
してみる。

shells の下にある。


◆◆ nkf のインストール 2013.5 ◆◆


sourceforge.jp から nkf-2.1.2.tar.gz をダウンロードする。

   $ tar zxf nkf-2.1.2.tar.gz
   $ cd nkf-2.1.2
   $ make
   $ cp nkf.exe /usr/bin


◆◆ プリンタの設定 2013.5 ◆◆


ポストスクリプトプリンタが接続されており、PS ファイルが作成済
であることを仮定する。

Windows 7 上で「コントロールパネル」→「デバイスとプリンター」
「プリンタを右クリック」→「プリンターのプロパティ」→
「プリンタ名をクリック」→「ポート」で
プリンタに対応するポート名を見ることができる。
USB に接続されている場合は USB001,
ネットワークプリンタの場合は IP_192.168.xx.yy のような名前になっている。
この名前を、

   % setenv PRINTER USB001 ( csh 系の場合 )
   $ export PRINTER=USB001 ( sh 系の場合 )

のように PRINTER 環境変数に指定する。

   $ lpr ps-file-name

でファイルが、そのままプリンタへ送られ、印刷される。


◆◆ X server のインストールと起動 2013.5 ◆◆


setup.exe で X11 全体を「install」としてインストールすると、
X 関連のものが多数インストールされる。

   $ startx

で X server が起動し、xterm が 3 つ作成される。
X server はネットワーク通信をする Windows アプリとしてふるまう。

startx はシェルスクリプトで内部で xinit を呼ぶ。
xinit は Windows のアプリケーションで内部で /usr/bin/X を呼ぶようだ。

Astec-X などの市販の X Server を持っている人は
それを起動して使う方が良いと思われる。

DISPLAY 環境変数の設定は以下の通り。

   setenv DISPLAY 127.0.0.1:0.0 ( tcsh の場合 )
   export DISPLAY=127.0.0.1:0.0 ( bash の場合 )


◆◆ ソースファイルの取得方法 (この記事は古くて役に立たない) ◆◆


   % setenv CVSROOT :pserver:anoncvs@cygwin.com:/cvs/src ( tcsh の場合 )
   % cvs login
     パスワードは「anoncvs」
   % cvs checkout winsup


◆◆ emacs の設定 (ここの記述は古い) ◆◆


上記の手順でコンパイルした kterm は nkf で実験すると、
iso-2022-jp と Shift Jis は表示するが、Euc は文字化けが起こる。
そこで、emacs -nw で起動する場合、次の 2 つを実行する必要が
ある。

  M-x set-language-environment Japanese
  M-x set-terminal-coding-system sjis-dos

.emacs に書く場合は、

( set-terminal-coding-system 'sjis-dos)
( set-language-environment "Japanese")

Windows の IME を利用して日本語を入力する場合、

( set-keyboard-encoding-system 'sjis-dos)

を .emacs に書く。

私の kterm + emacs -nw の場合、
「Alt + 漢字」の操作後、「何か一文字入れる → Ctrl-H」を実行した後
でないと、正しく日本語が入らない、という現象が発生している。


◆◆ 私が使っている設定ファイル (古い) ◆◆


ここに私が使っている設定ファイルなどを
置いておく。


◆◆ X Server 2015.9 2015.10 2016.2 ◆◆


  $ startx &

で X Window System が起動する。

デフォルトで twm と xterm が起動することが多いが、
何も起動しない場合は、最初に起動した cygwin terminal で
次のように打つ。

  $ export DISPLAY=localhost:0.0
  $ xterm &

xterm の中で

  $ twm &

xterm は漢字が使える。
色は VT Options --- Enable Reverse Video で黒にする
フォントは VT Fonts --- Large で大きくする

X に切り替えるにはタスクバーの右下の X のロゴの
アイコン(▲印の中に隠れていることもある)をクリックする。

ASCII キーボードになるので、右下タスクバーの
「ENG」をクリックして「日本語」を選択すると JIS キーボード
になる。

2015.9 にインストールした X Server は外部からの接続を
受けつけない。

   % setenv DISPLAY :0.0             OK

   % setenv DISPLAY localhost:0.0    NG
   % setenv DISPLAY 127.0.0.1:0.0    NG

2013.5 にインストールした cygwin (startx で xterm が 3 つ
起動する) の X server は問題ない。

(参考)http://kurokawh.blogspot.jp/2015/09/cygwin-cygwinx-serverxwin.html

XWin.exe の起動パラメータに -listen tcp を
追加すればよい。

/usr/bin/startx は bsh script である。オプションを以下のように設定する。

defaultserverargs="-listen tcp"

   $ xhost +

を忘れないように。


Windows8 の場合は、Windows ファイアウォールが外部からの
接続を妨害する。

「コントロールパネル」→「Windows ファイアウォール」→
「Windows ファイアウォールを介したアプリまたは機能を許可」

「設定の変更」

Xming X Server, xwin に対して許可を出す。

初回の X Window System の起動時に接続を許可するか否か聞いて
くるので、「許可する」をクリックする。


◆◆ 2012 頃の cygwin と 2015 の cygwin の違い ◆◆


3 年ほど前にインストールした 32 bit 版 cygwin の X Server と
2015.9 にインストールした 64 bit 版 cygwin の X Server は
以下の違いがある。

2012 頃の cygwin
  /usr/bin/telnet がある
  X server で存在しないサイズのフォントを要求されたとき、
  適当に別のサイズのフォントを拡大・縮小するようだ。