linux无root权限编译安装tmux到用户目录下

参考资料

  1. Linux在当前(指定)用户下安装软件
  2. Ubuntu 源码编译安装tmux指定版本于用户目录
  3. 无root权限下解决编译时的依赖问题

下载源码及依赖

tmux源码地址:https://github.com/tmux/tmux 依赖(Dependencies) - libevent 2.x源码地址:https://github.com/libevent/libevent - ncurses 源码地址:https://invisible-mirror.net/archives/ncurses/ 使用wget下载源码的示例命令如下:

1
2
3
wget https://github.com/tmux/tmux/releases/download/3.1b/tmux-3.1b.tar.gz
wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
wget https://invisible-mirror.net/archives/ncurses/ncurses-6.0.tar.gz

编译

参考资料2编译即可. 编译常见三部曲为./configure --prefix=$HOME/usr && make && make install,其中./configure设置尤为重要. 因为无root权限,所以需要使用prefix选项改变安装位置

  1. 安装依赖libevent
1
2
3
4
5
tar -zxvf libevent-2.1.11-stable.tar.gz
cd libevent-2.1.11-stable
./configure --prefix=$HOME/.local --disable-shared
make
make install
  1. 安装依赖ncurses
1
2
3
4
5
tar -zxvf ncurses-6.0.tar.gz
cd ncurses-6.0
./configure --prefix=$HOME/.local
make
make install

编译过程会出现错误,参考资料2解决即可. 大约是在104行,去除104行后面的注释。即:删除/* generated */

  1. 安装tmux
1
2
tar -zxvf tmux-3.1b.tar.gz
cd tmux-3.1b

tmux依赖于libevent和ncurses,需设置编译选项 编译有关的环境变量

1
2
3
4
5
6
7
8
9
10
11
12
# 编译器
CC 指定C编译器(compiler command)路径
CXX 指定C++编译器
# 编译器选项
CFLAGS 用于C编译器的选项
CXXFLAGS 用于C++编译器的选项
LDFLAGS 链接相关选项,如果你有自定义的函数库(lib dir),即可以用 -L<lib dir>指定
# 预编译器
CXXCPP C++ 预处理器(preprocessor)
CPP C 预处理器(preprocessor)
# 预编译器选项
CPPFLAGS C/C++预处理器选项, 如果你自定义的头文件,可以用-I<include dir>

tmux的编译选项设置可参考资料2资料3

1
2
3
4
cd tmux-3.1b
./configure CFLAGS="-I$HOME/.local/include -I$HOME/.local/include/ncurses" LDFLAGS="-L$HOME/.local/lib -L$HOME/.local/include/ncurses -L$HOME/.local/include" CPPFLAGS="-I$HOME/.local/include -I$HOME/.local/include/ncurses" LDFLAGS="-static -L$HOME/.local/include -L$HOME/.local/include/ncurses -L$HOME/.local/lib"
make
cp tmux $HOME/.local/bin
  1. 添加环境变量
1
2
3
# 用vim修改.bashrc,在文件中添加一行export PATH="$HOME/.local/bin:$PATH",保证每次都有效
export PATH="$HOME/.local/bin:$PATH"
source ~/.bashrc

这样就完成了tmux的编译安装,下一篇博文将介绍如何使用tmux.