Computer

cygwinのインストール

今回(2004年5月7日~12日), 約1年ぶりにcygwinをインストールした.古い説明はこちらにある(一応).
今回cygwinインストールするきっかけは, 私の所属する研究室の先生の担当講義で, 『大学のLinuxマシン&インストールしてあるソフト(X上で動く)を使用して, 研究室用意したスクリプトを実行してレポートを作成する』ということがある. 私はTAとしてこの講義に関わっていて,先生から全てを任されている. 当然スクリプトも私が書いたのだが,当然,事前に準備&動作確認が必要である. でも,いちいち大学のコンピュータ室に行くのが面倒である. また,講義資料も同時に作成する必要があるため,Windows環境が必要不可欠である.
そこで,Windowsマシンで,大学のLinuxマシンのXをWindows上で使えないかと思っているときに, Linux Magazineの2004年5月号で 「かんたんXサーバー・スターターキット+IMEプロキシ」 というソフトが紹介されていた. しかも3150円(税込み).買おうか悩んだ挙句,とりあえずcygwinでできるならタダなので・・・. ということでインストールをしてみることになった.
(今回は物語風でこのページを記述することにする.)

インストール

インストールは前回インストールした方法とほとんど同じだった(結果的に). ここ を参考にした.
さらに,インストールのパッケージの選択は,デフォルトに加え,
Devel
Editor
Net -> OpenSSH,OpenSSL
X11
XFree86
を選択した.フルインストールしてしまっても良かった (実は,このあと困ったXの設定を解消しようと,追加でフルインストールした) のだが,とりあえず時間の節約のために,この程度とした.

インストールに多少の時間がかかったが, インストールがめでたく終わり,次に日本語化の設定をすることにした.
私の友人は,「別に日本語化なんてする必要ない」と言って,自分の環境では全てデフォルトのままらしい. ひょっとするとキーボードも日本語のままか?
とりあえず,私は日本語化をしておく.先に参考にしたサイトの次のページ を参考にした.まぁ,実際にはこっちを参考にしていることになるのだが・・・.
これでインストールは一通り終了と思われる.

Xの設定

さて,ここからが苦戦したところである.そう,Xの設定.
ホームディレクトリに.xinitrcとか.xseverrcファイルがなければ, /usr/X11R6/bin/startxファイルをいじればよいみたいであるが,日本語化の設定をすると, .xinitrcと.xseverrcのファイルはできているはずである.
ここでは,
.xinitrc(抜粋)
export DISPLAY=127.0.0.1:0.0
xhost +
(中略)

#twm &
#wmaker &
#openbox &
#fvwm2 &
/usr/local/bin/blackbox &
#この5行の中から,使いたいGUIを選択.

#xclock -geometry 100x100+917+0 &
xeyes -geometry +0-0 &
kterm -geometry +0+200 -sl 1000 -sb -ms red -fg white -bg black -km euc &
kterm -geometry -100+300 -sl 1000 -sb -ms red -fg white -bg black -km euc &
exec xterm -geometry 80x10+0+0 -name 'login'
#kterm -geometry 60x12+63+0 -title 'kterm' -km euc -e bash
#X起動時に自動的に起動させるソフトを記述.
.xseverrc(抜粋)
#exec XWin -emulate3buttons 200 -rootless
#exec XWin -multiwindow
exec XWin -screen 0 1024x768x256
#Xのモードの指定.
というように記述した.
.xinitrcでは,主にGUIの選択と,X起動時に自動的に起動させるソフトを記述しておくのがメインである. (最初のはおまじない.xhostは後述.) 特に起動させるソフトは,今回は,xeyesとターミナルを初期位置を固定させて起動させた. またターミナルはスクロールできるように-sl 1000 -sbとしておいた.
GUIの選択は,.xseverrcでXのモードがscreen(もしくはfullscreen)かrootlessである必要がある. (その他のオプションは良くわからん.使わないし.)
またblackboxを使いたかったので 公式サイトから0.62.1をDLしてインストした.

これでXをstartxで起動させられるのだが,「.Xauthorityファイルがない」と怒られた. なので,とりあえず,空の(でいいのか?).Xauthorityを作成して対応した. (これでうまく行ったからいいか.)

その他の設定

その他,とりあえず,他のLinuxの設定と同じように,.bashrcファイルにaliasを設定したりした.
ついでに,Javaの設定をした.これはX上でWindowsのJavaを利用するためのものであるらしい. ここを参考にした.
.xinitrc(.bashrc)のPATHに/usr/local/jdk/bin:を追加.
$ mkdir /usr/local/jdk /usr/local/
$ ln -s /cygdrive/c/j2sdk1.4.2_04/bin /usr/local/jdk/bin
これでjavacコマンドを試して,説明が出てくればよい.

問題点

さて,これでsshでつないでXが使える.
と思ったさ.(口調が変わったw)
でも,sshで画面を飛ばしてくるのがうまくいかない.当然,ssh -Xで接続しているのに.
自分の研究室(しかもcygwinをインストールしたマシンと同じネットワーク上)にVine2.6r4 をインストしたマシンと,そのほかに大学のサーバが2種類, それから別環境にあるcygwin(大学設置のマシンにインストされてる)から それぞれ(計6パターン)試してみた. 明らかにサーバ側のソフトとcygwinのWindowのスタイルの相性の問題 (具体的には,マルチウインドモードならばXがきちんと起動するが,それ以外は無理) というのもあったが, Mozillaなどは,別環境のcygwinからはXがきちんと飛んでくる. ということは,自分でインストールしたcygwinか,ネットワークのポートの問題である(と推測した).

とりあえず,ネットで調べた限りでは, sshとか(telnetも)で接続する前に,接続先,つまりホストのIPアドレスやホストの名前を,
xhost +(Host IP or Name):0.0
と打ち込む. もしくは,最初から.xinitrcに書き込んでおく. このときには,
xhost +
だけでよいだろう.
その後sshで接続.さらに,接続元,つまり今使っているマシンのIPアドレスを調べておき,
export DISPLAY=IP:0.0
と打ち込む. さらに,ターミナルを開いて,その上でMozillaとかを起動する.
接続先によっては,xhostの設定が,
xhost (Host IP or Name):0.0
や,
xhost +
としたり, Displayの設定が,
setenv DISPLAY IP:0.0
と微妙に違うこともあるみたいだ.
(exportがB-shellで,setenvはC-shellらしい.)
これで設定したら,とりあえず同じネットワーク内にあるVineからはXが飛んできた. でも,ソフトによっては無理なものもあった・・・. また,この対処法を受け付けてくれないサーバもあった. これはポートの問題だろうか・・・.
結局のところ,よくわからないw というのが結論.

最後に

とりあえず,使えないことはない.Blackboxなんかは軽くて使いやすいし. 必要なことはできるといえばできる. 個人的には,Windowsを利用しながらサーバ側のXが簡単に使えることを望んだのではあるが, インストールや設定がここまで面倒だとは思わなかった.
「X on Windows 2」とか 「かんたんXサーバー・スターターキット+IMEプロキシ」 といったcygwinベース(?)のソフトが市販されているが,このソフトを入れて, 求めているものが確実にできるのかは怪しいところである.
マシンのスペックや予算によっては,VirtualMachine, 例えば,VMwareやVirtualPCをインストールして, その中に,軽い(カスタマイズした)Linuxをインストールしたほうが確実かもしれない.


2005年9月13日追記:ここを参考にしてみた.
2005年9月20日追記:Xの設定はここを参考にした. また,13日に追記したサイトの設定だが, .bashrc の設定の「export HOME="C:/cygwin/home/test"」はNG. 「export HOME="/cygdrive/c/cygwin/home/test"」(testは実際はユーザ名)が正解っぽい.
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

export SHELL=C:/cygwin/bin/bash
export HOME=/cygdrive/c/cygwin/home/satoru
export TMPDIR=C:/cygwin/temp
export LANG=japanese-sjis
export TZ=JST-09
export MAKE_MODE=unix

export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin

export PAGER=less
export JLESSCHARSET=japanese-sjis
export LV="-Osjis"

PS1="$USER@$HOSTNAME:\w$ "

if [ -n ${DISPLAY} ]; then
    export DISPLAY=localhost:0.0
fi

if [ ! -n "${TERM}" ]; then
    TERM=cygwin
fi

alias ls="ls -F --color=auto --show-control-chars"
alias rm="rm -i"
alias mv="mv -i"
alias cp="cp -i"
alias xin='(cd; startx > .startx.log 2>&1) &'
.bash_profileにstartxと記述するとCygwinの起動時にXの自動起動ができた.

また,Xのターミナル(Kterm)上で日本語を表示させるために, .xinitrcファイルのktermを起動している部分を
kterm -geometry +5+5 -title 'kterm' -km sjis -e bash
とShift JISを用いるようにした.
(日本語化されたrxvfをインストールしてもよいらしいがうまくいかなかった.)
Valid HTML 4.01 Transitional Valid CSS!
Copyright© Satze.net All rights reserved.