问题
24.2 works well, but 24.3 bounded tramp got following error when open remote Linux system files or directories:
"byte-code: Couldn't find a proper `ls' command"
I open tramp trace and find that, all remote search path and file path are extend by something, adding a extra "c:" at the beginning. The results is that tramp can find neither command nor file I want to open.
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 $?
Anyone know something about this? Thanks in advance.
回答1:
I had the same problem after switching to Emacs 24.3. The solution was to upgrade to the latest Tramp 2.2.7. Here is what I did:
- downloaded http://ftp.gnu.org/gnu/tramp/tramp-2.2.7.tar.gz
- unpacked the archive to my ~/.emacs.d/src. I am using emacs-starter-kit which adds this directory and all its subdirectories to the load-path. Otherwise follow the instructions in the Tramp's INSTALL file.
- used Cygwin bash to configure and compile the files. I don't use Cygwin's Emacs normally but it is convenient to have it for occasions like this.
- deleted the old tramp's el and elc files in my emacs/lisp/net for safety.
- restarted Emacs of course.
Do M-x tramp-version to make sure it is installed correctly. Now tramp works everywhere (dired, eshell, shell, etc).
回答2:
Merging the answer by @AlanThird and the comment by @uscjeremy, here is what worked for me (GNU Emacs 24.3.1 (i386-mingw-nt5.1.2600) of 2013-03-17 on MARVIN, Windows XP/SP3/32):
Byte compile
tramp-sh.el
(adapt path accordingly):(byte-compile-file "C:/Program Files (X86)/emacs/lisp/net/tramp-sh.el")
Exit Emacs.
Delete Tramp cache:
~/.emacs.d/tramp
Start Emacs.
See also bug report #14030 on gnu.org.
回答3:
It seems this is a bug in tramp but you don't need to upgrade tramp, all you have to do is recompile tramp-sh.el on a Windows box. See the bug report here for more information.
Enter this on the scratch buffer:
(byte-compile-file "C:/Program Files/emacs/lisp/net/tramp-sh.el")
adjusting the path to match your install, then type Ctrl-Meta-x to recompile the file. If it complains about permissions you might need to restart emacs using the "run as administrator" option in Windows.
Once the file is recompiled type M-x tramp-cleanup-all-connections in order to reset the tramp connection cache. This will close any tramp connections you have open.
回答4:
Using eval-expression
with (byte-compile-file ..)
didn't work for me, but the following did:
- Open emacs as administrator (right click on emacs button on taskbar, right click on emacs icon in resulting popup, click 'Run as Administrator')
- Use Alt-X to do the compilation rather than eval-expression:
M-x byte-compile-file
: c:/Program Files/emacs-24.3/lisp/net/tramp-sh.el - Enter
tramp-cleanup-all-connections
in original emacs window, then try opening your remote file again.
来源:https://stackoverflow.com/questions/15540223/emacs-24-3-for-windows-tramp-byte-code-couldnt-find-a-proper-ls-command