DT日記

家を離れた自宅警備員の日記

OS Xに最近話題のmosh(mobile shell)を入れてみたよ

mosh は MIT で開発された、SSH を賢い感じにラップしてくれるツールらしい。mobile shell の略で、モバイルの回線で SSH 接続してて IPアドレスが変っちゃったりしても勝手に再接続してくれたり、キーボード入力をいちいちリモートの応答を待たずにローカルエコーしてくれて体感速度さくさくだったり、ついでに文字コードも適切に扱ってくれちゃったりするらしい、そんな至れり尽せりの MacBook Pro に入れてみた。

と、なんかその辺りは既に日本語でもいろいろ紹介されてるので参照のこと。

Mac OS X への導入は、基本的には Homebrew (brew) が入ってれば brew install mosh brew install mobile-shell だけでおk…のはずなんだけど、こんなエラー。

megurine # mosh NmnRtz
dyld: Library not loaded: /usr/local/lib/libpcre.0.dylib
  Referenced from: /usr/local/bin/zsh
  Reason: image not found
ssh_exchange_identification: Connection closed by remote host

あ、$HOME/.ssh/config にはこんな設定してあります。

Host NmnRtz
  HostName xxx.xxx.xxx.xxx
  User username
  Port 5555

Port は well-known な 22番ポートから変更してる場合だけ。で、本題に戻ります。

なんで /usr/local/lib/libpcre.0.dylib を探しにいってるのかもよくわかんないんだけど、とりあへず libpcre.0.dylib が入ってるか調べてみる。

megurine # locate libpcre.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libpcre.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/lib/libpcre.dylib
/usr/lib/libpcre.dylib
/usr/local/Cellar/pcre/8.21/lib/libpcre.dylib
/usr/local/Cellar/pcre/8.30/lib/libpcre.dylib
/usr/local/lib/libpcre.dylib

megurine # locate libpcre.0.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libpcre.0.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/lib/libpcre.0.dylib
/usr/lib/libpcre.0.dylib
/usr/local/Cellar/pcre/8.21/lib/libpcre.0.dylib

megurine # locate libpcre.1.dylib
/usr/local/Cellar/pcre/8.30/lib/libpcre.1.dylib
/usr/local/lib/libpcre.1.dylib

ほむぅ… /usr/local/Cellar/pcre/8.30/lib にあるのは brew install mobile-shell のときに依存するパッケージとして入れてくれたはずなんだけど。

仕方がないのでこんな解決策をとりました。

sudo ln -s /usr/lib/libpcre.0.dylib /usr/local/lib/

とりあへずこれで動くやうになって良かった良かった…? これでいいのか……?

あと、ログインしたいリモートの方にも mosh を入れておく。

Ubuntu の 11.10 以降なら、これだけで入る。

sudo aptitude install mosh

aptitude じゃなくて apt-get を使ってる場合はそれに読み替へること。

Ubuntu 11.04 以前なら、その前にこれを実行しておくこと。

sudo add-apt-repository ppa:keithw/mosh
sudo aptitude update

再度 mosh NmnRtz とやってみたところ、無事にログインに成功。まあ、めでたしめでたし。

ためしに MacBook Pro のクラムシェル(画面と本体)を閉ぢてスリープにした後に復帰したところ、勝手に再接続してくれて、byobutmux も、ほんとに何事もなかったかのやうに利用を再開してくれました。

これで mosh で快適なリモートログイン生活が送れますね!いえーい