最近話題のmosh(MObile SHell)を触ろうとしてみたけれど、インストールの段階で少々はまってしまったので、解決までの道のりについて備忘録を残しておく。
環境
moshはサーバとクライアントの両方にインストールする必要がある。僕の場合はサーバがUbuntu(12.04)でクライアントがMacOS X Mountain Lionである。
サーバ
$ cat /etc/lsb-release | grep RELEASE
DISTRIB_RELEASE=12.04
クライアント
$ sw_vers | grep ProductVersion
ProductVersion: 10.8.2
はまりどころ
次のようにしてMacOSにmoshをインストールした。
$ brew install mosh
無事にインストールできたようなので、example.comに接続しようとしてみた。
$ mosh example.com Condition components:
- &error
- &who who: “open-file-input-port”
- &message message: “No such file or directory”
- &irritants irritants: ((“example.com”))
Exception: error in raise: returned from non-continuable exception
Stack trace: 1. throw: 2. (raise c): baselib.scm:943 3. open-file-input-port: 4. (with-input-from-file filename thunk): baselib.scm:399
何がまずかったのだろうか。moshのオフィシャルサイトによると、moshをインストールするためのformulaは mosh
ではなく mobile-shell
らしい。 brew info mosh
してもろくな情報が出てこないので詳細は不明だけれど、これはmoshという名前の別なformulaのようである。
正しくは次のようにしてインストールする。
$ brew install mobile-shell
先ほどの反省も踏まえてサーバ側はオフィシャルサイトの指示通りにインストールした。
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:keithw/mosh
$ sudo apt-get update
$ sudo apt-get install mosh
落穂拾い
自宅で $ mosh mahata@example.com
したら次のようなエラーに遭遇した。
The locale requested by LC_ALL= isn't available here.
Running `locale-gen ' may be necessary.
The locale requested by LC_ALL= isn't available here.
Running `locale-gen ' may be necessary.
mosh-server needs a UTF-8 native locale to run.
Unfortunately, the local environment (LC_ALL=) specifies
the character set "US-ASCII",
The client-supplied environment (LC_ALL=) specifies
the character set "US-ASCII".
ありがちなLOCALEに関する問題である。実は解決に少し手間取ってしまった。MacOSのLOCALEの設定を色々と見直してみたけれど、実際の問題はサーバ側にあった。エラーメッセージにある通り、locale-gen
でLOCALEを作ることで解決できた。
$ ssh mahata@example.com # サーバに接続
$ sudo locale-gen ja_JP.UTF-8
$ exit # ローカルに戻る
$ mosh mahata@example.com
追記 (Jan. 10, 2013)
moshという名前のformulaでインストールされるのはMOnaSHellのようであった。ただし、最近mosh-schemeというformulaに名前が変わったそうである。