несоответствие версии протокола (клиент 8, сервер 6) при попытке обновления

65

Я пытаюсь перейти на более новую версию (в которой исправлена ​​ошибка), чем моя текущая версия 1.6. Я на Ubuntu и недавно обновлен до Ubuntu 13.04.

В идеале я хочу использовать tmux версии 1.8 или даже 1.9. Я скачал новые версии, но не могу заставить их работать.

Я скачал 1.9a, но когда я пытаюсь запустить его, он просто зависает.

Я попробовал эту загрузку: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

и сделал

$ sh autogen.sh
$ ./configure && make

но я получаю

$ ./tmux
$ protocol version mismatch (client 8, server 6)

Я пытался загрузить и использовать версию 1.8.4, но, похоже, в загрузке не было файлов, которые я мог бы использовать.

Майкл Даррант
источник

Ответы:

31

Это в основном говорит вам, что у вас уже есть (старый) tmux-сервер, и новый tmuxне может подключиться к нему, потому что они больше не понимают друг друга. Выйдите из всех ваших существующих tmuxсессий и начните новую, используя новую версию, и все должно быть хорошо.

Андреас Визе
источник
Да, выход из системы казался ключевым. Для обновления с 1.6 до 1.7 я чувствую, что выход / вход был единственным исправлением. Последующие обновления версии, казалось, требовали только выхода из всех окон терминала.
Майкл Даррант
8
Пожалуйста, объясните, как правильно завершить все tmux-сессии, если вы не можете получить к ним доступ, потому что tmux не имеет обратной совместимости! Процессы убийства - это не то, что я называю выходом, это больше похоже на бойню. ;)
Тино
1
Я убил свой существующий сеанс tmux с помощью pkill tmux(после поиска сеанса tmux с pgrep tmux) из обычного терминала. После этого tmux запустился / вел себя правильно ...
temuraru
220

Довольно крутой хак, если вам нужно, чтобы ваш tmux работал и не хотел терять все свои сессии:

$ tmux attach
protocol version mismatch (client 7, server 6)

$ pgrep tmux
3429
$ /proc/3429/exe attach

оригинальный пост в Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp

kanap008
источник
2
Это выглядело так круто! Но, увы, в моем обновлении debian squeeze -> jessie (с временной остановкой на wheezy) я получил: tmux at== no sessions. /var/run/tmux/tmux-0/defaultсуществовал, поэтому я попытался: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Сейчас /proc/$(pgrep tmux)/exe== /proc/2534/exe: Permission deniedи ls -l /proc/$(pgrep tmux)/exe== /proc/2534/exe -> /usr/bin/tmux (deleted). :-(
Питер В. Мёрч
Однако обратите внимание, что в сообщении Google Plus, на которое есть ссылка, разработчик tmux Томас Адам пишет, что он не рекомендует делать это.
Аббафей
Я получаю проблему, что дескриптор файла в / proc / 4705 / exe является устаревшим дескриптором файла. Могу ли я использовать этот трюк?
Ferrybig
1
@ PeterV.Mørch /proc/$pid/exeФайлы не являются обычными символическими ссылками ; вы должны иметь возможность использовать их для вызова соответствующих программ, даже если они не были связаны.
Blacklight Shining
1
pgrep -o tmuxдает (единственный) pid самого старого запущенного tmux, предположительно тот, который содержит нужный вам сеанс, поэтому /proc/$(pgrep -o tmux)/exe attachможет работать лучше, чем просто запуск pgrep tmux(который может возвращать несколько pids)
Мэтт Кертис
2

Возможно, это не идеально для вас, но я создал chrootи побежал tmuxиз него:

sudo -i
debootstrap stable /chroot
mount -o bind /dev /chroot/dev
mount -o bind /dev/pts /chroot/dev/pts
mount -o bind /sys /chroot/sys
mount -o bind /proc /chroot/proc
chroot /chroot
apt-get install tmux ssh
tmux
ssh user@localhost
apt-get bla bla bla

Это гарантирует, что среда tmux не изменится во время обновления

Петр В. Мёрч
источник
0

Убой весь tmuxпроцесс должен работать, так как я также столкнулся с этой проблемой.

sudo killall -9 tmux
дли
источник