在终端中运行发行版升级tmux
以避免远程连接问题或 X 服务器问题(例如opensuse 文档)。
然而,这并没有考虑到已升级的tmux
客户端和管理运行分发升级的终端的服务器之间存在版本不匹配的风险。
为了实现这一风险,人们必须在升级期间离开 tmux 控制台而使用普通终端。如果 tmux 客户端同时升级,则将无法重新连接到 tmux 会话。相反,跑步tmux attach
或者tmux ls
会得到
# tmux ls
protocol version mismatch (client 7, server 6)
从 OpenSUSE 12.2 升级到 12.3 时,我遇到了客户端 7、服务器 6 版本不匹配的问题。我能想到的一个快速解决方案是tmux
从旧的发行版存储库下载 rpm 并解压它,cpio
因为机器在升级过程中具有网络连接。
wget http://download.opensuse.org/distribution/12.2/repo/oss/suse/i586/tmux-1.6-2.1.2.i586.rpm
rpm2cpio ../tmux-1.6-2.1.2.i586.rpm > tmux-1.6.cpio
cpio -i -d < tmux-1.6.cpio
./usr/bin/tmux
在 tmux 会话中运行发行版升级时是否应该对可能的版本不匹配发出警告?有没有一种简单的方法可以使 tmux 客户端以与旧服务器兼容的模式运行?
答案1
您可以附加到现有的 tmux,而无需下载旧版本。
关闭所有会话并尽快恢复,因为这显然是一个丑陋的黑客行为;但在紧急情况下它非常有用:
"/proc/$(pgrep -o tmux)/exe" attach
答案2
您可以尝试先只升级 tmux,然后再执行完整升级。幸运的是,当前安装的系统库版本将满足新 tmux 版本的依赖关系。