
Linuxでemacsをビルドして、ビルドされたパスをバイナリに含めずに他のパスに無害に再配置する方法はありますか?
つまり、ビルドを使用して--prefix=/a/b/c
すべてのアイテムを/d/e/f
そのビルドに移動すると、固定パスに依存するため実行されません/a/b/c
。/a/b/c
バイナリ自体の内部に文字列が表示されます。
Windows emacsは任意のディレクトリにインストールでき、そこでうまく実行できます。したがって、Linux emacsに「今どこにいても」同じ方法で実行するように指示できると思います。
以下の変数パスを指すディレクトリツリーの固定名シンボリックリンクなどのオプションはありません。
答え1
コンパイル時に予防措置を取らなくても、Emacsはほとんど無害に再配置を実行できます。ハードコーディングされたパスが機能しない場合、Emacsは実行可能ファイルの近くのディレクトリを探します。
Emacsはそれを呼び出す実行可能ファイルの場所を確認しようとします。この情報を変数に保存しますinvocation-directory
。これを仮定すると、/path/to/bin/emacs
Emacsはハードコーディングされたディレクトリで必要なデータファイルを見つけてから/path/to
。
bin
最上位ディレクトリである、、、、、、etc
を使用して、Emacsソースコードとほぼ同じ方法でディレクトリを設定する必要がありleim
ます。特に、少なくともEmacs 23.2では、ディレクトリが存在しなければなりません(空でも)。lib-src
lisp
site-lisp
lib-src
Emacsがこの方法で見つけることができないディレクトリがあります。環境を設定しますEMACSDATA=/path/to/etc
。INFOPATH
設定が必要な場合があります。