Install mosh without root privilege

Author

gentam

Date
2017-10-22
Category

log

Tag

tips, mosh

大学の共有計算サーバにSSH接続して作業をしていると,mosh (mobile shell) <https://mosh.org> が使いたくなることがある.しかしroot権限は当然なく, 自分のディレクトリでビルドする必要があったのでそのときのメモ

ビルドに必要なもので大学のサーバに入っていなかったのは Protocol Buffers だけだっ たので大まかな手順は,

  1. protobuf のコンパイルとインストール

  2. mosh のコンパイルとインストール

となる.

Note

更新: ちなみにSFCのサーバでccx02, ccz00, webedit等にmoshは入っていないが, 新しい gpgpu0X には入っていたので今はもう自分でインストールする必要はない.

0. 前準備

自分のホームディレクトリにライブラリやバイナリファイルを置くことになるので ~/usr を作成しておく:

$ cd
$ mkdir usr

1. protobuf のインストール

Dependencies

# tarball の場合
  $ wget https://github.com/google/protobuf/releases/download/v${version}/protobuf-cpp-${version}.tar.gz
  $ tar xzf protobuf-cpp-${version}.tar.gz
  $ cd protobuf-${version}

# git の場合
  $ git clone https://github.com/google/protobuf.git
  $ cd protobuf
  $ ./autogen.sh

$ ./configure --prefix=$HOME/usr
$ make -j8
$ make check
$ make install

これで libprotobuf が $HOME/usr/lib/ , protoc バイナリが $HOME/usr/bin/ に入るので $HOME/usr/bin/ を $PATH に 追加しておく.

(${version} はここ <https://github.com/google/protobuf/releases> で最新版を確認 する.インストール時は3.4.1)

Reference <https://github.com/google/protobuf/tree/master/src>

2. mosh のインストール

Dependencies

protobufの準備ができたら,

# tarball の場合

    $ wget https://mosh.org/mosh-${version}.tar.gz
    $ tar xzf mosh-${version}.tar.gz
    $ cd mosh-${version}

# git の場合

    $ git clone https://github.com/mobile-shell/mosh
    $ cd mosh
    $ ./autogen.sh


$ export PKG_CONFIG_PATH="$HOME/usr/lib/pkgconfig"
$ ./configure --prefix=$HOME/usr
$ make
$ make install

(${version} はHPから確認.インストール時は1.3.2)

あとはつながることを確認して完了.

ちなみに,mosh は ~/.ssh/config を読んでくれるので, $ ssh <server> を設定していたら $ mosh <server> と,本当にコマンドを変えるだけでいい.

Reference <https://mosh.org/#build-instructions>


make が以下のようなエラーで失敗する場合 protoc: error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory

LD_LIBRARY_PATH を変更して libprotobuf.so の場所を教える必要がある.

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/usr/lib
(リンク先を確認)
$ ldd ~/usr/bin/protoc

Note

SFCのサーバはlogin shellがtcshになっているので,例えばbashを .login から起 動している場合には .bash_profile 等に書いた設定が反映されず,mosh の接続が 失敗するっぽい.そういったときは,ssh ccx02 echo \$PATH とかで確認した上で .cshrc に設定を書かないといけない.

具体的には setenv PATH ${PATH}:$HOME/usr/binsetenv LD_LIBRARY_PATH $HOME/usr/lib:${LD_LIBRARY_PATH}