諸事情あって RedHat Enterprise Linux (CentOS) 7 系に tmux の最新版 v3.0a を、ログインユーザーだけが使える(他ユーザーに影響を与えない)形でインストールした。具体的には、関連ファイルをすべて ~/.local
の下に配置するようにコンパイル・インストールしたので、その手順を備忘録しておく。
(なお CentOS 7 系の OS 標準パッケージでは tmux のバージョンが 1.8 と古いため、.tmux.conf
のキーバインド定義の書式が古かったりして面倒くさい。.tmux.conf
内で tmux のバージョンを判定して分岐する方法はあるが、新しい版を入れてしまえば良いのではと思い、今回はそうした。)
動作確認環境
- CentOS 7.7
- GCC と make がインストールされている(
yum install gcc make
済みである)こと
- GCC と make がインストールされている(
- tmux 3.0a
- libevent 2.1.11 (システム標準パッケージ使用時は 2.0.21)
- ncurses 6.1 (システム標準パッケージ使用時は 5.9)
なお libevent と ncurses については RHEL/CentOS 7 系の標準パッケージでも問題無く使える。なので、システムへのパッケージ追加が許されるなら以下セットアップ手順ではそれらを省略し、代わりに yum install libevent-devel ncurses-devel
とするだけで良い。
手順
作業用ディレクトリを作成(ここでは
~/src
を使用)mkdir -p ~/src
libevent をローカルインストール(
yum install libevent-devel
されている環境ならばスキップして良い)cd ~/src curl -LO https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz tar xf libevent-2.1.11-stable.tar.gz cd libevent-2.1.11-stable ./configure --prefix=$HOME/.local --disable-shared --disable-libevent-regress make && make verify && make install
- メモ1:オプション
--disable-shared
は、動的リンク版の生成を抑止して静的リンク版のみ生成させる指示 (実行時にlibevent.so
をロード不要=LD_LIBRARY_PATH
などを気にしなくとも良くなる)。 - メモ2:オプション
--disable-libevent-regress
はmake verify
で時間のかかる回帰テストを省略する指示(時間に余裕があるならやった方が良いのだけれど)。
- メモ1:オプション
ncurses をローカルインストール(
yum install ncurses-devel
されていれば不要)cd ~/src curl -LO https://invisible-mirror.net/archives/ncurses/ncurses-6.1.tar.gz tar xf ncurses-6.1.tar.gz cd ncurses-6.1 ./configure --prefix=$HOME/.local --enable-pc-files --with-pkg-config=$HOME/.local/lib/pkgconfig make && make install
- メモ1:
--enable-pc-files
と--with-pkg-config
で pkg-config 用の定義ファイルを生成させる - メモ2:ncurses では標準で静的リンク版しか生成しない(動的リンクが好みならば
--with-shared
を指定する)
- メモ1:
(libevent か ncurses のどちらかを自前ビルドした場合)自前ビルドしたライブラリを使えるよう環境変数を定義
echo "export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig:$PKG_CONFIG_PATH" >> ~/.bash_profile source ~/.bash_profile
- メモ:もちろん元から
PKG_CONFIG_PATH
を定義しているなら、この手順は不要
- メモ:もちろん元から
tmux をローカルインストール
cd ~/src curl -LO https://github.com/tmux/tmux/releases/download/3.0a/tmux-3.0a.tar.gz tar xf tmux-3.0a.tar.gz cd tmux-3.0a ./configure --prefix=$HOME/.local make && make install
以上で ~/.local/bin/tmux
に tmux 3.0a がインストールされる。なお libevent
も ncurses
も静的リンクしているため、~/.local
下にインストールしたそれらのファイルは削除(それぞれのソースディレクトリで make uninstall
を実行)しても良い 。
念のため、起動できること、静的リンクできている(動的ロード対象として libevent.so や libncurses.so がリストアップされない)こと、を確認しておく:
$ ~/.local/bin/tmux -V
tmux 3.0a
$ ldd ~/.local/bin/tmux
linux-vdso.so.1 => (0x00007ffe1a71b000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f546d67f000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f546d466000)
libc.so.6 => /lib64/libc.so.6 (0x00007f546d098000)
/lib64/ld-linux-x86-64.so.2 (0x00007f546d882000)
あとは、次のように PATH と MANPATH を設定すれば完成:
echo "export PATH=~/.local/bin:$MANPATH" >> ~/.bash_profile
echo "export MANPATH=~/.local/share/man:$MANPATH" >> ~/.bash_profile