J'ai des difficultés à mettre en place un tramp avec EmacSW32 et Cygwin. J'ai configuré Emacs pour utiliser Cygwin comme Shell à l'aide de W32Shell. J'ai également défini la variable d'environnement domestique à C: / Cygwin / Home / MyUSNername P>
problème est que le tramp semble suspendre et qu'aucune connexion n'est faite: p>
"Tramp d'attente pour les invites pour la nouvelle coquille". P>
J'ai essayé d'activer le débogage, mais je ne vois toujours que ce message. Hâte d'obtenir des conseils à ce sujet. Merci. p>
4 Réponses :
Prenez note des informations liées à Cygwin sur le Wiki EMACS: http://www.emacswiki.org/emacs/trampmode
Je ne sais pas Utilisez EmacSw32, mais j'utilise avec succès le tramp sur SSH avec Cygwin et NT Emacs. P>
Je n'ai jamais eu de tramp sans agir sans agent SSH (vous invitant à des références) - Comme vous l'avez remarqué - Mais cela fonctionne bien avec un, donc je n'ai pas passé du temps à essayer de résoudre cela. En supposant que vous êtes également heureux d'utiliser un agent (et vous avez déjà généré vos clés et ajouté des fichiers autorisés si nécessaire), l'approche qui fonctionne pour moi est la suivante: p>
(méthode SSTQ TRAMP-défaut "SSHX") CODE>) . li>
ol> Ces points sont tous couverts au wiki, mais vous pouvez également automatiser les choses quelque peu: p>
pour l'étape 1, mon profil Bash commence automatiquement un agent SSH si l'on ne marche pas déjà , ou m'emprime ma passhrasphrase si mon identité a expiré. (Voir le code ci-dessous.) P>
Pour l'étape 2, la cible de mon raccourci Windows pour le lancement de EMACS ressemble à ceci: p>
C: \ cygwin \ bin \ bash.exe --Login -c "env Accation = \" `cygpath '% Appdata%'` \ "/cygdrive/c/emacs/emacs-23.1/bin/runemacs.exe"
le - Connexion CODE> Argument signifie que mon profil Bash est exécuté, ce qui garantit que l'étape 1 a toujours été prise en charge avant le démarrage d'EMACS. P> (paramètre Accueil Code > n'est pas nécessaire pour le tramp, mais % appdata% code> est la valeur par défaut sous EMACS NT, ce qui empêche le répertoire de base Cygwin de la priorité, en gardant donc votre configuration EMACS cohérente, que vous utilisiez ce raccourci. Pour l'exécuter.) P> Enfin, voici le code de mon cygwin .bash_profile qui gère mon agent SSH. C'est un peu hacky, mais ça marche pour moi. P>
Notez que j'expire mon identité après 4 heures (14400 secondes). Le tramp peut accrocher après cela se produit (comme mentionné précédemment, je ne l'ai jamais pu me demander des informations d'identification), alors soyez au courant de cette question. Tapez C-G code> pour l'arrêter de tenter de vous connecter. Pour reprendre la connectivité, vous pouvez généralement commencer à démarrer une autre coque Cygwin, à ressaisir votre phrase secrète, puis le tramp sera de nouveau heureux. De temps en temps, il est resté insensible, mais tuant le tampon * TRAMP * TRY SOIT. Ne pas expirer votre identité devrait contourner cette question, bien sûr, devrait être acceptable. P> SSH_ENV="${HOME}/.ssh/environment"
# Run ssh-agent, if one is not already running
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent -t 14400 | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" >/dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" >/dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ >/dev/null || {
start_agent;
}
#if our ssh-added identity has expired (see -t option to ssh-agent)
#then we need to re-add it
if ! /usr/bin/ssh-add -l >/dev/null; then
/usr/bin/ssh-add;
fi
else
#no ssh-agent running at the moment
start_agent;
fi
Pour travailler avec W32 Emacs, vous pouvez utiliser PUTTY et son agent de gestion clé PAGENT. Pour vous connecter, utilisez 'PSCP' comme méthode du tramp. Une fois que vous avez cette configuration, Tramp fonctionne bien.
Merci pour vos réponses. Il a résolu le problème pour que je puisse utiliser un agent de gestion clé. Je suis allé avec la solution SSH-Agent depuis que je trouve une gestion clé un peu encombrante avec mastic.
comme une note de pied, j'ai depuis modifié la façon dont j'utilise le tramp sous Windows. p>
Le tramp sous Windows était tout simplement trop lent. La caractéristique maître de contrôle de OpenSSH était ce dont j'avais besoin - cela conserve une connexion SSH persistante ouverte, éliminant ainsi la connexion coûteuse qui est autrement requise pour chaque opération de tramp. Malheureusement, Cygwin est fondamentalement incapable de soutenir le maître de contrôle à ce stade à l'heure: / p>
Ceci étant le cas, ma solution actuelle ne doit pas exécuter Emacs dans Windows du tout. Au lieu de cela, j'ai installé le serveur X.org de Cygwin et a commencé à exécuter Emacs sur une machine virtuelle GNU / Linux (hébergée sur ma boîte Windows) et à l'aide de l'affichage Cygwin X. P>
Cela fonctionne vraiment très bien. P>
Je couronne des emacs en mode Daemon, ce qui signifie que cela n'a pas d'importance s'il y a toujours des problèmes avec le serveur X, et si je dois éteindre la boîte Windows, je peux simplement enregistrer l'état du VM , la restauez ensuite et ne perdez pas ma séance (*). (Desktop.el fournit une simple gestion de session décente dans tous les cas ou si vous devez redémarrer la machine virtuelle; mais si vous utilisez cela, vous souhaiterez peut-être modifier le Assurez-vous de démarrer le serveur X de Cygwin avec Les méthodes "SCPC" et "RSYNCC" utilisent automatiquement le maître de contrôle. J'exécute toujours un agent SSH sur la boîte Linux, cependant (pour éviter le besoin d'authentifier lors de l'ouverture des coquilles distantes d'Emacs, etc.). La commande 'emacs - daemon' devient alors quelque chose comme Et enfin, sur cette dernière note, si vous utilisez un mécanisme similaire à celui que j'ai initialement mentionné pour la gestion de votre agent SSH Cygwin dans votre Bash_Profile, prenez note prudente de ce qui se passe lorsque vous démarrez le serveur X à partir des fenêtres. Raccourci Lorsque vous n'avez pas d'identité authentifiée chargée - rien du tout (jusqu'à ce que vous regardiez dans le gestionnaire de tâches et que vous voyez le processus SSH-Ajoutez-vous). Par conséquent, je recommande toujours d'utiliser EDIT: Desktop-Files-Not-to-Sauvegarder Code> Variable de sorte qu'il n'ignore pas tous vos tampons de tramp! Je viens de le mettre à "
^ $ code>") p>
startxwin code> plutôt que
startx code> (l'ancien active que les fenêtres du serveur X apparaissent sous forme de fenêtres Windows régulières), puis à partir d'un xterm Vous pouvez exécuter
ssh -y (moi) @ (linux) -f "emacs -daemon" code> pour démarrer le serveur initialement et
ssh -y (moi) @ (Linux) -F "emacsclient -c" code> pour démarrer un nouveau client. P>
ssh -y (moi) @ (linux) -f "source ~ / .ssh / agent-environnement && emacs - daemon" code>, présumant que Vous avez dirigé / copié SSH-Agent Sortie dans ce fichier lorsque vous l'avez couru (je ne me préoccupe pas d'une heure d'identité pour celui-ci). P>
startxwin code> de la ligne de commande afin d'éviter cela. P>
(*) C'était une mauvaise hypothèse. Depuis, j'ai réalisé que le redémarrage du serveur X réellement les em> m'empêche de reconnecter après le démon Emacs, qui est plutôt malheureux. Par conséquent, je compte tout à fait sur la bibliothèque de bureau pour restaurer ma session. J'utilise sauvegarde automatique code> pour enregistrer régulièrement mon fichier de bureau pour le maintenir à jour. Voir le Wiki EMACS pour cette option et d'autres options d'amélioration de la fonction de bureau. P>
En outre, en présumant que vous souhaitez partager votre fichier .emacs entre les boîtes Windows et Linux, assurez-vous d'envelopper votre intégration Win32 / Cygwin à l'intérieur de quelque chose comme ceci: (lorsque (Type de système EQ »Windows-NT) (exiger 'My-Win32) )
J'utilisais l'emacSW32, mais j'ai eu des tonnes de problèmes comme celui-ci. Ils sont tous partis quand je suis passé à Emacs de Cygwin. Il est probablement déjà installé. Tapez simplement les éléments suivants à une invite BASH:
XWin -multiwindow & export DISPLAY=:0.0 emacs
aujourd'hui Cygwin est livré avec Je recommande de commencer par: p> emacs-w32 code> de sorte que vous n'avez pas besoin de démarrer X Server.
cygstart --action=runas run emacs-w32
Avez-vous essayé
c: \ cygwin code> avec la barre oblique l'autre sens?