Estoy configurando Prometheus en un servidor web y noté que cada exportador es su propio programa que debe agregarse a un directorio en $PATH.
Mi pregunta es, ¿hay alguna ventaja en crear un directorio especializado para estos (por ejemplo, "/usr/exporters/bin", para crear un ejemplo) y colocar todos los programas exportadores allí y agregar ese archivo a $PATH? ? ¿O es mejor simplemente enviar los programas al directorio predeterminado para albergar archivos binarios?
Respuesta1
El único beneficio es tener menos directorios $PATH
, por lo tanto, menos directorios para buscar cuando se busca un ejecutable, pero:
Este evento (buscar en todos los directorios en
$PATH
) es poco común.$PATH
Las entradas (los ejecutables) se guardan en una tabla hash dentro debash
, que se actualiza al inicio o medianterehash
. No es necesario buscar$PATH
cada vez.Este evento no es caro. Toda la información necesaria (el archivo existe y los permisos permiten la ejecución) se puede recopilar desde la entrada del directorio del archivo; no es necesario acceder a cada archivo. Simplemente lea el directorio.
El motivo para NO mover los ejecutables a otro directorio común incluye:
Tendrás un entorno no estándar. Cuando solicite ayuda, será necesario un esfuerzo adicional para explicarlo. Los problemas causados específicamente por un entorno no estándar serán muy difíciles de resolver.
Tendrás un entorno no estándar. Cuando se lanzan versiones actualizadas, su entorno no coincidirá con lo que espera la actualización.
Tendrás un entorno no estándar. Tendrás que recordar y realizar las actualizaciones del entorno no estándar esta semana, la semana que viene, la semana siguiente,... para siempre.
Es Monkey Motion sin ningún beneficio.
Respuesta2
Mantener archivos binarios en directorios con bibliotecas coincidentes es bastante común. El caso de uso es el control de versiones. Digamos que tiene varias versiones de Python (2.7, 2.7, 3...) instaladas y las necesita todas pero desea definir un estándar.
Normalmente, esto utiliza la alternatives
suite y enlaces suaves al binario desde, por ejemplo, /usr/bin
(con definiciones en /etc/alternatives
).
Una ventaja importante también podría ser utilizar el orden de izquierda a derecha en $PATH
. Por ejemplo, cuando anula comandos estándar mediante versiones locales o scripts que realizan comprobaciones previas (por ejemplo, un script que coloca una advertencia antes de shred
los archivos ding), uno los tendría en un directorio que aparece al principio de $PATH
, por lo que la versión local (del usuario) es ejecutar y el estándar solo a través de su ruta completa.
Más sobre su pregunta: mover los archivos binarios no es una buena idea: pueden depender de otros archivos en su directorio. Enlázalos suavemente como máximo. O simplemente utilice el alternatives
conjunto de herramientas, que también le ayudarán a tener una mejor visión general.
Respuesta3
Eso depende...
Si tienes cientos de estos programas, entonces quizás.
De lo contrario, como /usr/local/bin/
está en su $PATH, coloque sus programas en un directorio de usuario en algún lugar sensible y coloque los enlaces suaves correspondientes para cada programa en /usr/local/bin/
. No es perfecto, pero evita la alteración de PATH.