如何在编译“tmux”包期间设置“$ tmux -V”报告的版本号?

如何在编译“tmux”包期间设置“$ tmux -V”报告的版本号?

我正在编译多路复用器通过脚本从其源代码中获取,如下所示:

set -e
DIR="${HOME}/Programs/"
build() {
  [[ -d "${DIR}" ]] || mkdir -p "${DIR}"
  cd "${DIR}"
  if [[ ! -d tmux ]]; then
    git clone https://github.com/tmux/tmux
  fi
  cd tmux
  git stash
  git checkout master
  git pull
  make clean; make distclean
  sh autogen.sh
  ./configure
  make
}
install() {
  dpkg -r tmux
  checkinstall --pkgname tmux --pkgversion '9999:9999.9999' -y
}
build
install

它按预期编译并安装 tmux。
但仍然存在一个问题,即报告的版本$ tmux -V

$ tmux -V
tmux master

它报告tmux master,虽然我更喜欢tmux X.YX.Y是最新版本的版本。例如,目前最新版本是2.8,所以我想$ tmux -V输出tmux 2.8

有什么办法可以改变这个输出吗?

我查看了 的输出./configure --help,并搜索了设置 tmux 进程版本的选项,但找不到。

目前,我sed在脚本中包含了一个命令,以便它自动编辑文件configure.ac,并分配一个大版本号99.99(我不知道如何以编程方式获取最新版本的版本号):

sh autogen.sh
sed -i 's/AC_INIT(tmux, master)/AC_INIT(tmux, 99.99)/' configure.ac
./configure

有没有更好的办法?


我问这个问题的原因是因为我使用tmux-打开$ tmux -V插件,在输出时无法按预期工作tmux master

后者使用这行代码确定当前 tmux 进程的版本:

$ tmux_version="$(tmux -V | cut -d ' ' -f 2)"

然后插件使用这个变量确定安装键绑定的命令的语法

我的机器上未安装按键绑定,我认为这是由于$ tmux -V.因为如果我替换这条线在插件中:

if [[ $tmux_version == $1 ]]

用这一行:

if [[ $tmux_version == $1 ]] || [[ $tmux_version == 'master' ]]

然后插件会正确安装其键绑定。

答案1

插入一行,如:

sed '/AC_INIT/s/master/m4_esyscmd_s([git describe])/' -i configure.ac

sh autogen.sh在脚本中调用之前。

根据答案这里

相关内容