Eu tenho um executável para o cliente de controle de versão do perforce ( p4). Não consigo inseri-lo /opt/localporque não tenho privilégios de root. Existe um local padrão em que ele precisa ser colocado $HOME?
A Hierarquia do sistema de arquivos tem uma convenção que diz que os executáveis / binários locais precisam ser colocados $HOME/bin?
Além disso, se realmente houver uma convenção, eu precisaria incluir explicitamente o caminho para o $HOME/bindiretório ou qualquer que seja o local do bindiretório?
Em geral, se um binário não instalado e mantido por um sistema precisar estar acessível em todo o sistema para vários usuários, ele deverá ser colocado por um administrador /usr/local/bin. Existe uma hierarquia completa, /usr/localgeralmente usada para pacotes de software compilados e instalados localmente.
Se você é o único usuário de um binário, a instalação $HOME/biné no local apropriado, pois você pode instalá-lo e será o único consumidor. Se você compilar um pacote de software a partir da fonte, também é apropriado criar uma hierarquia local parcial ou completa em seu $HOMEdiretório. A hierarquia local completa seria assim.
$HOME/bin Binários locais
$HOME/etc Configuração de sistema específica do host para binários locais
$HOME/games Binários de jogos locais
$HOME/include Arquivos de cabeçalho C local
$HOME/lib Bibliotecas locais
$HOME/lib64 Bibliotecas locais de 64 bits
$HOME/man Manuais online locais
$HOME/sbin Binários do sistema local
$HOME/share Hierarquia local independente da arquitetura
$HOME/src Código fonte local
Ao executar configure, você deve definir sua hierarquia local para instalação, especificando $HOMEcomo o prefixo dos padrões de instalação.
./configure --prefix=$HOME
Agora, quando make && make installexecutados, os binários, pacotes, páginas de manual e bibliotecas compilados serão instalados na sua $HOMEhierarquia local. Se você não criou manualmente uma $HOMEhierarquia local, make installcriará os diretórios necessários ao pacote de software.
Uma vez instalado $HOME/bin, você pode adicionar $HOME/binao seu $PATHou chamar o binário usando o absoluto $PATH. Algumas distribuições serão incluídas $HOME/binno seu $PATHpor padrão. Você pode testar isso echo $PATHverificando se $HOME/binexiste ou colocar o binário $HOME/bine executar which binaryname. Se voltar $HOME/bin/binaryname, ele estará no seu $ PATH por padrão.
Eu não recomendaria o uso $HOME. Isso inunda seu diretório pessoal com vários diretórios nos quais você não está interessado. Quem quer ter man, libetc. em uns dir casa? Prefiro criar a hierarquia abaixo $HOME/binou $HOME/local. Isso adiciona apenas um subdiretório ao diretório inicial, em vez de dez. O PATHpode ser facilmente adaptado para incluir $HOME/bin/binou $HOME/local/bin.
@janneb A especificação de diretório base do XDG a que você se refere apenas $HOME/.local/share(versão 0.7, 24 de novembro de 2010).
Piotr Dobrogost
28
Como mencionado anteriormente , ele /usr/localpretende ser um prefixo para, essencialmente, o software instalado pelo administrador do sistema, enquanto /usrdeve ser usado para o software instalado a partir dos pacotes da distribuição.
A idéia por trás disso é para evitar confrontos com software distribuído (como rpme debpacotes) e dar o administrador pleno reinado sobre o prefixo "local".
Isso significa que um administrador pode instalar um software compilado personalizado enquanto ainda usa uma distribuição como o debian.
O software colocado em / ou / usr pode ser sobrescrito pelas atualizações do sistema (embora recomendamos que as distribuições não sobrescrevam dados em / etc sob essas circunstâncias). Por esse motivo, o software local não deve ser colocado fora de / usr / local sem um bom motivo.
Ao instalar software específico do usuário, outro sugere o uso $HOMEcomo prefixo, pois isso garante que você tenha permissões de gravação. Pessoalmente, sinto que estou usando $HOME/.localuma solução mais elegante, pois evita sobrecarregar o seu diretório pessoal (espero) agradável e arrumado!
$HOME/.local/sharejá é usado na especificação do diretório básico do freedesktop.org XDG , portanto, não é preciso muito tempo para adicionar um $HOME/.local/binao seu $PATHe criar um $HOME/.local/libetc, enquanto você está nisso.
Se você realmente não deseja que seu prefixo seja um diretório oculto, também pode criar um link simbólico para ele, por exemplo:
ln -s .local ~/local
Nota
Vale ressaltar que .config(not .local/etc) é o valor padrão $XDG_CONFIG_HOMEusado para arquivos de configuração específicos do usuário. Devo também salientar que, infelizmente, uma grande parte do software ignora o XDG e cria arquivos de configuração onde quiserem (geralmente na raiz do $HOME). Observe também que $XDG_CONFIG_HOMEpode ser desabilitado se o padrão $HOME/.configfor desejado.
Estranhamente, não há diretório reservado para os arquivos de configuração padrão de uma distribuição; portanto, não há como saber se um arquivo /etcfoi fornecido pela distribuição ou editado pelo administrador do sistema.
Essa observação lateral /etcé realmente muito chata ao gerenciar um servidor com vários administradores - é muito difícil acompanhar as edições personalizadas nos arquivos conf.
$HOME
. Isso inunda seu diretório pessoal com vários diretórios nos quais você não está interessado. Quem quer terman
,lib
etc. em uns dir casa? Prefiro criar a hierarquia abaixo$HOME/bin
ou$HOME/local
. Isso adiciona apenas um subdiretório ao diretório inicial, em vez de dez. OPATH
pode ser facilmente adaptado para incluir$HOME/bin/bin
ou$HOME/local/bin
.$HOME/.local/share
(versão 0.7, 24 de novembro de 2010).Como mencionado anteriormente , ele
/usr/local
pretende ser um prefixo para, essencialmente, o software instalado pelo administrador do sistema, enquanto/usr
deve ser usado para o software instalado a partir dos pacotes da distribuição.A idéia por trás disso é para evitar confrontos com software distribuído (como
rpm
edeb
pacotes) e dar o administrador pleno reinado sobre o prefixo "local".Isso significa que um administrador pode instalar um software compilado personalizado enquanto ainda usa uma distribuição como o debian.
Ao instalar software específico do usuário, outro sugere o uso
$HOME
como prefixo, pois isso garante que você tenha permissões de gravação. Pessoalmente, sinto que estou usando$HOME/.local
uma solução mais elegante, pois evita sobrecarregar o seu diretório pessoal (espero) agradável e arrumado!$HOME/.local/share
já é usado na especificação do diretório básico do freedesktop.org XDG , portanto, não é preciso muito tempo para adicionar um$HOME/.local/bin
ao seu$PATH
e criar um$HOME/.local/lib
etc, enquanto você está nisso.Se você realmente não deseja que seu prefixo seja um diretório oculto, também pode criar um link simbólico para ele, por exemplo:
Nota
Vale ressaltar que
.config
(not.local/etc
) é o valor padrão$XDG_CONFIG_HOME
usado para arquivos de configuração específicos do usuário. Devo também salientar que, infelizmente, uma grande parte do software ignora o XDG e cria arquivos de configuração onde quiserem (geralmente na raiz do$HOME
). Observe também que$XDG_CONFIG_HOME
pode ser desabilitado se o padrão$HOME/.config
for desejado.Estranhamente, não há diretório reservado para os arquivos de configuração padrão de uma distribuição; portanto, não há como saber se um arquivo
/etc
foi fornecido pela distribuição ou editado pelo administrador do sistema.fonte
.local
na ESF #/etc
é realmente muito chata ao gerenciar um servidor com vários administradores - é muito difícil acompanhar as edições personalizadas nos arquivos conf.