Solaris 10サーバにscreenをインストールする
Windowsと違い、SolarisをはじめとしたUNIX、あるいはLinuxといったOSはサーバ用途として使用されることが多いですが、これらのサーバを操作する主な方法は、Windowsパソコンからターミナルソフトを使用したtelnetまたはsshでのリモートアクセスだと思います*1。こんな感じです。
screenはこのリモートアクセスが便利になるツールです。具体的には以下の機能があります。
- 切断してもリモートアクセス状態を維持できる(従来は切断したら状態は残らない)
- 複数のリモートアクセスを一つの画面で操作可能(従来はリモートアクセスする度に一つ画面が表示されるので数が増えると煩雑になる)
リモートアクセスしてUNIXやLinuxを使っている人でなければありがたみを感じない機能ですが、逆にたくさんリモートアクセスを利用する人には非常に便利となります。
特に「切断してもリモートアクセス状態を維持できる」は特筆すべき便利な機能だと思います。
例えば100時間以上同じプログラムを動かさなければいけないが、そのプログラムはリモートアクセスを切断すると終了してしまう場合は、リモートアクセスの画面を100時間ずっと開いておかなければいけません。しかし操作をしている環境によっては、操作しているWindowsマシンの電源を停止しなければいけない場合もあると思います。あるいはWindowsマシンが100時間ずっと正常に起動し続けないで途中で固まってしまうかもしれません。そういうときに便利なのです。
このscreenの導入方法を説明します。
さて、導入の方法は以下の通りです。今回はソースコードからビルドしてみました。
前提条件
PATH=/usr/local/sbin:/usr/local/bin:/usr/sfw/bin:/usr/bin:/usr/local/bin:/usr/ccs/bin: /usr/sfw/bin:/opt/sfw/bin:/usr/openwin/bin/:/usr/proc/bin:/usr/ucb:/usr/sbin
- 環境変数「LD_LIBRARY_PATH」が以下の通り設定されている(たぶん無駄なものもある)
LD_LIBRARY_PATH=/usr/lib:/usr/sfw/lib::/usr/sfw/lib:/usr/local/lib:/etc/lib:/usr/local/ssl/lib: /usr/X11/lib:/usr/lib:/lib
ソースコードを入手
http://ftp.gnu.org/gnu/screen/
から最新版「screen-4.0.3.tar.gz」をダウンロード。
適当なディレクトリに展開。
$ cd ~hoge/ $ gtar xvfz screen-4.0.3.tar.gz
ビルド前の注意点
軽く調べたところ、Solaris10でビルドする場合にmisc.cを修正しないとmakeで失敗するらしい。
参考:http://1x4x9.net/2009/05/solaris10gnu-screen.html
とりあえず何も考えずにconfigureおよびmakeをしたら書いてあるとおり失敗したので、そこのサイトを参考に、misc.cを以下の通り編集。微妙にブログ主が書いている事と違ったがこれで上手くいった。
$ diff -u misc.c_bk misc.c --- misc.c_bk 2010年 3月 30日 ((火)) +++ misc.c 2010年 3月 30日 ((火)) @@ -613,7 +613,7 @@ */ # endif /* NEEDSETENV */ #else /* USESETENV */ -# if defined(linux) || defined(__convex__) || (BSD >= 199103) +# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun__) setenv(var, value, 1); # else setenv(var, value);
configure
su - # bash # cd ~hoge/screen-4.0.3 # ./configure
ここで失敗したら
# make clean
を実行すると一時ファイルが削除されるので、ビルド作業が一からやり直しができます。
make
# make
特に問題なく完了。
make install
# make install
以下のようなメッセージが出て、/opt/sfw/bin/以下にインストールされました。
で、気づかなかったのでが、インストールしたサーバにはバージョン4.0.2のscreenがインストールされていたようで、「screen.old」としてリネームされてしまいました。あらためてインストールしなくても使えたな・・・。まあ最新バージョンになったから良いか。
./etc/mkinstalldirs /opt/sfw/bin `sed < config.h -n -e '/define SCREENENCODINGS/s/^.*"\([^"]*\)"/\1/p'` cd doc ; make installdirs make[1]: Entering directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' ./../etc/mkinstalldirs /opt/sfw/man/man1 /opt/sfw/info make[1]: Leaving directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' if [ -f /opt/sfw/bin/screen-4.0.3 ] && [ ! -f /opt/sfw/bin/screen-4.0.3.old ]; \ then mv /opt/sfw/bin/screen-4.0.3 /opt/sfw/bin/screen-4.0.3.old; fi /opt/sfw/bin/install -c screen /opt/sfw/bin/screen-4.0.3 chown root /opt/sfw/bin/screen-4.0.3 && chmod 4755 /opt/sfw/bin/screen-4.0.3 if [ -f /opt/sfw/bin/screen ] && [ ! -f /opt/sfw/bin/screen.old ]; then mv /opt/sfw/bin/screen /opt/sfw/bin/screen.old; fi rm -f /opt/sfw/bin/screen (cd /opt/sfw/bin && ln -sf screen-4.0.3 screen) cp ./utf8encodings/?? `sed < config.h -n -e '/define SCREENENCODINGS/s/^.*"\([^"]*\)"/\1/p'` cd doc ; make install make[1]: Entering directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' ./../etc/mkinstalldirs /opt/sfw/man/man1 /opt/sfw/info /opt/sfw/bin/install -c -m 644 ./screen.1 /opt/sfw/man/man1/screen.1 make screen.info make[2]: Entering directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' make[2]: `screen.info' is up to date. make[2]: Leaving directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' if test -f screen.info; then d=.; else d=.; fi; \ if test -f $d/screen.info; then \ for f in $d/screen.info*; do /opt/sfw/bin/install -c -m 644 $f /opt/sfw/info;done; \ if /bin/sh -c 'install-info --version' >/dev/null 2>&1; then \ install-info --info-dir=/opt/sfw/info $d/screen.info; \ else true; fi; \ fi make[1]: Leaving directory `/tpc5160_iscsi/bata64/package/screen-4.0.3/doc' if [ -d /usr/lib/terminfo ]; then \ PATH="$PATH:/usr/5bin" tic ./terminfo/screeninfo.src; \ chmod 644 /usr/lib/terminfo/s/screen*; \ fi termcap entry (./terminfo/screencap) should be installed manually. You may also want to install ./etc/etcscreenrc in /opt/sfw/etc/screenrc
これでインストールは完了です。
使ってみる
screen -T vt100
細かい使い方は別に書きます。
ではー。
*1:そしてリモートアクセスに使うソフトの、事実上の標準は「Windowsからteratermを使用する」だと思います。