Ich habe erst letzte Woche angefangen, Emacs zu verwenden, und bis jetzt läuft alles gut. Ich verwende tramp, um entfernte Dateien wie folgt zu bearbeiten:
C-x C-f
/ssh:user@server:/file/to/edit
Ich melde mich mit einem SSH-Schlüssel beim Server an, daher wird kein Passwort benötigt. Daher mache ich nichts Besonderes, um Tramp zu starten, und meiner .emacs-Datei wurde nichts hinzugefügt. Ich gebe einfach das Obige in meine lokalen Emacs ein und es funktioniert.
Die Dateien, die ich bearbeite, sind meistens Python (dh: Nur-Text * .py-Dateien) und zum größten Teil funktioniert alles korrekt. Wenn ich jedoch versuche, einige Dateien zu öffnen, werden sie nicht geöffnet und die folgende Meldung wird angezeigt:
gzip: stdin: unexpected end of file
Gibt es eine Möglichkeit, dieses Problem zu umgehen?
UPDATE: Wie in den von mir aktivierten Kommentaren vorgeschlagen (setq tramp-verbose 6)
. Der Tramp-Debug-Puffer ist riesig (Tausende von Zeilen), daher habe ich versucht, die Teile auszuwählen, die wichtig erscheinen oder bei denen ein Fehler erwähnt wird. Hoffentlich hilft dies dabei, herauszufinden, was passiert:
16:11:29.124528 tramp-sh-handle-file-local-copy (3) # Encoding remote file `/ssh:myuser@myserver:/path/to/python/file.py' with `(gzip <%s | base64)'...done
16:11:29.130875 tramp-sh-handle-file-truename (4) # Finding true name for `/ssh:myuser@myserver:/path/to/python/file/'
16:11:29.131565 tramp-send-command (6) # \readlink --canonicalize-missing /path/to/python/file/ 2>/dev/null; echo tramp_exit_status $?
16:11:29.376133 tramp-wait-for-regexp (6) #
16:11:33.245252 tramp-sh-handle-file-local-copy (3) # Decoding local file `/tmp/tramp.4885Mau.py' with `(lambda (beg end) (base64-decode-region beg end) (let ((coding-system-for-write (quote binary)) (coding-system-for-read (quote binary))) (apply (quote call-process-region) (point-min) (point-max) (car (split-string gzip -d)) t t nil (cdr (split-string gzip -d)))))'...done
16:11:33.249827 tramp-call-process (6) # `chown 1000:1000 /tmp/tramp.4885Mau.py' nil nil
16:11:33.252963 tramp-call-process (6) # 0
16:11:33.255820 tramp-handle-insert-file-contents (3) # Inserting `/ssh:myuser@myserver:/path/to/python/file.py'...done
///b47a60d20b86781fc5d02f0fac35ec59#$16:11:34.975322 tramp-send-command-and-check (1) # File error: Couldn't find exit status of `( (test -e /path/to/python/file.py || test -h /path/to/python/file.py) && \stat -c '(("%N") %h %ue0 %ge0 %Xe0 %Ye0 %Ze0 %se0 "%A" t %ie0 -1)' /path/to/python/file.py || echo nil)'
Die letzte Zeile scheint der eigentliche Fehler zu sein.
tramp-inline-compress-start-size
auf 1000000 erhöhen ?tramp-inline-compress-start-size
), komprimiert tramp die Daten auf der Serverseite und dekomprimiert sie auf der Clientseite. Dies gilt nur für Dateien, die größer als,tramp-inline-compress-start-size
aber kleiner als sindtramp-copy-size-limit
.Antworten:
Ich hatte ein ähnliches Problem beim Versuch, einfache ASCII-Dateien über sampp von tramp zu öffnen / zu speichern: Die Dateien waren in Ordnung, ich konnte sie beispielsweise bearbeiten
nano
, aber der Versuch, sie über tramp zu öffnen, wurde mit der eher kryptischen Nachricht abgelehnt :invalid string format
.Dies hing wahrscheinlich mit Inlining und Komprimierung zusammen, da das Ändern dieser Probleme das Problem für mich löste. Folgendes habe ich mithilfe der Benutzeroberfläche getan:
M-x customize-mode RET tramp-mode
Tramp Copy Size Limit
undTramp Inline Compress Start Size
auf eine sehr hohe Zahl (1000000
in meinem Fall) zu vermeiden , Out-of-Band und / oder Druckdatenübertragung. Beachten Sie, dass ich im Gegensatz zum OP beide ändern musste, damit es funktioniert. Dies bedeutet wiederum, dass es nur für die unkomprimierte Inline-Übertragung funktioniert. Für das OP ist dies jedoch mehr als genug, da ich nur relativ kleine ASCII-Dateien mit dem besten vorhandenen Editor aus der Ferne bearbeiten möchte.Ich wollte es nur posten, falls jemand auf dasselbe Problem stößt, weil das Googeln der Fehlermeldung keine nützlichen Ergebnisse brachte und ich eine Weile brauchte, um herauszufinden, dass es mit der Größe der Datei zusammenhängt (was mich zu diesem Beitrag führte ). Wenn Sie zusätzliche Informationen oder Protokolldateien benötigen, um das Problem zu lösen, können Sie sich gerne an uns wenden. Ich glaube jedoch, dass Sie es reproduzieren können, indem Sie die oben genannten Variablen eingrenzen.
Prost! Andres
quelle