невідповідність версії протоколу (клієнт 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


2
Це виглядало так класно! Але на жаль, в моєму debian скресленні -> jessie upgrade (з тимчасовою зупинкою на хрипі) я отримав: 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(який може повернути кілька пудів)
Метт Кертіс,

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.