Cygwin

Cygwin 1.5 あたりを対象に書かれてます。
[最終更新日: 2008/04/18]

1. 環境設定

| INDEX

setup.exeでインストールしたあと、Windowsに各種の環境変数を設定する。

システム環境変数の Path に cygwin1.dll の場所(例: [略];c:\cygwin\bin )を足す。

ユーザ環境変数に以下の値(例)をセットする。

CYGWIN = ntsec
HOME = /home/(UserName)
MAKE_MODE = UNIX
SHELL = /bin/bash
TMPDIR = /tmp

あと、TMP = /tmpを設定したほうがいいかもしれない。ちなみに、TMP ,TMPDIR あたりが設定されていないと、ウチの環境ではgccがコア吐いてお亡くなりになったような覚えがある。

ユーザ変数は、シェルの設定ファイルで定義しても問題はなさそう。cygtermを利用している場合、cygterm.cfg に設定して渡してもいいかと。

2. sshd

| | INDEX

ssh-host-config で簡単に設定できる。

> ssh-host-config
[略]
> cygrunsrv -S sshd  #サービス開始
> cygrunsrv -E sshd  #サービス停止
> cygrunsrv -R sshd  #サービスの登録を削除

3. Apache 1.X

| | INDEX

※Apache 2系列に移行したため、現在の状況は知りません。。。

/etc/apache/httpd.conf には、以下のユーザとグループを設定する。

User SYSTEM
Group SYSTEM

サービスへの登録(cygrunsrv)

1.3.29-1 以降
cygrunsrv -I httpd -d "CYGWIN httpd" -p /usr/sbin/httpd.exe -a -F
1.3.29 以前
cygrunsrv -I httpd -d "CYGWIN httpd" -p /usr/sbin/httpd.exe -a -k
> net start httpd     #サービスの開始
> net stop httpd      #サービスの停止
> cygrunsrv -R httpd  #サービスの登録を削除

4. Apache 2.X

| | INDEX

※lighttpdに移行したので、現在の状況は知りません。。。

apache 2.Xについては、cygserverの元で動くので、事前にcygserverの設定をしておく。

> cygserver-config

NTサービスへの登録の有無などの質問に答えてコンフィグ完了。

Windowsの環境変数CYGWINに"server"の文字列を追加する。(例:CYGWIN=ntsec server

あとは、apache2を適宜設定して、起動するだけ。

> /usr/sbin/httpd2.exe -k start

タスクスケジューラあたりでマシン起動時にサービス開始をすることが可能。

5. lighttpd

| | INDEX

lighttpd(1.4.15)をcygrunsrv経由でサービスとして実行する。

> cygrunsrv --install lighttpd --path /usr/sbin/lighttpd --args \
"-D -f /etc/lighttpd/lighttpd.conf" --stderr /var/log/lighttpd/syserr.log

6. bash 環境設定

| | INDEX

とりあえず、めったにbash使わないので、.bashrcの書き方もメモしておく。

環境変数
export SHELL=/bin/bash
パスの追加
export PATH=$PATH:'/bin'
aliasの設定
alias rm='rm -i'

.bashrcに日本語環境に関する設定をしておく。

alias ls='ls --show-control-chars -F' 
export LANG=ja_JP.SJIS
export JLESSCHARSET=japanese-sjis

つぎに、~/.inputrc を作成する。

# ~/.inputrc
set kanji-code sjis
set convert-meta off
set meta-flag on
set input-meta on
set output-meta on

7. tcsh 環境設定

| | INDEX

基本的な書式

環境変数
setenv EDITOR vi
パスの設定
set path=(/bin /sbin /usr/bin)
パスの追加
set path=($path ~/bin)
alias の設定
alias ls 'ls -F'

プロンプトのスタイルを変更

# [%P,%T] date & time
# [%Y %y,%W %w,%D,%d] year,month,day,week
# [%m] host_name
# [%n] user_name
# [%/,%c] current_directory
# 0:default 1:bright 4:underline 5:blink
# FG / 37:white 30:black 31:red 32:green 33:yellow 34:blue 35:purple 36:cyan
# BG / 40:black 41:red 42:green 43:yellow 44:blue 45:purple 46:cyan 47:white
set prompt='%{\e[31m%n@%m%} %{\e[33m%/\e[00m%} \
% '

8. Windowsとのpasswd同期

| | INDEX

たとえば、cygserverが

cygserver: WARNING: User not found in /etc/passwd! Using uid -1!

のようなエラーをイベントログに出しているときなど、/etc/passwd, /etc/groupを更新すると良いらしい。以下のコマンドを使う。

mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group

9. SJIS日本語ディレクトリの扱い

| INDEX

Cygwin側もShift_JISで使っていれば問題ないのだけど、EUC-JP環境export LANG=ja_JP.eucJPなどしてる場合、cdするのさえ困る。

そういうときは、とりあえず非常に面倒なのだけど、

cd `echo "日本語DIR名" | nkf -s`

のようにして、無理やり日本語ファイル名などを指定してみる。

.