
Eu tenho um executável para o cliente de controle de versão forçado ( p4
). Não consigo colocá-lo /opt/local
porque não tenho privilégios de root. Existe um local padrão onde ele precisa ser colocado $HOME
?
A hierarquia do sistema de arquivos tem uma convenção que diz que executáveis/binários locais precisam ser colocados $HOME/bin
?
Não consegui encontrar tal convenção mencionada noArtigo da Wikipédia para a ESF.
Além disso, se realmente houver uma convenção, eu teria que incluir explicitamente o caminho para o $HOME/bin
diretório ou qualquer que seja a localização do bin
diretório?
Responder1
Em geral, se um binário não instalado e mantido no sistema precisar ser acessível em todo o sistema para vários usuários, ele deverá ser colocado por um administrador no /usr/local/bin
. Há uma hierarquia completa /usr/local
que geralmente é usada para pacotes de software compilados e instalados localmente.
Se você é o único usuário de um binário, instalando em $HOME/bin
ou$HOME/.local/bin
é o local apropriado, pois você mesmo pode instalá-lo e será o único consumidor. Se você compilar um pacote de software a partir do código-fonte, também será apropriado criar uma hierarquia local parcial ou completa em seu diretório $HOME
ou $HOME/.local
. Usando $HOME
, a hierarquia local completa ficaria 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 locais$HOME/lib
Bibliotecas locais$HOME/lib64
Bibliotecas locais de 64 bits$HOME/man
Manuais on-line locais$HOME/sbin
Binários do sistema local$HOME/share
Hierarquia independente da arquitetura local$HOME/src
Código-fonte local
Ao executar o configure
, você deve definir sua hierarquia local para instalação especificando $HOME
como prefixo os padrões de instalação.
./configure --prefix=$HOME
Agora, quando make && make install
executados, os binários, pacotes, páginas de manual e bibliotecas compilados serão instalados em sua $HOME
hierarquia local. Se você não criou manualmente uma $HOME
hierarquia local, make install
criará os diretórios necessários ao pacote de software.
Uma vez instalado $HOME/bin
, você pode adicionar $HOME/bin
ao seu $PATH
ou chamar o binário usando o absoluto $PATH
. Algumas distribuições serão incluídas $HOME/bin
no seu $PATH
por padrão. Você pode testar isso echo $PATH
e ver se $HOME/bin
existe, ou colocar o binário $HOME/bin
e executar which binaryname
. Se voltar com $HOME/bin/binaryname
, então estará no seu $PATH
por padrão.
Responder2
Comooutro mencionado,/usr/local
pretende ser um prefixo para, essencialmente, software instalado pelo administrador do sistema, mas /usr
deve ser usado para software instalado a partir dos pacotes da distribuição.
A idéia por trás disso é evitar conflitos com software distribuído (como pacotes rpm
e deb
) e dar ao administrador controle total sobre o prefixo "local".
Isso significa que um administrador pode instalar software compilado personalizado enquanto ainda usa uma distribuição como o Debian.
Da ESF
Software colocado em / ou /usr pode ser sobrescrito por atualizações do sistema (embora recomendemos que as distribuições não sobrescrevam dados em /etc sob estas circunstâncias). Por esta razão, o software local não deve ser colocado fora de /usr/local sem um bom motivo.
Ao instalar software específico do usuário,Uther sugereusando $HOME
como prefixo, pois isso garante que você tenha permissões de gravação. Pessoalmente, acho que usar $HOME/.local
é uma solução mais elegante, pois evita sobrecarregar seu (espero) diretório inicial bonito e organizado!
$HOME/.local/share
e $HOME/.local/bin
já são utilizados noEspecificação do diretório base XDG do freedesktop.org, e as distribuições são solicitadas a serem adicionadas $HOME/.local/bin
ao $PATH
, então não é preciso muito para imaginar fazer um $HOME/.local/lib
, etc, enquanto você está nisso.
Se você realmente não deseja que seu prefixo seja um diretório oculto, você também pode criar facilmente um link simbólico para ele, por exemplo:
ln -s .local ~/local
Nota
Vale a pena notar que .config
(not .local/etc
) é o valor padrão para$XDG_CONFIG_HOME
usado para arquivos de configuração específicos do usuário. Devo ressaltar também que, infelizmente, grande parte do software ignora o XDG e cria arquivos de configuração onde quiser (geralmente na raiz do $HOME
). Observe também que $XDG_CONFIG_HOME
pode ser desativado se o padrão $HOME/.config
for desejado.
Estranhamente, não existe um diretório reservado para os arquivos de configuração padrão de uma distribuição, então não há como saber se um arquivo /etc
foi fornecido pela distribuição ou editado pelo administrador do sistema.
Responder3
A especificação do diretório base XDGA versão 0.8 afirma que os executáveis locais devem ser colocados em~/.local/bin:
Arquivos executáveis específicos do usuário podem ser armazenados em $HOME/.local/bin. As distribuições devem garantir que esse diretório apareça na variável de ambiente $PATH do UNIX, em um local apropriado.
Se sua distribuição estiver seguindo a especificação, você não precisará "incluir explicitamente o caminho". Essepergunta anteriortenta verificar quais distribuições fazem isso.
Responder4
Parece que /usr/local/bin
de acordo como site da Internet Wikitechy.
Informações sobre /usr/bin
dePadrão de hierarquia do sistema de arquivos, eles definem a pasta como o diretório principal de comandos executáveis no sistema.
Informações adicionais entre /usr/bin
vs. /usr/local/bin
dea Wikitecnologia:
/usr/bin
é o local para os executáveis fornecidos pelo sistema operacional que são usados por usuários comuns. Por exemplo, normalmente não são arquivos necessários ao sistema operacional principal ou arquivos acessados pelo usuário root, mas podem ser.
/usr/local/bin
é o local para todos os executáveis complementares adicionados ao sistema para serem usados como arquivos comuns do sistema por todos os usuários, mas não são arquivos oficiais suportados pelo sistema operacional.
No geral, /usr/bin
é onde estão os binários fornecidos pelo sistema operacional. /usr/local/bin
é onde o usuário baixou os binários.