Vagabundo incapaz de abrir alguns arquivos

10

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.

darkpool
fonte
Nos mostrar esse arquivo, ou pelo menos o final dele? Você pode descompactá-lo sem problemas se fizer isso fora do Emacs?
Tirou
É apenas um arquivo de texto python comum. Presumo que ao acessá-lo com o tramp, ele é automaticamente compactado para permitir um tamanho de transferência menor. Não será de grande ajuda publicar nenhum arquivo python, porque eles são muito grandes (mais de 100 linhas de código). Mas no final, eles são apenas arquivos python de texto simples. Uma coisa a não fazer é que os arquivos estavam originalmente na minha máquina local e usei o sftp para carregá-los no servidor. Não tenho certeza se isso importa.
darkpool
2
O problema desaparece se você aumentar o valor tramp-inline-compress-start-sizepara algo grande como 1000000?
Nispio
Obrigado @nispio que fez o truque. Parece estar funcionando agora. Fora de interesse, qual é a diferença entre sua sugestão e o limite de tamanho da cópia de vagabundo? Parece que talvez isso também tenha sido uma solução, ou não?
darkpool
3
Na verdade, não corrigimos o seu problema, apenas mostramos que provavelmente é um problema com a compactação inline do tramp. Se os arquivos forem grandes o suficiente (maiores que 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 que tramp-inline-compress-start-sizemas menores que tramp-copy-size-limit.
Nispio

Respostas:

7

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:

  1. M-x customize-mode RET tramp-mode
  2. Defina Tramp Copy Size Limite Tramp Inline Compress Start Sizecom um número muito alto ( 1000000no 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

fr_andres
fonte