incompatibilité de version de protocole (client 8, serveur 6) lors de la tentative de mise à niveau

65

J'essaie de mettre à niveau vers une version plus récente (qui a un correctif de bogue) que mon 1.6 actuel. Je suis sur Ubuntu et récemment mis à niveau vers Ubuntu 13.04.

Idéalement, je veux utiliser tmux version 1.8 ou même 1.9. J'ai téléchargé des versions plus récentes mais je ne parviens pas à les faire fonctionner.

J'ai téléchargé 1.9a, mais lorsque je tente de l'exécuter, il se bloque.

J'ai essayé ce téléchargement: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

et a fait le

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

mais je reçois

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

J'ai essayé de télécharger et d'utiliser une version 1.8.4 mais le téléchargement ne semblait pas contenir de fichiers utilisables.

Michael Durrant
la source

Réponses:

31

En gros, cela vous indique que vous avez déjà un (vieux) tmuxserveur en cours d'exécution et que le nouveau tmuxne peut plus s'y connecter car ils ne se comprennent plus. Quittez toutes vos tmuxsessions existantes et démarrez-en une nouvelle en utilisant la nouvelle version, et tout devrait bien se passer.

Andreas Wiese
la source
Ouais, la déconnexion semblait la clé. Pour la mise à niveau de la version 1.6 à la version 1.7, j’ai le sentiment que la connexion / déconnexion était la seule solution. Les mises à niveau ultérieures semblaient seulement obliger à me déconnecter de toutes les fenêtres du terminal.
Michael Durrant
8
Veuillez expliquer comment quitter correctement toutes les sessions tmux si vous ne pouvez pas y accéder, car tmux n’est pas compatible avec les versions antérieures! Tuer des processus, ce n’est pas ce que j’appelle sortir, c’est plus un massacre. ;)
Tino
1
J'ai tué ma session tmux existante en utilisant pkill tmux(après avoir cherché une session tmux avec pgrep tmux) depuis un terminal normal. Ensuite, tmux a démarré / s'est comporté correctement ...
mercredi
220

C'est un truc génial, si vous avez besoin de votre tmux pour travailler et que vous ne voulez pas perdre toutes vos sessions:

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

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

message original sur Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp

kanap008
la source
2
Cela avait l'air tellement cool! Mais hélas, dans ma mise à jour debian squeeze -> jessie (avec un arrêt temporaire sur wheezy), j’ai eu: tmux at== no sessions. /var/run/tmux/tmux-0/defaultexisté, alors j'ai essayé: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Maintenant /proc/$(pgrep tmux)/exe== /proc/2534/exe: Permission deniedet ls -l /proc/$(pgrep tmux)/exe== /proc/2534/exe -> /usr/bin/tmux (deleted). :-(
Peter V. Mørch le
Notez cependant que dans le message de Google Plus auquel il est fait référence, Thomas Adam , développeur de tmux , écrit qu’il ne recommande pas de le faire.
Abbafei
Je pense que le descripteur de fichier de / proc / 4705 / exe est un descripteur de fichier obsolète. Puis-je toujours utiliser cette astuce?
Ferrybig
1
@ PeterV.Mørch Les /proc/$pid/exefichiers ne sont pas des liens symboliques ordinaires ; vous devriez pouvoir les utiliser pour invoquer les programmes pertinents, même s'ils ont été dissociés.
Blacklight Shining
1
pgrep -o tmuxdonne le (seul) pid des plus anciennes tmux de course, sans doute celui de la session dont vous avez besoin, donc /proc/$(pgrep -o tmux)/exe attachpourrait fonctionner mieux que simplement en cours d' exécution pgrep tmux(qui peut renvoyer plusieurs PIDS)
Matt Curtis
2

Ce n'est peut-être pas idéal pour vous, mais j'ai créé un chroot, et couru tmuxde l'intérieur:

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

Cela garantit que l'environnement tmux ne change pas pendant la mise à niveau

Peter V. Mørch
la source
0

tuer tout le tmuxprocessus devrait fonctionner car j'ai également rencontré ce problème.

sudo killall -9 tmux
dli
la source