Comecei a usar o emacs na semana passada e tudo está indo bem até agora. Estou usando o tramp para editar arquivos remotos da seguinte maneira:
C-x C-f
/ssh:user@server:/file/to/edit
Efetuo login no servidor usando uma chave ssh, portanto, nenhuma senha é necessária. Portanto, não faço nada de especial para iniciar o tramp e nada foi adicionado ao meu arquivo .emacs, basta digitar o acima no meu emacs local e ele funciona.
Os arquivos que estou editando são principalmente python (ou seja: arquivos de texto simples * .py) e, na maioria das vezes, tudo funciona corretamente. No entanto, quando tento abrir alguns arquivos, eles não abrem e a seguinte mensagem é exibida:
gzip: stdin: unexpected end of file
Existe alguma maneira de contornar esse problema?
ATUALIZAÇÃO: Conforme sugerido nos comentários, ativei (setq tramp-verbose 6)
. O buffer de depuração do tramp é enorme (milhares de linhas), então tentei escolher as partes que parecem importantes ou onde algum tipo de erro é mencionado, espero que ajude a descobrir o que está acontecendo:
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)'
A última linha parece ser o erro real.
tramp-inline-compress-start-size
para algo grande como 1000000?tramp-inline-compress-start-size
), o tramp comprime os dados no lado do servidor e descompacta no lado do cliente. Isso se aplica apenas a arquivos maiores quetramp-inline-compress-start-size
mas menores quetramp-copy-size-limit
.Respostas:
Eu tive um problema semelhante ao tentar abrir / salvar arquivos ASCII simples via sftp do tramp: os arquivos estavam bons, eu conseguia editá-los com, por exemplo
nano
, mas tentar abri-los via tramp seria rejeitado com a mensagem bastante enigmática :invalid string format
.Provavelmente, isso estava relacionado ao inlining e à compactação, porque alterar isso resolveu o problema para mim. Isto é o que eu fiz, usando a interface do usuário:
M-x customize-mode RET tramp-mode
Tramp Copy Size Limit
eTramp Inline Compress Start Size
com um número muito alto (1000000
no meu caso) para evitar a transferência de dados fora da banda e / ou compactada. Observe que, diferentemente do OP, eu tive que mudar os dois para fazê-lo funcionar. Novamente, isso significa que funciona apenas para transferências inline e descompactadas, mas quanto ao OP, isso é mais do que suficiente para mim, pois eu só quero editar remotamente arquivos ASCII pequenos com o melhor editor existente.Só queria publicá-lo, caso alguém tenha o mesmo problema, porque pesquisar a mensagem de erro no Google não trouxe nenhum resultado útil e demorei um pouco para descobrir que estava relacionada ao tamanho do arquivo (o que me levou a esta postagem). ) Se você precisar de informações adicionais ou arquivos de log para resolver o problema, não hesite em perguntar, mas acredito que você poderá reproduzi-lo restringindo as variáveis acima mencionadas.
Felicidades! Andres
fonte