no coinciden las versiones del protocolo (cliente 8, servidor 6) al intentar actualizar

65

Estoy tratando de actualizar a una versión más nueva (que tiene una corrección de errores) que mi 1.6 actual. Estoy en Ubuntu y recientemente me actualicé a Ubuntu 13.04.

Idealmente, quiero usar tmux versión 1.8 o incluso 1.9. He descargado versiones más nuevas pero no puedo hacer que funcionen.

Descargué 1.9a pero cuando intento ejecutarlo, simplemente se cuelga.

Intenté esta descarga: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

e hizo el

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

pero consigo

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

Traté de descargar y usar una versión 1.8.4, pero la descarga no parecía tener archivos que pudiera usar.

Michael Durrant
fuente

Respuestas:

31

Básicamente, esto le dice que ya tiene un tmuxservidor (antiguo) en ejecución y que el nuevo tmuxno puede conectarse porque ya no se entienden entre sí. Salga de todas sus tmuxsesiones existentes y comience una nueva con la nueva versión y todo debería estar bien.

Andreas Wiese
fuente
Sí, cerrar sesión parecía clave. Para la actualización 1.6 a 1.7, siento que cerrar sesión / iniciar sesión fue la única solución. Las actualizaciones de versiones posteriores solo parecían requerir que me desconectara de todas las ventanas de terminal.
Michael Durrant
8
Explique cómo salir de todas las sesiones de tmux correctamente si no puede acceder a ellas, ¡porque tmux no es compatible con versiones anteriores! Los procesos de asesinato no son lo que yo llamo salir, esto es más como una masacre. ;)
Tino
1
Maté mi sesión tmux existente usando pkill tmux(después de buscar una sesión tmux con pgrep tmux) desde un terminal normal. Después, tmux se lanzó / se comportó correctamente ...
temuraru
220

Hack bastante impresionante, si necesitas que tu tmux funcione y no quieres perder todas tus sesiones:

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

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

publicación original en Google Plus: https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp

kanap008
fuente
2
¡Esto se veía genial! Pero, por desgracia, en mi compresión de Debian -> actualización de Jessie (con una parada temporal en wheezy), obtuve: tmux at== no sessions. /var/run/tmux/tmux-0/defaultexistió, así que intenté: tmux -S /var/run/tmux/tmux-0/default at== protocol version mismatch (client 8, server 6). Ahora /proc/$(pgrep tmux)/exe== /proc/2534/exe: Permission deniedy ls -l /proc/$(pgrep tmux)/exe== /proc/2534/exe -> /usr/bin/tmux (deleted). :-(
Peter V. Mørch
Sin embargo, tenga en cuenta que en la publicación de Google Plus a la que se hace referencia, el desarrollador de tmux Thomas Adam escribe que no recomienda hacerlo.
Abbafei
Tengo el problema de que el identificador de archivo en / proc / 4705 / exe es un identificador de archivo obsoleto. ¿Puedo seguir usando este truco?
Ferrybig
1
@ PeterV.Mørch Los /proc/$pid/exearchivos no son enlaces simbólicos regulares ; debería poder usarlos para invocar los programas relevantes incluso si se han desvinculado.
Blacklight Shining
1
pgrep -o tmuxda el (único) pid del tmux en ejecución más antiguo, presumiblemente el que tiene la sesión que necesita, por lo que /proc/$(pgrep -o tmux)/exe attachpodría funcionar mejor que solo en ejecución pgrep tmux(que puede devolver múltiples pids)
Matt Curtis
2

Tal vez esto no sea ideal para ti, pero creé un chroot, y corrí tmuxdesde adentro:

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

Esto asegura que el entorno tmux no cambie durante la actualización

Peter V. Mørch
fuente
0

matar todo el tmuxproceso debería funcionar ya que también me encontré con este problema.

sudo killall -9 tmux
dli
fuente