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下载源码的示例命令如下:

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
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
tar -zxvf ncurses-6.0.tar.gz
cd ncurses-6.0
./configure --prefix=$HOME/.local
make
make install

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

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

tmux依赖于libevent和ncurses,需设置编译选项

编译有关的环境变量

# 编译器
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

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. 添加环境变量
# 用vim修改.bashrc,在文件中添加一行export PATH="$HOME/.local/bin:$PATH",保证每次都有效
export PATH="$HOME/.local/bin:$PATH"
source ~/.bashrc

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

转载请注明:Onwaier‘s Blog » linux无root权限编译安装tmux到用户目录下