Existe algum benefício em agrupar programas semelhantes em um único diretório de caminho?

Existe algum benefício em agrupar programas semelhantes em um único diretório de caminho?

Estou configurando o prometheus em um servidor web e notei que cada exportador é seu próprio programa que deve ser adicionado a um diretório em $PATH.

Minha pergunta é: existe alguma vantagem em criar um diretório especializado para estes (por exemplo, "/usr/exporters/bin", para dar um exemplo) e colocar todos os programas exportadores lá, e adicionar esse arquivo ao $PATH ? Ou é melhor simplesmente enviar os programas para o diretório padrão para abrigar binários?

Responder1

O único benefício é ter menos diretórios $PATH, portanto, menos diretórios para pesquisar ao procurar um executável, mas:

  • Este evento (pesquisar todos os diretórios em $PATH) é raro. $PATHentradas (os executáveis) são mantidas em uma tabela hash dentro do bash, que é atualizada na inicialização ou via rehash. Não há necessidade de pesquisar $PATHsempre.

  • Este evento não é caro. Todas as informações necessárias (o arquivo existe e as permissões permitem a execução) podem ser coletadas na entrada do diretório do arquivo - sem necessidade de acessar cada arquivo. Basta ler o diretório.

O motivo para NÃO mover os executáveis ​​para outro diretório comum inclui:

  • Você terá um ambiente fora do padrão. Quando você pede ajuda, será necessário um esforço extra para explicar isso. Os problemas causados ​​especificamente pelo ambiente não padronizado serão muito difíceis de resolver.

  • Você terá um ambiente fora do padrão. Quando versões atualizadas são lançadas, seu ambiente não corresponderá ao que a atualização espera.

  • Você terá um ambiente fora do padrão. Você terá que lembrar e fazer as atualizações de ambiente fora do padrão esta semana, na próxima semana, na semana seguinte,... para sempre.

É Monkey Motion sem nenhum benefício.

Responder2

Manter binários nos diretórios com bibliotecas correspondentes é bastante comum. O caso de uso é o controle de versão. Digamos que você tenha várias versões do python (2.7, 2.7, 3...) instaladas e precise de todas elas, mas queira definir um padrão.

Normalmente, isso usa o alternativesconjunto e softlinks para o binário de, por exemplo /usr/bin(com definições em /etc/alternatives).

Uma grande vantagem também pode ser usar a ordem da esquerda para a direita no formato $PATH. Por exemplo, quando você substitui comandos padrão por versões locais ou scripts que realizam pré-verificações (digamos, um script que coloca um aviso antes shreddos arquivos ding), eles seriam colocados em um diretório listado no início de $PATH, então a versão local (do usuário) é run e o padrão apenas através de seu caminho completo.

Mais sobre sua pergunta: Mover os binários não é uma boa ideia: eles podem depender de outros arquivos em seu diretório. Faça um link suave no máximo. Ou apenas use o alternativesconjunto de ferramentas - o que também ajuda a manter uma visão mais geral.

Responder3

Depende...

Se você tiver centenas desses programas, talvez.

Caso contrário, como /usr/local/bin/está em seu $PATH, coloque seus programas em um diretório de usuário em algum lugar adequado e coloque os links virtuais correspondentes para cada programa em /usr/local/bin/. Não é perfeito, mas evita a confusão do PATH.

informação relacionada