6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SmalltalkAdvent Calendar 2016

Day 10

Linux サーバでも VNC 環境なら Smalltalk のデバッグが捗る

Posted at

背景

Linux サーバで Smalltalk 処理系を使う場合、ヘッドレスで動かしてもよいのですが、ヘッドレスだと Smalltalk では特に生産性が高くなるデバッガなどをうまく使う事ができません。

プロダクション環境ではヘッドレスで動かすとしても、開発環境などではやはり Smalltalk 環境が IDE のように使えた方が便利でしょう。

この記事では Smalltalk のデバッグを捗らせるために Ubuntu Linux に VNC 環境を用意し、その画面に接続して Smalltalk で開発を行うためのノウハウを書きます。

**単なる VNC のインストール記事なんでしょ?**って言われると、はいそうです。って気もしますが…以下のようなことに留意しました。

  • 再起動したときにも使える設定
  • 閉じた環境の開発向け設定
  • 必要にして十分ほどのユーザインターフェースのみの導入

Ubuntu 16.04 向けに書きましたが、Ubuntu 12.04 や Ubuntu 14.04 でも同様のことができるはずです。

X11 + VNC 環境の構築

VNC で接続することを考慮して Xvfb + x11vnc + IceWM という構成で X11 + VNC 環境を構築します。

IceWM に特に思い入れがあるわけではないのですが、パッケージがあって軽くて枯れてるのでこれを選んでいます。

$ sudo apt-get install xvfb x11vnc icewm

Xvfb の起動

X11 のバーチャルフレームバッファを起動します。

$ Xvfb :0 -screen 0 1280x1220x16 -nolisten tcp &

x11vnc の起動

VNC から X11 のバーチャルフレームバッファに接続できるように x11vnc を起動します。

$ x11vnc -display :0 -bg -listen 0.0.0.0 -forever -shared
$ disown

本当はパスワード指定したり、バインドするポートとかで接続元ネットワークを制限したりしましょう。

IceWM の起動

$ DISPLAY=:0 icewm-session &
$ disown

icewm-session を起動するとコントロールパネルっぽいものや仮想デスクトップなども使えて便利です。

Xvfb + x11vnc + IceWM の自動起動

経験的に滅多に落ちるプロセスではないので /etc/rc.local で起動するように設定を入れてみました。

同期的な処理をブロックしないように各種の起動は screen(1) をデタッチした状態でデーモン化して起動するのがよいと思います。

上記を加味した結果、下記のような設定を記述するとよい感じでした。

SUDO=/usr/bin/sudo
SCREEN=/usr/bin/screen
BASH=/bin/bash
SLEEP=/bin/sleep
$SUDO -u ubuntu $SCREEN -S Xvfb   -d -m $BASH -c 'cd && Xvfb :0 -screen 0 1280x1220x16 -nolisten tcp'
$SLEEP 3
$SUDO -u ubuntu $SCREEN -S x11vnc -d -m $BASH -c 'cd && x11vnc -display :0 -listen 0.0.0.0 -forever -shared'
$SLEEP 3
$SUDO -u ubuntu $SCREEN -S icewm  -d -m $BASH -c 'cd && DISPLAY=:0 icewm-session'

screen(1) の機能はそのまま使えますから、プロセスに問題があったときはアタッチして様子を見ることができます。

$ screen -list
There are screens on:
	853.icewm	(11/21/16 18:02:58)	(Detached)
	847.x11vnc	(11/21/16 18:02:55)	(Detached)
	817.Xvfb	(11/21/16 18:02:52)	(Detached)
3 Sockets in /var/run/screen/S-ubuntu.

接続

上記の例ではネットワークによる制限やパスワードによる制限をしていないので、 VNC Viewer で対象ホストのアドレスを指定すれば接続できるようになると思います。

所感

プロダクションで Smalltalk を使おうとしたときに、デバッグやちょっとした検証などで「あー、デバッガ開きたいなぁ」とか「あー、何起こってるかわかんねぇな」とか「ワークスペース使えねぇの?」って事になりがちですが、サーバ用途をメインに使っている Linux でも一時的に VNC 環境を導入することで開発やデバッグが捗ります。

みなさんもお試しあれ。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?