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.$PATH
entradas (os executáveis) são mantidas em uma tabela hash dentro dobash
, que é atualizada na inicialização ou viarehash
. Não há necessidade de pesquisar$PATH
sempre.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 alternatives
conjunto 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 shred
dos 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 alternatives
conjunto 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.