CentOS6にtmux1.9をユーザ領域にインストール
Cent6のyumでtmuxをインストールすると1.6系がインストールされるんですが、一部機能が使えなかったりするんで現時点で最新版の1.9系を入れてみます。
問題が
そのままコンパイルするとmake時に以下のエラーがでます。
control.c: In function ‘control_callback’: control.c:64: warning: implicit declaration of function ‘evbuffer_readln’ control.c:64: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function) control.c:64: error: (Each undeclared identifier is reported only once control.c:64: error: for each function it appears in.) make: *** [control.o] Error 1
これはlibeventのバージョンが低いためでるエラーですね。Centで提供されている1.4ではインストールできないのです。
どうするの?
libeventの最新版をインストールしてライブラリを利用する必要があります。 そのまま素直にroot権限でconfigureからのmake && make installしてもいいのですが、root権限がないユーザでは無理ですし、そもそもすでにyumで入っているlibeventと共存するのは避けたいところですね。
というわけで
一般ユーザでlibeventを入れて最新版のtmuxもインストールしちゃいます。
いざ作業
その前に今回は以下のディレクトリにlibeventとtmuxを入れます。
- libevent
$HOME/local 以下
- tmux
$HOME/local/tmux
ソースファイルは全て以下におきます。
$HOME/local/src
libeventのインストール
$ cd ~/local/src $ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz $ tar zxf libevent-2.0.21-stable.tar.gz $ cd libevent-2.0.21-stable $ ./configure --prefix=$HOME/local $ make $ make install
tmuxのインストール
※ncursesの依存関係がでるので、インストールされていない場合は事前に「ncurses-devel」をインストールしておいてください。
$ cd ~/local/src $ wget http://cznic.dl.sourceforge.net/project/tmux/tmux/tmux-1.9/tmux-1.9a.tar.gz $ cd tmux-1.9a $ LDFLAGS=-L$HOME/local/lib CPPFLAGS=-I$HOME/local/include ./configure --prefix=$HOME/local/tmux $ make $ make install $ cd ~/local/bin $ ln -s ../tmux/bin/tmux tmux
パスを通す
以下を追記。
# ライブラリのパスを通す export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH # PATHの設定 PATH=$HOME/local/bin:$PATH
これでtmuxの最新版が使えます。
よく他のブログとかで、tmuxインストール時にlibeventのライブラリのパスが通っていないためエラーとなり、その対処方法としてシンボリックリンクで/usr/libとかに通している方法を見かけます。 でもLDFLAGSとCPPFLAGSでちゃんとパスを指定してあげればインストールできるのです。 (個人的にはライブラリの共存を防ぐためにこっちの方が推奨だったりします。)
それにしても
tmuxいいですね。もっと使いこなしたいものです。