2013-03-21 15 views
15

24.2 funziona bene, ma il 24,3 vagabondo limitata ottenuto seguente errore quando i file di sistema aperti remoti Linux o directory:Emacs 24.3 per Windows, Tramp byte-code: Impossibile trovare una corretta comando `ls'

"byte-code: Couldn't find a proper `ls' command" 

Apro la traccia di tramp e scopro che tutto il percorso di ricerca e il percorso file remoti sono estesi da qualcosa, aggiungendo un extra "c:" all'inizio. Il risultato è che tramp non riesce a trovare né il comando né il file che voglio aprire.

16:04:51.768000 tramp-get-connection-property (7) # process-buffer nil 
16:04:51.769000 tramp-set-file-property (8) # c:/bin file-directory-p nil 
16:04:51.770000 tramp-get-file-property (8) # c:/usr/bin file-directory-p undef 
... 
16:04:59.531000 tramp-sh-handle-file-truename (5) # Check /c: 
16:04:59.532000 tramp-get-file-property (8) # c:/c: file-attributes-integer undef 
... 
16:04:51.773000 tramp-get-connection-property (7) # process-name nil 
16:04:51.773000 tramp-get-connection-property (7) # chunksize 0 
16:04:51.773000 tramp-set-connection-property (7) # last-cmd-time (20809 28067 773000 0) 
16:04:51.774000 tramp-send-string (10) # test -d c\:/usr/bin 2>/dev/null; echo tramp_exit_status $? 

Qualcuno sa qualcosa su questo? Grazie in anticipo.

risposta

3

Ho avuto lo stesso problema dopo il passaggio a Emacs 24.3. La soluzione era l'aggiornamento all'ultima versione di Tramp 2.2.7. Ecco quello che ho fatto:

  1. scaricato http://ftp.gnu.org/gnu/tramp/tramp-2.2.7.tar.gz
  2. scompattare l'archivio al mio ~/.emacs.d/src. Sto usando emacs-starter-kit che aggiunge questa directory e tutte le sue sottodirectory al percorso di caricamento. Altrimenti segui le istruzioni nel file INSTALL di Tramp.
  3. utilizzato Cygwin bash per configurare e compilare i file. Normalmente non utilizzo Cycwin's Emacs, ma è comodo averlo in occasioni come questa.
  4. eliminato i file el e elc del vecchio vagabondo nel mio emacs/lisp/net per sicurezza.
  5. riavviato Emacs ovviamente.

Do M-x versione da vagabondo per assicurarsi che sia installato correttamente. Ora il vagabondo funziona ovunque (dired, eshell, shell, ecc.).

+0

Grazie AlexV, ho compilato e installato 2.2.7 in base ai passaggi. La c extra: è stata eliminata ora. E posso connettermi al server linux remoto ed elencare i file con Dired. Tuttavia, quando ho provato ad aprire un file remoto con pscp, fallisce con un errore di autenticazione di 6 volte, ma sono sicuro di aver inserito la password corretta. Quindi non posso aprire il file, il vagabondo fallisce con il messaggio "uscite dal file, ma non può essere letto". Avete già visto il problema prima? – Carthage

+0

BTW, ho copiato il comando pscp dalla traccia di tramp e lo ho eseguito manualmente nella finestra di cmd, funziona perfettamente. "D:/Programmi/emacs-24.3/bin/cmdproxy.exe -c pscp -l XXXXX -sftp -p -q -r" XXXXX @ server: /aaa/bbb/ccc/ddd.C "" c:/Utenti/XXXXX/AppData/Local/Temp/tramp.7216api.C "&& echo tramp_exit_status 0 || echo tramp_exit_status 1w" – Carthage

+0

Non uso il metodo pscp, solo plink/plinkx e ssh. Hai provato a impostare '(setq tramp-verbose 10)' e quindi monitorare i buffer '* tramp/pscp ... *' e '* debug tramp/pscp ... *'? Potrebbe trattarsi di un eseguibile non trovato all'altra estremità o di alcune variabili con un valore di stallo nella sessione di emacs. –

6

Sembra che si tratti di un bug in tramp ma non è necessario aggiornare il vagabondo, tutto ciò che si deve fare è ricompilare tramp-sh.el su una casella di Windows. Vedi il bug report here per maggiori informazioni.

entrare in questo sul buffer zero:

(byte-compile-file "C:/Program Files/emacs/lisp/net/tramp-sh.el") 

regolando il percorso per abbinare il vostro installare, quindi digitare Ctrl-Meta-x per ricompilare il file. Se si lamenta delle autorizzazioni, potrebbe essere necessario riavviare emacs utilizzando l'opzione "Esegui come amministratore" in Windows.

volta che il file viene ricompilato tipo M-xvagabondo-pulizia-tutti-i collegamenti al fine di ripristinare la cache di connessione vagabondo. Questo chiuderà tutte le connessioni vagabondo che hai aperto.

+2

Non funziona qui * (GNU Emacs 24.3.1 (i386-mingw-nt5.1.2600) del 2013-03-17 su MARVIN *, * Windows XP/SP3/32). * Con esito positivo ho compilato 'tramp- sh.el', quindi riavvia Emacs e c'è ancora il messaggio di errore: 'byte-code: Impossibile trovare un comando' ls 'corretto' – feklee

+0

Risolto "Non ho trovato un comando ls corretto" per me su 24.5. – damg

18

Unire la answer by @AlanThird e il commento di @uscjeremy, qui è quello che ha funzionato per me (GNU Emacs 24.3.1 (i386-mingw-nt5.1.2600) del 2013/03/17 su MARVIN, Windows XP/SP3/32):

  1. Byte compilare tramp-sh.el (adattare percorso di conseguenza):

    (byte-compile-file "C:/Program Files (X86)/emacs/lisp/net/tramp-sh.el") 
    
  2. Exit Emacs.

  3. di cache Elimina Tramp: ~/.emacs.d/tramp

  4. Avviare Emacs.

Vedere anche bug report #14030 su gnu.org.

+2

In base a un commento su http://stackoverflow.com/questions/22381061/emacs-tramp-mode-under-windows-7-using-plink-method fare "Mx tramp-cleanup-all-connections" potrebbe salvare la seccatura di riavviare emacs e cancellare il file. –

+0

@Alan: no, per me non è stato d'aiuto. Dovevo comunque riavviare un Emacs. – avp

1

Utilizzando eval-expression con (byte-compile-file ..) non ha funzionato per me, ma il seguente fatto:

  1. emacs Apri come amministratore (tasto destro del mouse sul pulsante di emacs sulla barra delle applicazioni, fare clic destro su emacs icona nella conseguente comparsa, fare clic su ' Esegui come amministratore ')
  2. Utilizzare Alt-X per fare la compilazione piuttosto che eval-espressione: M-x byte-compile-file: c:/Program Files/emacs-24.3/lisp/net/vagabondo-sh.el
  3. Inserisci tramp-cleanup-all-connections in originale emacs window, quindi prova ad aprire nuovamente il tuo file remoto.