niezgodność wersji protokołu (klient 8, serwer 6) podczas próby aktualizacji

65

Próbuję uaktualnić do nowszej wersji (która ma poprawkę) niż moja obecna wersja 1.6. Korzystam z systemu Ubuntu i niedawno zaktualizowałem system do Ubuntu 13.04.

Idealnie chcę użyć tmux w wersji 1.8 lub nawet 1.9. Pobrałem nowsze wersje, ale nie mogę ich uruchomić.

Pobrałem 1.9a, ale kiedy próbuję go uruchomić, po prostu się zawiesza.

Próbowałem tego pobrania: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

i zrobił

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

ale rozumiem

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

Próbowałem pobrać wersję 1.8.4 i użyć tej wersji, ale wydawało się, że pobieranie nie zawierało plików, których mógłbym użyć.

Michael Durrant
źródło

Odpowiedzi:

31

To w zasadzie mówi ci, że masz już (stary) tmuxserwer i nowy tmuxnie może się z nim połączyć, ponieważ już się nie rozumieją. Wyjdź ze wszystkich istniejących tmuxsesji i rozpocznij nową, korzystając z nowej wersji i wszystko powinno być w porządku.

Andreas Wiese
źródło
Tak, wylogowanie wydawało się kluczowe. W przypadku aktualizacji 1.6 do 1.7 uważam, że jedynym rozwiązaniem było wylogowanie / zalogowanie. Kolejne aktualizacje wersji wymagały tylko wylogowania ze wszystkich okien terminala.
Michael Durrant
8
Wyjaśnij, jak prawidłowo kończyć wszystkie sesje tmux, jeśli nie masz do nich dostępu, ponieważ tmux nie jest kompatybilny wstecz! Zabijanie procesów nie jest tym, co nazywam wyjściem, jest bardziej jak masakra. ;)
Tino,
1
Zabiłem swoją istniejącą sesję tmux, używając pkill tmux(po wyszukaniu sesji tmux z pgrep tmux) z normalnego terminala. Następnie tmux uruchomił się / zachowywał poprawnie ...
temuraru
220

Całkiem niesamowity hack, jeśli potrzebujesz swojego tmuxa i nie chcesz stracić wszystkich sesji:

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

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

oryginalny post w Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp

kanap008
źródło
2
To wyglądało tak fajnie! Ale niestety, w moim debian squeeze -> jessie upgrade (z tymczasowym zatrzymaniem na wheezy), otrzymałem: tmux at== no sessions. /var/run/tmux/tmux-0/defaultistniało, więc próbowałem: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Teraz /proc/$(pgrep tmux)/exe== /proc/2534/exe: Permission deniedi ls -l /proc/$(pgrep tmux)/exe== /proc/2534/exe -> /usr/bin/tmux (deleted). :-(
Peter V. Mørch,
Należy jednak pamiętać, że w cytowanym poście Google Plus twórca tmux Thomas Adam pisze, że nie zaleca tego.
Abbafei
Mam problem z tym, że uchwyt pliku w / proc / 4705 / exe jest przestarzałym uchwytem pliku. Czy nadal mogę skorzystać z tej sztuczki?
Ferrybig,
1
@ PeterV.Mørch /proc/$pid/exePliki nie są zwykłymi dowiązaniami symbolicznymi ; powinieneś być w stanie używać ich do wywoływania odpowiednich programów, nawet jeśli zostały one odłączone.
Blacklight Shining
1
pgrep -o tmuxdaje (pojedynczy) pid najstarszego działającego tmuxa, prawdopodobnie tego z potrzebną sesją, więc /proc/$(pgrep -o tmux)/exe attachmoże działać lepiej niż tylko bieganie pgrep tmux(które może zwrócić wiele pidów)
Matt Curtis
2

Być może nie jest to dla ciebie idealne, ale stworzyłem chrooti uciekłem tmuxz niego:

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

Zapewnia to, że środowisko tmux nie zmieni się podczas aktualizacji

Peter V. Mørch
źródło
0

Zabij cały tmuxproces powinien działać, ponieważ napotkałem również ten problem.

sudo killall -9 tmux
dli
źródło