Cygwin tmux: “Échec de la connexion au serveur: pas d'erreur”


7

Comme le titre l'indique, chaque fois que j'essaie de démarrer tmux dans Cygwin 64 bits (Win7), avec aucun argument ou aucun argument à part --help, J'obtiens l'erreur suivante:

$ tmux
failed to connect to server: No error

Je ne peux pas reproduire ceci sous Linux. Toute aide serait grandement appréciée.

Merci!

Réponses:


6

Cela fonctionne pour moi aussi sur Win7 32 bits. Mais je dois supprimer le répertoire à chaque fois avant de lancer tmux, alors je viens d'ajouter un alias à .bashrc.

alias tmux='rm -rf /tmp/tmux* && tmux'

Il semble que cygwin n’utilise pas toujours / tmp pour le répertoire temporaire. Mon répertoire temporaire était /cygdrive/c/Users/<username>/AppData/Local/Temp/tmux-1000/ et enregistré dans quelques variables différentes: $TMPDIR, $temp, et $tmp. Je ne sais pas quel tmux utilisait réellement, mais si cette réponse ne fonctionne pas pour quelqu'un, vérifiez ces variables pour voir si tmux stocke son répertoire de travail ailleurs.
Matthew

4

La méthode d'alias suggérée par bender ne fonctionne pas vraiment si vous essayez de vous reconnecter, car elle tue les sessions existantes. Ce qui suit semble avoir résolu le problème pour moi:

  1. Enregistrez le script Perl à http://pastebin.com/nN6zX37K sur "~ / bin / tmux" ou ailleurs sur votre chemin, devant / usr / bin.

  2. Donnez-lui les autorisations d'exécution: "chmod + x ~ / bin / tmux".

  3. Quittez et rouvrez Cygwin.

  4. Exécutez les commandes tmux normalement.

Cela fonctionne car il détecte l'état où tmux s'est entièrement fermé sans supprimer son répertoire temporaire, ce qu'il résout en supprimant le répertoire temporaire (comme suggéré par bender), puis exécute la commande souhaitée.


2

essayez la commande strace -f -o strace.out tmux new puis vérifiez le fichier strace.out pour des raisons possibles. J'ai eu la même erreur et supprimé le dossier / tmp / tmux-XXXXX, il avait des autorisations incorrectes.


Je vous remercie!! La strace m'a montré que tmux créait son répertoire temporaire dans / cygdrive / c / Users / & lt; username & gt; / AppData / Local / Temp / tmux-1000 / au lieu de / tmp où il semble que ce soit pour les autres personnes ici. Après avoir supprimé ce répertoire, tmux a pu démarrer normalement.
Matthew

2

La plupart des solutions pour supprimer simplement les fichiers tmux dans / tmp empêcheront de se reconnecter à une session détachée si tmux fonctionne réellement.

Cette solution est similaire à la solution perl, en ce sens qu'elle dispose de quelques gardes avant de supprimer des éléments dans / tmp, mais qu'elle est implémentée dans bash.

Ajoutez ceci à votre ~ / .bashrc

tmux() {
  local tmux_cmd
  if ! tmux_cmd=$(which tmux); then
    echo "error: tmux not installed" >&2
    return 1
  fi
  if ! $tmux_cmd ls > /dev/null 2>&1; then
    # tmux ls returned error, so lets try cleaning up /tmp
    /bin/rm -rf /tmp/tmux*
  fi
  $tmux_cmd "$@"
}

vous pouvez également supprimer les fichiers et SIGUSR1 le processus tmux pour qu'il recrée le socket tmux-XXXXX / default.
Jay R. Wren

-1

supprimez simplement le dossier / tmp / tmux- * au démarrage:

cat rm -r / tmp / tmux- * & gt; & gt; ~ / .bashrc


2
Veuillez expliquer dans la réponse pourquoi cela résoudrait le problème. De plus, la commande ne fonctionne pas réellement. Vous voudrez probablement utiliser echo avec des guillemets simples.
mtak
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.