2

emacs で (ssh トンネル化され、sshfs マウントされたファイル システムを介して) ファイルを開くと、次のようなシンボリック リンクが表示されます。

.#jobid.php -> ddh@localhost.localdomain.31678:1260471633

これらは emacs LOCK ファイルであると判断しました。

sshfs ファイルシステムは follow_symlinks と transform_symlinks でマウントされていますが、readlink 経由でリンク「テキスト」を返すことを拒否しているように見えるため、emacs はそれらを削除していません。

4

4 に答える 4

2

ドキュメントを探している場合、Emacs はこれらのファイルをfile locksと呼びます。

sshfs/FUSE を使用する代わりに、Emacs から直接リモート ファイルにアクセスできます。

C-x C-f /ssh:host.name:/path/to/file RET

Emacs は、この方法でリモート ファイルを編集するときにファイル ロックを作成しません。リモート ファイルの編集に関する詳細については、"TRAMP" を検索してください。(残念ながら、Emacs は、FUSE マウントポイントがリモート ファイルシステムによってサポートされていることや、ファイル ロックの作成に問題があることを認識できないと思います。)

于 2009-12-26T19:08:40.187 に答える
1

このfollow_symlinksオプションは、リモートシステム上のシンボリックリンクを実際のファイルとして表示するように強制します。これは、シンボリックリンクがsshfsを介してマウントされたディレクトリ外のリモートホスト上のターゲットを参照する場合に役立ちますが、Emacsがシンボリックリンクを作成するときに同じパスが後でシンボリックリンクのように見えることを期待するため、Emacsの仮定に違反します。

transform_symlinksただし、オプションを使用して(ではなくfollow_symlinks)、常にリモートシステムのルートをマウントすることで(ホームディレクトリなどではなく) 、リモートホスト上のすべてのシンボリックリンクを正しく機能させながら、シンボリックリンクとして表示できるようにする必要があります。これにより、emacsは、リモートのシンボリックリンクターゲットにアクセスできるようにしながら、シンボリックリンクをロックファイルとして悪用できるようになります。

于 2012-03-15T16:49:26.373 に答える
1

これらのシンボリック リンクは、複数の emacs インスタンスが同じファイルを変更するのを防ぐために emacs によって使用されます。通常、ファイルを保存するとシンボリックリンクは消えますが、シンボリックリンクのターゲットが実際のファイルではないため、fuse-sshfs がこのプロセスに干渉しているように思えます (意図したものではありませんが、sshfs はそれを想定しています)。

残念ながら、この機能を無効にする方法や、これらのシンボリック リンクを別のディレクトリに保存するように emacs に強制する方法はわかりません (私は emacs をあまり使用せず、マニュアルには何も見つかりませんでした)、定期的に削除する必要があるかもしれません。それらを手動で私は恐れています。

于 2009-12-26T18:06:37.130 に答える
0

これらのシンボリックリンクは、バッファーがファイルを訪問しているときにEmacsによって作成され、2つのEmacsインスタンスが同じファイルを編集するのを防ぎます(他の回答で述べたように)。Emacs ではこれを「衝突検出」と呼んでいます。

残念ながら、GNU emacs でこの動作を防ぐ唯一の方法は、コンパイル時です。ソース ドキュメントには、ヘッダーを変更してこれを行う方法が説明されています。

これは、lock-buffer および unlock-buffer 関数がプリミティブであり、これらのシンボリック リンクを作成するために他のプリミティブによって呼び出されるためです。古いバージョンの Emacs では、それらを elisp で再定義またはデエイリアスできますが、プリミティブはこの変更に気づきません。

于 2011-01-28T03:50:49.550 に答える