Emacs 24.3 для windows, байт-код барабана: не удалось найти правильную команду `ls '

24.2 работает хорошо, но 24.3 ограниченный tramp получил следующую ошибку при открытии удаленных системных файлов или каталогов Linux:

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

Я открываю трассировку tramp и обнаруживаю, что все удаленные пути поиска и путь к файлу расширяются на что-то, добавляя в начале дополнительные "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 $? 

Кто-нибудь знает об этом? Спасибо заранее.

Ответы

Ответ 1

У меня была такая же проблема после переключения на Emacs 24.3. Решением было обновление до последней версии Tramp 2.2.7. Вот что я сделал:

  • загружен http://ftp.gnu.org/gnu/tramp/tramp-2.2.7.tar.gz
  • распаковали архив в папку ~/.emacs.d/src. Я использую emacs-starter-kit, который добавляет этот каталог и все его подкаталоги в путь загрузки. В противном случае следуйте инструкциям в файле Tramp INSTALL.
  • используется Cygwin bash для настройки и компиляции файлов. Я не использую Cygwin Emacs нормально, но удобно иметь его для таких случаев.
  • удалил старые файлы tramp el и elc в emacs/ lisp/net для обеспечения безопасности.
  • конечно, перезапустили Emacs.

Сделайте M-x tramp-версию, чтобы убедиться, что она установлена ​​правильно. Теперь бродяга работает повсюду (устно, неэшелл, оболочка и т.д.).

Ответ 2

Объединив ответ от @AlanThird и комментарий от @uscjeremy, вот что сработало для меня (GNU Emacs 24.3.1 (i386-mingw-nt5.1.2600 ) 2013-03-17 на MARVIN, Windows XP/SP3/32):

  • Байт компилирует tramp-sh.el (соответственно адаптировать путь):

    (byte-compile-file "C:/Program Files (X86)/emacs/lisp/net/tramp-sh.el")
    
  • Выход из Emacs.

  • Удалить кеш Tramp: ~/.emacs.d/tramp

  • Запустите Emacs.

См. также отчет об ошибке # 14030 на gnu.org.

Ответ 3

Кажется, это ошибка в tramp, но вам не нужно обновлять tramp, все, что вам нужно сделать, это перекомпилировать tramp-sh.el в окне Windows. Подробнее см. Отчет об ошибке здесь.

Введите это в буфер нуля:

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

настройка пути в соответствии с вашей установкой, затем введите Ctrl-Meta-x, чтобы перекомпилировать файл. Если он жалуется на разрешения, вам может потребоваться перезапустить emacs, используя параметр "запустить как администратор" в Windows.

Как только файл перекомпилирует тип M-x tramp-cleanup-all-connections, чтобы reset использовать кеш-троп. Это закроет любые открытые tramp соединения.

Ответ 4

Использование eval-expression с (byte-compile-file ..) не сработало для меня, но следующее:

  • Откройте emacs как администратор (щелкните правой кнопкой мыши по кнопке emacs на панели задач, щелкните правой кнопкой мыши по значку emacs в появившемся всплывающем окне, нажмите "Запуск от имени администратора" )
  • Используйте Alt-X для выполнения компиляции, а не eval-выражения: M-x byte-compile-file: c:/Program Files/emacs-24.3/lisp/net/tramp-sh.el
  • Введите tramp-cleanup-all-connections в исходное окно emacs, затем снова попробуйте открыть удаленный файл.