incompatibilidade de versão do protocolo (cliente 8, servidor 6) ao tentar atualizar

65

Estou tentando atualizar para uma versão mais recente (que possui uma correção de bug) que a atual 1.6. Estou no Ubuntu e atualizei recentemente para o Ubuntu 13.04.

Idealmente, eu quero usar o tmux versão 1.8 ou até 1.9. Fiz o download de versões mais recentes, mas não consigo fazê-las funcionar.

Fiz o download do 1.9a, mas quando tento executá-lo, ele trava.

Eu tentei este download: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

e fez o

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

mas eu entendo

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

Tentei baixar e usar uma versão 1.8.4, mas o download não parecia ter arquivos que eu pudesse usar.

Michael Durrant
fonte

Respostas:

31

Basicamente, isso indica que você já tem um tmuxservidor (antigo) em execução e o novo tmuxnão pode se conectar a ele porque eles não se entendem mais. Saia de todas as suas tmuxsessões existentes e inicie uma nova, usando a nova versão, e tudo ficará bem.

Andreas Wiese
fonte
Sim, sair parecia a chave. Para a atualização de 1,6 para 1,7, acho que sair / entrar foi a única correção. As atualizações subseqüentes da versão pareciam exigir que eu saísse de todas as janelas do terminal.
Michael Durrant
8
Por favor, explique como sair de todas as sessões tmux corretamente se você não puder acessá-las, porque o tmux não é compatível com versões anteriores! Não é o que chamo de matar processos, é mais como um massacre. ;)
Tino
11
Eu matei minha sessão tmux existente usando pkill tmux(depois de procurar uma sessão tmux com pgrep tmux) de um terminal normal. Depois, tmux lançou / comportou corretamente ...
temuraru
220

Hack bastante impressionante, se você precisa do seu tmux funcionando e não quer perder todas as suas sessões:

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

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

postagem original no Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp

kanap008
fonte
2
Isso parecia tão legal! Mas, infelizmente, no meu debian squeeze -> jessie upgrade (com uma parada temporária no wheezy), obtive: tmux at== no sessions. /var/run/tmux/tmux-0/defaultexistia, então eu tentei: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Agora /proc/$(pgrep tmux)/exe== /proc/2534/exe: Permission deniede ls -l /proc/$(pgrep tmux)/exe== /proc/2534/exe -> /usr/bin/tmux (deleted). :-(
Peter V. Mørch
Observe, no entanto, que na postagem do Google Plus mencionada, o desenvolvedor do tmux Thomas Adam escreve que não recomenda fazer isso.
Abbafei 27/05
Recebo o problema de que o identificador de arquivo em / proc / 4705 / exe é um identificador de arquivo obsoleto. Ainda posso usar esse truque?
Ferrybig
11
@ PeterV.Mørch Os /proc/$pid/exearquivos não são links simbólicos regulares ; você poderá usá-los para chamar os programas relevantes, mesmo que eles tenham sido desvinculados.
Blacklight Shining
11
pgrep -o tmuxdá o pid (single) das mais antigas tmux correr, presumivelmente, o único com a sessão que você precisa, por isso /proc/$(pgrep -o tmux)/exe attachpode funcionar melhor do que apenas correr pgrep tmux(que pode retornar várias PIDs)
Matt Curtis
2

Talvez isso não seja ideal para você, mas eu criei um chroote executei a tmuxpartir dele:

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

Isso garante que o ambiente tmux não seja alterado durante a atualização

Peter V. Mørch
fonte
0

matar todo o tmuxprocesso deve funcionar como eu também encontrei esse problema.

sudo killall -9 tmux
dli
fonte