Da ESF

Da ESF

Eu tenho um executável para o cliente de controle de versão forçado ( p4). Não consigo colocá-lo /opt/localporque 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/bindiretório ou qualquer que seja a localização do bindiretó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/localque geralmente é usada para pacotes de software compilados e instalados localmente.

Se você é o único usuário de um binário, instalando em $HOME/binou$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 $HOMEou $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/gamesBinários de jogos locais
  • $HOME/include Arquivos de cabeçalho C locais
  • $HOME/lib Bibliotecas locais
  • $HOME/lib64Bibliotecas locais de 64 bits
  • $HOME/man Manuais on-line locais
  • $HOME/sbin Binários do sistema local
  • $HOME/shareHierarquia independente da arquitetura local
  • $HOME/src Código-fonte local

Ao executar o configure, você deve definir sua hierarquia local para instalação especificando $HOMEcomo prefixo os 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 em 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 $PATHe ver se $HOME/binexiste, ou colocar o binário $HOME/bine executar which binaryname. Se voltar com $HOME/bin/binaryname, então estará no seu $PATHpor padrão.

Responder2

Comooutro mencionado,/usr/localpretende ser um prefixo para, essencialmente, software instalado pelo administrador do sistema, mas /usrdeve 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 rpme 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 $HOMEcomo 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/sharee $HOME/.local/binjá 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/binao $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_HOMEusado 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_HOMEpode ser desativado se o padrão $HOME/.configfor 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 /etcfoi 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/binde acordo como site da Internet Wikitechy.

Informações sobre /usr/bindePadrã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/binvs. /usr/local/bindea 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.

informação relacionada