Emacs 24.3 for windows,Tramp byte-code:找不到合适的`ls'命令

时间:2013-03-21 05:32:33

标签: windows emacs tramp

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

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

我打开tramp trace并发现,所有远程搜索路径和文件路径都是通过某种东西扩展,在开头添加一个额外的“c:”。结果是tramp既没有找到我想要打开的命令也没有找到文件。

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 $? 

有人对此有所了解吗?提前谢谢。

4 个答案:

答案 0 :(得分:18)

合并answer by @AlanThird和@uscjeremy的评论,这是对我有用的(2013-03-17的GNU Emacs 24.3.1(i386-mingw-nt5.1.2600),关于MARVIN, Windows XP / SP3 / 32):

  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。

  5. 另见gnu.org上的bug report #14030

答案 1 :(得分:6)

这似乎是tramp中的一个错误,但你不需要升级tramp,所有你需要做的就是在Windows机器上重新编译tramp-sh.el。有关详细信息,请参阅错误报告here

在暂存缓冲区中输入:

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

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

重新编译文件后,键入 M-x tramp-cleanup-all-connections 以重置tramp连接缓存。这将关闭您打开的任何流浪汉连接。

答案 2 :(得分:3)

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

  1. 已下载http://ftp.gnu.org/gnu/tramp/tramp-2.2.7.tar.gz
  2. 将存档解压缩到我的〜/ .emacs.d / src。我正在使用emacs-starter-kit,它将此目录及其所有子目录添加到load-path。否则,请按照Tramp的INSTALL文件中的说明进行操作。
  3. 使用Cygwin bash配置和编译文件。我没有正常使用Cygwin的Emacs,但在这样的场合使用它很方便。
  4. 为了安全起见,删除了我的emacs / lisp / net中的旧tramp的el和elc文件。
  5. 当然重启了Emacs。
  6. 执行M-x tramp-version以确保正确安装。现在tramp到处工作(dired,eshell,shell等)。

答案 3 :(得分:2)

eval-expression(byte-compile-file ..)一起使用对我来说没有用,但以下是:

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