最近話題の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:

  1. &error
  2. &who who: “open-file-input-port”
  3. &message message: “No such file or directory”
  4. &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に名前が変わったそうである。