โปรโตคอลรุ่นไม่ตรงกัน (ไคลเอนต์ 8, เซิร์ฟเวอร์ 6) เมื่อพยายามอัพเกรด


65

ฉันกำลังพยายามอัปเกรดเป็นเวอร์ชันที่ใหม่กว่า (ที่มีการแก้ไขข้อบกพร่อง) กว่า 1.6 ปัจจุบันของฉัน ฉันใช้ Ubuntu และเพิ่งอัพเกรดเป็น Ubuntu 13.04

นึกคิดฉันต้องการใช้ tmux รุ่น 1.8 หรือ 1.9 ฉันดาวน์โหลดเวอร์ชันที่ใหม่กว่า แต่ไม่สามารถใช้งานได้

ฉันดาวน์โหลด 1.9a แต่เมื่อฉันลองและเรียกใช้มันแค่แฮงค์

ฉันลองดาวน์โหลดนี้: http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/README#l26

และทำ

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

แต่ฉันได้รับ

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

ฉันพยายามดาวน์โหลดและใช้รุ่น 1.8.4 แต่การดาวน์โหลดดูเหมือนจะไม่มีไฟล์ที่ฉันสามารถใช้ได้

คำตอบ:


31

โดยพื้นฐานแล้วสิ่งนี้บอกคุณว่าคุณมีผู้ใช้ (เก่า) - ผู้tmuxใช้งานอยู่และผู้ใช้ใหม่tmuxไม่สามารถเชื่อมต่อได้เพราะพวกเขาไม่เข้าใจซึ่งกันและกันอีกต่อไป ออกจากtmuxเซสชันที่มีอยู่ทั้งหมดของคุณและเริ่มเซสชันใหม่โดยใช้เวอร์ชันใหม่และทุกอย่างน่าจะดี


ใช่ออกจากระบบดูเหมือนกุญแจ สำหรับการอัปเกรด 1.6 ถึง 1.7 ฉันรู้สึกว่าการออกจากระบบ / เป็นเพียงการแก้ไข การอัพเกรดรุ่นต่อมาดูเหมือนจะทำให้ฉันต้องออกจากระบบเทอร์มินัล windows ทั้งหมด
Michael Durrant

8
โปรดอธิบายวิธีออกจากเซสชัน tmux ทั้งหมดอย่างถูกต้องหากคุณไม่สามารถเข้าถึงได้เนื่องจาก tmux ไม่เข้ากันได้ย้อนหลัง! กระบวนการฆ่าไม่ใช่สิ่งที่ฉันเรียกว่าออกนี่เป็นเหมือนการสังหารหมู่ ;)
Tino

1
ฉันฆ่าเซสชัน tmux ที่มีอยู่ของฉันโดยใช้pkill tmux(หลังจากค้นหาเซสชัน tmux ด้วยpgrep tmux) จากเทอร์มินัลปกติ หลังจากนั้น tmux เปิด / ประพฤติอย่างถูกต้อง ...
temuraru

220

แฮ็คที่ยอดเยี่ยมหากคุณต้องการ tmux ของคุณทำงานและไม่ต้องการที่จะสูญเสียการประชุมทั้งหมด:

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

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

โพสต์ต้นฉบับบน Google Plus - https://plus.google.com/110139418387705691470/posts/BebrBSXMkBp


2
มันดูเท่มาก! แต่อนิจจาในบีบเดเบียนของฉัน -> อัพเกรด jessie (ที่มีการหยุดชั่วคราวดังเสียงฮืด ๆ ) ผมได้: ==tmux at มีอยู่ดังนั้นฉันพยายาม: == ตอนนี้== และ== :-(no sessions/var/run/tmux/tmux-0/defaulttmux -S /var/run/tmux/tmux-0/default atprotocol version mismatch (client 8, server 6)/proc/$(pgrep tmux)/exe/proc/2534/exe: Permission deniedls -l /proc/$(pgrep tmux)/exe/proc/2534/exe -> /usr/bin/tmux (deleted)
Peter V. Mørch

อย่างไรก็ตามโปรดทราบว่าในโพสต์ของ Google Plusซึ่งมีการอ้างอิงนักพัฒนา tmux Thomas Adamเขียนว่าเขาไม่แนะนำให้ทำเช่นนี้
Abbafei

ฉันพบปัญหาที่ตัวจัดการไฟล์ที่ / proc / 4705 / exe เป็นตัวจัดการไฟล์เก่า ฉันยังใช้เคล็ดลับนี้ได้ไหม?
Ferrybig

1
@ PeterV.Mørch /proc/$pid/exeไฟล์ไม่ได้ symlinks ปกติ ; คุณควรจะสามารถใช้โปรแกรมเหล่านี้เพื่อเรียกใช้โปรแกรมที่เกี่ยวข้องแม้ว่าจะยกเลิกการเชื่อมโยงแล้วก็ตาม
แบล็กไลท์ส่องแสง

1
pgrep -o tmuxให้ (เดี่ยว) pid ของ tmux ทำงานที่เก่าแก่ที่สุดน่าจะเป็นหนึ่งเดียวกับเซสชั่นที่คุณต้องการดังนั้น/proc/$(pgrep -o tmux)/exe attachอาจทำงานได้ดีกว่าเพียงแค่การทำงานpgrep tmux(ซึ่งสามารถกลับ PIDs หลาย)
แมตต์เคอร์ติ

2

นี่อาจไม่เหมาะสำหรับคุณ แต่ฉันสร้างchrootและวิ่งtmuxจากข้างใน:

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

สิ่งนี้ทำให้มั่นใจได้ว่าสภาพแวดล้อม tmux จะไม่เปลี่ยนแปลงระหว่างการอัพเกรด


0

kill tmuxกระบวนการทั้งหมดควรทำงานตามที่ฉันยังพบปัญหานี้

sudo killall -9 tmux
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.