Amazon EC2のAmazon Linuxでmoshをyumでインストール

Macでtmux使ってるとmosh使った時に出力が崩れる時があるから普段はあんまり使わないんですが、一応管理してる全サーバに入れてるので入れておこうと思ってお試し。サーバ側でtmux使って作業するときぐらいしかmoshで接続しないんですが。
ググってもあんまり情報がなかったのでメモとして残しておこうと久々の更新。

そのままではインストールできない

普通にAWSAmazon Linux(AMI release 2013.03)でmoshを入れようと思って

# yum insall --enablerepo=epel mosh

とかやると

600 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mosh.x86_64 0:1.2.4-1.el6 will be installed
--> Processing Dependency: libprotobuf.so.6()(64bit) for package: mosh-1.2.4-1.el6.x86_64
--> Finished Dependency Resolution
Error: Package: mosh-1.2.4-1.el6.x86_64 (epel)
           Requires: libprotobuf.so.6()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

とか言われてそのままじゃインストールできない。
amzn-mainのリポジトリにあるprotobufパッケージが新しいのが原因でlibprotobuf.so.8がインストールされている。

# rpm -qa protobuf
protobuf-2.5.0-1.8.amzn1.x86_64

CentOS6の場合はepel経由でmoshをインストールすると、2.3.0が入るので問題ないんですが。
確認するとこんな感じ。

# yum list --enablerepo=epel --disablerepo=amzn-main protobuf
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-updates                                                                                    | 2.3 kB     00:00
182 packages excluded due to repository priority protections
Installed Packages
protobuf.x86_64                                       2.5.0-1.8.amzn1                                        @amzn-main
Available Packages
protobuf.i686                                         2.3.0-7.el6                                            epel

どうするか

yumでもバージョン指定のインストールはできるけど、先に新しいバージョン(2.5.0)が入っているので無理なわけです。yumにはrpmのforceコマンド的なものがないからとりあえずパッケージを落としてrpmコマンドでインストールすることに。

# yumdownloader --enablerepo=epel --disablerepo=amzn-main protobuf-2.3.0-7.el6.x86_64

パッケージの中身を確認する。
2.3.0は以下。

# rpm -qpl protobuf-2.3.0-7.el6.x86_64.rpm
/usr/lib64/libprotobuf.so.6
/usr/lib64/libprotobuf.so.6.0.0
/usr/share/doc/protobuf-2.3.0
/usr/share/doc/protobuf-2.3.0/CHANGES.txt
/usr/share/doc/protobuf-2.3.0/CONTRIBUTORS.txt
/usr/share/doc/protobuf-2.3.0/COPYING.txt
/usr/share/doc/protobuf-2.3.0/README.txt

デフォルトでインストールされている2.5.0は以下。

# rpm -ql protobuf
/usr/lib64/libprotobuf.so.8
/usr/lib64/libprotobuf.so.8.0.0
/usr/share/doc/protobuf-2.5.0
/usr/share/doc/protobuf-2.5.0/CHANGES.txt
/usr/share/doc/protobuf-2.5.0/CONTRIBUTORS.txt
/usr/share/doc/protobuf-2.5.0/COPYING.txt
/usr/share/doc/protobuf-2.5.0/README.txt

かぶるファイルがないから強制的にインストールしてみます。

# rpm -ivh --force protobuf-2.3.0-7.el6.x86_64.rpm

これであとはmoshをインストールすればすんなり入ります。

# yum install --enablerepo=epel mosh

以上。