Emacs 24.3 for windows,Tramp字节码:找不到合适的`ls'命令

24.2运行良好,但打开远程Linux系统文件或目录时,24.3有界stream量有以下错误:

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

我打开tramp trace,发现所有的远程searchpath和文件path都是由某些东西扩展的,在开头增加了一个额外的“c:”。 结果是,stream氓可以find既不命令也不打开文件。

 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 -dc\:/usr/bin 2>/dev/null; echo tramp_exit_status $? 

任何人都知道这件事? 提前致谢。

切换到Emacs 24.3后,我遇到了同样的问题。 解决方案是升级到最新的Tramp 2.2.7。 这是我做的:

  1. 下载http://ftp.gnu.org/gnu/tramp/tramp-2.2.7.ta​​r.gz
  2. 将档案解压到我的〜/ .emacs.d / src。 我正在使用emacs-starter-kit将这个目录及其所有子目录添加到加载路径。 否则,按照Tramp的INSTALL文件中的说明进行操作。
  3. 使用Cygwin bash来配置和编译文件。 我通常不使用Cygwin的Emacs,但在这种情况下使用它很方便。
  4. 为了安全起见,删除了emacs / lisp / net中旧的tramp的el和elc文件。
  5. 当然重新启动Emacs。

做Mx流浪汉版本,以确保它安装正确。 现在tramp可以在任何地方工作(dired,eshell,shell等)。

合并@AlanThird的答案和@uscjeremy的评论,这是什么对我来说(在MARVIN,Windows XP / SP3 / 32上的2013-03-17的GNU Emacs 24.3.1(i386-mingw-nt5.1.2600)) :

  1. 字节编译tramp-sh.el (相应地调整路径):

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

  3. 删除Tramp缓存: ~/.emacs.d/tramp

  4. 启动Emacs。

请参阅gnu.org上的错误报告#14030 。

看起来这是一个流氓中的错误,但是你不需要升级流氓软件,你所要做的就是在Windows上重新编译tramp-sh.el。 有关更多信息,请参阅此处的错误报告。

在暂存缓冲区中输入:

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

调整路径以匹配您的安装,然后键入Ctrl-Meta-x重新编译该文件。 如果它抱怨权限,则可能需要使用Windows中的“以管理员身份运行”选项重新启动emacs。

一旦文件被重新编译,请键入Mx tramp-cleanup-all-connections以重置tramp连接缓存。 这将关闭您打开的任何流氓连接。

使用eval-expression (byte-compile-file ..)对我来说不起作用,但是下面这样做了:

  1. 以管理员身份打开emacs(右键单击任务栏上的emacs按钮,右键点击弹出的emacs图标,点击“以管理员身份运行”)
  2. 使用Alt-X进行编译而不是eval-expression: Mx byte-compile-file :c:/ Program Files / emacs-24.3 / lisp / net / tramp-sh.el
  3. 在原始emacs窗口中输入tramp-cleanup-all-connections ,然后再次尝试打开远程文件。