mancata corrispondenza della versione del protocollo (client 8, server 6) durante il tentativo di aggiornamento


65

Sto cercando di aggiornare a una versione più recente (che ha una correzione di bug) rispetto alla mia attuale 1.6. Sono su Ubuntu e recentemente aggiornato a Ubuntu 13.04.

Idealmente, voglio usare tmux versione 1.8 o anche 1.9. Ho scaricato versioni più recenti ma non riesco a farle funzionare.

Ho scaricato 1.9a ma quando provo ad eseguirlo, si blocca e basta.

Ho provato questo download: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

e ha fatto il

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

ma capisco

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

Ho provato a scaricare e utilizzare una versione 1.8.4 ma il download non sembrava avere file che potevo usare.

Risposte:


31

Questo in sostanza ti dice che hai già un (vecchio) tmuxserver in esecuzione e il nuovo tmuxnon può connettersi ad esso perché non si capiscono più. Esci da tutte le tmuxsessioni esistenti e iniziane una nuova utilizzando la nuova versione e tutto dovrebbe andare bene.


Sì, il logout sembrava fondamentale. Per l'aggiornamento da 1.6 a 1.7, ritengo che la disconnessione / accesso sia stata l'unica soluzione. Gli aggiornamenti della versione successiva mi hanno richiesto solo di disconnettermi da tutte le finestre del terminale.
Michael Durrant,

8
Spiegare come uscire correttamente da tutte le sessioni di tmux se non è possibile accedervi, perché tmux non è compatibile con le versioni precedenti! Uccidere i processi non è ciò che chiamo uscire, è più come un massacro. ;)
Tino,

1
Ho ucciso la mia sessione di tmux esistente usando pkill tmux(dopo aver cercato una sessione di tmux con pgrep tmux) da un normale terminale. Successivamente, tmux si è lanciato / si è comportato correttamente ...
temuraru,

220

Un hack davvero fantastico, se hai bisogno che tmux funzioni e non vuoi perdere tutte le sessioni:

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

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

post originale su Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp


2
Sembrava così bello! Ma ahimè, nella mia compressione debian -> aggiornamento jessie (con un arresto temporaneo su wheezy), ho ottenuto: tmux at== no sessions. /var/run/tmux/tmux-0/defaultesisteva, quindi ho provato: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Ora /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,

Si noti, tuttavia, che nel post di Google Plus a cui viene fatto riferimento, lo sviluppatore di Thomas Thomas Adam scrive che non raccomanda di farlo.
Abbafei,

Ottengo il problema che l'handle di file in / proc / 4705 / exe è un handle di file non aggiornato. Posso ancora usare questo trucco?
Ferrybig,

1
@ PeterV.Mørch I /proc/$pid/exefile non sono normali collegamenti simbolici ; dovresti essere in grado di usarli per invocare i programmi pertinenti anche se non sono stati collegati.
Blacklight Shining

1
pgrep -o tmuxfornisce il (singolo) pid del più vecchio tmux in esecuzione, presumibilmente quello con la sessione di cui hai bisogno, quindi /proc/$(pgrep -o tmux)/exe attachpotrebbe funzionare meglio della semplice esecuzione pgrep tmux(che può restituire più pid)
Matt Curtis,

2

Questo forse non è l'ideale per te, ma ho creato un chroote sono corso tmuxda esso:

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

Ciò garantisce che l'ambiente tmux non cambi durante l'aggiornamento


0

uccidere tutto il tmuxprocesso dovrebbe funzionare poiché ho riscontrato anche questo problema.

sudo killall -9 tmux
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.