zzxworld

Arch Linux 回退 tmux 软件版本

Arch 这个 Linux 发行版的一大特点就是平滑升级。它能保持软件包括系统永远在最新状态。不过这也带来一个问题,如果某个软件的最新版本存在 Bug,那有可能会导致更新后无法使用的情况。今天我就遇到了。

软件是 tmux,一个终端分屏工具。早上一开机,当我熟练的敲完 sudo pacman -Syu 完成更新操作后,重启系统打开终端,发现 tmux 无法启动了,丢给我一句 server exited unexpectedly 的异常消息。

Screenshot for tmux error message

昨天还能正常使用,这中间也就执行了一下更新操作。所以凭直觉就能猜到,问题一定出在刚才的更新操作上。刚才更新确认时没留意提示,也不确定具体更新了那些软件。不过这不重要了,要么 Tmux 出了新版本,要么就是它依赖的第三方包出了新版本。解决方法就是在这两者之中定位有问题的新版本软件,回退到上一个能正常使用的版本去。

作为最大的嫌疑对象,先看看 Tmux 有没有更新。到 Tmux 的 Github 源码仓库看了看,果然 2 天前出了 3.3 版本。我用 tmux -V 看了下本地当前的版本号,正是 3.3。看来就是 Tmux 自己更新了,接下来就好办了,直接回退 Tmux 的版本即可。

首先看看本地软件包的缓存目录下有哪些可用的版本:

cd /var/cache/pacman/pkg;ls -l tmux*

输出结果如下:

Screenshot for pacman cache about tmux version

可以看到除了刚下载下来的 3.3,还有 3.2。那就切换到这个低一点的版本试试:

sudo pacman -U /var/cache/pacman/pkg/tmux-3.2_a-1-x86_64.pkg.tar.zst

过程和正常使用 -S 参数安装软件一样,命令执行完成后,再次尝试运行 Tmux,已经可以正常启动。

Screenshot for tmux running

问题解决。

不过还存在一个尾巴。此时如果再次执行 pacman -Syu 命令更新系统,Tmux 又会被更新到有问题的 3.3 版本。所以还需要到 /etc/pacman.conf 文件中,添加或编辑这样一行配置:

IgnorePkg = tmux

这会让系统更新时忽略对 Tmux 的操作。等过段时间 Tmux 解决了问题后,再取消这个配置恢复更新就行了。