トランプはいくつかのファイルを開くことができません


10

先週emacsを使い始めたばかりで、今のところすべて順調です。trampを使用してリモートファイルを次のように編集しています。

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

sshキーを使用してサーバーにログインするので、パスワードは必要ありません。したがって、私はtrampを開始するために特別なことは何もせず、.emacsファイルには何も追加されていません。上記をローカルemacsに入力するだけで機能します。

編集中のファイルはほとんどがpython(つまり、プレーンテキスト* .pyファイル)であり、ほとんどの場合、すべてが正しく動作します。ただし、一部のファイルを開こうとすると、ファイルが開かず、次のメッセージが表示されます。

gzip: stdin: unexpected end of file

この問題を回避する方法はありますか?

更新:私が有効にしたコメントで示唆されているように(setq tramp-verbose 6)。トランプデバッグバッファーは巨大な(数千行)ので、重要であると思われる部分や、なんらかのエラーが言及されている部分を見つけようとしました。

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

最後の行は実際のエラーのようです。


そのようなファイル、または少なくともそれの終わりを見せてください。Emacsの外でそれを実行すると、問題なく解凍できますか?
2016

これは通常のpythonテキストファイルです。私はtrampでそれにアクセスすると、自動的に圧縮されて転送サイズを小さくできると思います。すべてのpythonファイルは非常に大きい(100行を超えるコード)ため、投稿してもそれほど役に立ちません。しかし、結局のところ、これらは単なるプレーンテキストのpythonファイルです。しないことの1つは、ファイルはもともとローカルマシンにあり、sftpを使用してサーバーにアップロードしたことです。それが重要かどうかはわかりません。
ダークプール16

2
の値をtramp-inline-compress-start-size1000000などの大きな値に増やすと、問題はなくなりますか?
nispio 16

トリックをしてくれた@nispioに感謝します。現在動作しているようです。興味深いことに、あなたの提案とtramp-copy-size-limitの違いは何ですか?おそらくそれも解決策だったのではないでしょうか?
darkpool 16

3
実際には問題を修正していませんが、おそらくtrampのインライン圧縮に問題があることを示しています。ファイルが十分に大きい(より大きいtramp-inline-compress-start-size)場合、trampはサーバー側でデータを圧縮し、クライアント側で解凍します。これは、より大きいtramp-inline-compress-start-sizeが小さいファイルにのみ適用されますtramp-copy-size-limit
nispio 16

回答:


7

トランプのsftpを介してプレーンASCIIファイルを開いたり保存したりするときに同様の問題が発生しました。ファイルは問題なく、たとえばで編集できましたが、nanoトランプを介してそれらを開こうとすると、かなり不可解なメッセージで拒否されます:invalid string format

これらを変更することで問題が解決したので、これはおそらくインライン化と圧縮に関連していました。これは、UIを使用して実行したものです。

  1. M-x customize-mode RET tramp-mode
  2. 設定Tramp Copy Size Limitし、Tramp Inline Compress Start Size(非常に高い数値に1000000私の場合は)アウトオブバンドを避けるために、および/または圧縮されたデータ転送。OPとは異なり、私はそれを機能させるために両方を変更する必要があったことに注意してください。繰り返しますが、これはインラインの非圧縮転送でのみ機能することを意味しますが、OPに関しては、存在する最高のエディターでかなり小さいASCIIファイルをリモートで編集したいだけなので、これで十分です。

誰かが同じ問題に遭遇した場合に備えて投稿したかったのは、エラーメッセージをグーグルにしても有益な結果が得られず、ファイルのサイズに関連していることを理解するのにしばらく時間がかかった(この投稿につながった) )。問題を解決するために追加の情報またはログファイルが必要な場合は、お気軽にお問い合わせください。ただし、上記の変数を狭めることで再現できると思います。

乾杯!アンドレス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.