Emacs relocáveis

6

Existe uma maneira de construir o emacs no Linux para que ele não incorpore o caminho onde foi construído no binário e ele possa ser realocado para um caminho diferente?

Ou seja, se você criar com --prefix=/a/b/c , mova tudo para /d/e/f , ele não será executado, porque depende do caminho fixo /a/b/c . Eu vejo a string /a/b/c dentro do próprio binário.

O Windows emacs pode ser instalado em qualquer diretório e é executado a partir daí, o que me faz pensar que você pode dizer ao Linux emacs para rodar da mesma maneira, de "onde quer que você esteja sentado agora".

Não temos opções como um link simbólico de nome fixo na árvore de diretórios apontando para o caminho da variável abaixo dele.

    
por maxpolk 31.08.2012 / 22:03

1 resposta

4

O Emacs pode ser realocado de maneira praticamente inofensiva, mesmo que você não tome nenhuma precaução ao compilar. Se os caminhos codificados não funcionarem, o Emacs procura diretórios perto do executável.

O Emacs tenta determinar onde o executável que o invocou está localizado. Ele armazena essas informações na variável invocation-directory . Digamos que isso seja /path/to/bin/emacs ; O Emacs procura pelos arquivos de dados necessários nos diretórios codificados e retorna aos diretórios em /path/to .

Você precisa estruturar seus diretórios da mesma forma que a origem do Emacs, mais ou menos, com os diretórios de nível superior bin , etc , leim , lib-src , lisp , site-lisp . Em particular, pelo menos com o Emacs 23.2, o diretório lib-src deve existir (mesmo se estiver vazio).

Existem alguns diretórios que o Emacs não encontra dessa maneira. Defina o ambiente EMACSDATA=/path/to/etc . Você pode precisar definir INFOPATH também.

    
por 01.09.2012 / 05:07