Vagabundo no puede abrir algunos archivos

10

Acabo de comenzar a usar emacs la semana pasada y todo va bien hasta ahora. Estoy usando vagabundo para editar archivos remotos de la siguiente manera:

C-x C-f
/ssh:user@server:/file/to/edit

Me conecto al servidor con una clave ssh, por lo que no se necesita contraseña. Por lo tanto, no hago nada especial para iniciar el vagabundo y no se ha agregado nada a mi archivo .emacs, simplemente escribo lo anterior en mi emacs local y funciona.

Los archivos que estoy editando son en su mayoría python (es decir: archivos de texto plano * .py) y en su mayor parte todo funciona correctamente. Sin embargo, cuando intento abrir algunos archivos, no se abren y aparece el siguiente mensaje:

gzip: stdin: unexpected end of file

¿Hay alguna forma de solucionar este problema?

ACTUALIZACIÓN: Como se sugiere en los comentarios que habilité (setq tramp-verbose 6). El búfer de depuración de vagabundos es enorme (miles de líneas), así que he tratado de elegir las partes que parecen ser importantes o donde se menciona algún tipo de error, con suerte eso ayudará a descubrir lo que está sucediendo:

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)'

La última línea parece ser el error real.

Darkpool
fuente
Muéstranos ese archivo, o al menos el final del mismo. ¿Puedes descomprimirlo sin problemas si lo haces fuera de Emacs?
Dibujó el
Es solo un archivo de texto de Python normal. Supongo que cuando accedo con vagabundo, se comprime automáticamente para permitir un tamaño de transferencia más pequeño. No será de mucha ayuda publicar ninguno de los archivos de Python porque son bastante grandes (más de 100 líneas de código). Pero al final, son solo archivos de Python de texto sin formato. Una cosa que no es, los archivos estaban originalmente en mi máquina local y usé sftp para subirlos al servidor. No estoy seguro si eso importa.
darkpool
2
¿El problema desaparece si aumenta el valor de tramp-inline-compress-start-sizealgo tan grande como 1000000?
nispio
Gracias @nispio que hizo el truco. Parece estar trabajando ahora. Por interés, ¿cuál es la diferencia entre su sugerencia y el límite de tamaño de copia de vagabundo? Parece que tal vez eso también podría haber sido una solución, ¿o no?
darkpool
3
En realidad, no hemos solucionado su problema, solo hemos demostrado que probablemente sea un problema con la compresión en línea del vagabundo. Si los archivos son lo suficientemente grandes (más grandes que tramp-inline-compress-start-size), entonces vagabundo comprime los datos en el lado del servidor y los descomprime en el lado del cliente. Esto solo se aplica a archivos que son más grandes tramp-inline-compress-start-sizepero más pequeños que tramp-copy-size-limit.
nispio

Respuestas:

7

Tuve un problema similar al intentar abrir / guardar archivos ASCII simples a través de sftp de tramp: los archivos estaban bien, pude editarlos, por ejemplo nano, pero tratar de abrirlos a través de vagabundo sería rechazado con el mensaje bastante críptico : invalid string format.

Esto probablemente estaba relacionado con la alineación y la compresión, porque cambiarlas resolvió el problema para mí. Esto es lo que he hecho, usando la interfaz de usuario:

  1. M-x customize-mode RET tramp-mode
  2. Establecer Tramp Copy Size Limity Tramp Inline Compress Start Sizeen un número muy alto ( 1000000en mi caso) para evitar la transferencia de datos fuera de banda y / o comprimida. Tenga en cuenta que, a diferencia del OP, tuve que cambiar ambos para que funcione. Nuevamente, esto significa que solo funciona para la transferencia en línea, sin comprimir, pero en cuanto al OP, esto es más que suficiente para mí, ya que solo quiero editar de forma remota archivos ASCII bastante pequeños con el mejor editor que existe.

Solo quería publicarlo en caso de que alguien se encuentre con el mismo problema, porque buscar en Google el mensaje de error no arrojó ningún resultado útil y me tomó un tiempo descubrir que estaba relacionado con el tamaño del archivo (lo que me llevó a esta publicación ) Si necesita información adicional o archivos de registro para resolver el problema, no dude en preguntar, pero creo que podrá reproducirlo al reducir las variables mencionadas anteriormente.

¡Salud! Andres

fr_andres
fuente