¿Por qué hay tantos lugares para poner un binario en Linux? Hay al menos estos cinco:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
Y en mi apartado de oficina, no tengo permisos de escritura para algunos de estos.
¿Qué tipo de binario entra en cuál de estos bin
s?
filesystems
binary
Lazer
fuente
fuente
/usr/sbin/
.~/bin/
para cosas personales./bin
se fusionó con/usr/bin
y/sbin
se fusionó con/usr/sbin
- vea The Case for the / usr Merge ./usr/local/bin
?Respuestas:
/bin
(y/sbin
) estaban destinados a programas que debían estar en una/
partición pequeña antes de que/usr
se montaran las particiones más grandes , etc. En la actualidad, sirve principalmente como una ubicación estándar para programas clave como/bin/sh
, aunque la intención original aún puede ser relevante, por ejemplo, para instalaciones en pequeños dispositivos integrados./sbin
, a diferencia de/bin
, es para los programas de administración del sistema (que normalmente no usan los usuarios comunes) necesarios antes de/usr
montarlos./usr/bin
es para programas de usuario normal gestionados por distribución.Hay una
/usr/sbin
con la misma relación/usr/bin
que/sbin
tiene que/bin
./usr/local/bin
es para programas de usuario normales no administrados por el administrador de paquetes de distribución, por ejemplo, paquetes compilados localmente. No debe instalarlos/usr/bin
porque las futuras actualizaciones de distribución pueden modificarlos o eliminarlos sin previo aviso./usr/local/sbin
, como probablemente puedas adivinar en este momento, es/usr/local/bin
como/usr/sbin
hacerlo/usr/bin
.Además, también
/opt
hay opciones para paquetes monolíticos sin distribución, aunque antes de que se integraran adecuadamente, varias distribuciones pusieron allí a Gnome y KDE. En general, debe reservarlo para paquetes de terceros grandes y de mal comportamiento, como Oracle.fuente
~/bin
y agregue ese directorio a su RUTA como usuario ... Gracias por la nota, eliminé mi comentario seriamente desactualizado.PATH
variable del sistema , yecho $PATH
para mí muestra/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, lo que significa que los ejecutables/usr/local/bin
tienen prioridad sobre los/usr/bin
que tienen prioridad sobre los que están en/bin
.Recomiendo echar un vistazo a la página del manual de jerarquía del sistema de archivos:
Que también está disponible en línea, por ejemplo: http://linux.die.net/man/7/hier
fuente
La entrada Estándar de jerarquía del sistema de archivos en Wikipedia me ayudó a responder la misma pregunta cuando la tuve, además tiene una tabla muy explicativa.
Extracto de esa página 1 :
1 Recuperado el 19 de junio de 2019; Enlace permanente .
fuente
Los
sbin
directorios contienen programas que generalmente son solo de administración del sistema. Los programas para usuarios habituales nunca deberían entrar en ellos.Se necesitan algunos programas durante el inicio y terminan en
/bin/
o/sbin/
. Deben estar disponibles antes de montar los sistemas de archivos. Cosas comomount
yfsck
que se requieren para verificar y montar sistemas de archivos deben estar allí.La mayoría de los programas empaquetados terminan en
/usr/bin/
y/usr/sbin/
. Estos pueden estar en un sistema de archivos que no sea el sistema de archivos raíz. En algunos casos, pueden estar en una unidad montada en red.Programas locales y scripts pertenecen a
/usr/local/bin/
y/usr/local/sbin/
. Esto los identifica como claramente no estándar, y posiblemente solo disponibles en el sitio.Para obtener más información, intente ejecutar el comando
man hier
que debe proporcionar una descripción de la jerarquía del sistema de archivos recomendada para su distribución. Es posible que también desee leer sobre la Jerarquía del sistema de archivos en Wikipediafuente
En la década de 1970,
UNIX
tenía todos los ejecutables oficiales/bin
y/usr/bin
estaba debajo de los directorios de inicio de los usuarios (por ejemplo/usr/dmr
), que estaba disponible para que cualquier usuario almacenara sus propios archivos binarios que también podrían haber sido de interés para otros.El resultado de esta apertura
/usr/bin
fue un depósito de basura de software indocumentado y, por lo tanto,Stephen Bourne
escribió uncron script
que buscaba nuevos archivos binarios todas las noches y eliminaba todos los archivos binarios que no tenían documentación o que se habían actualizado sin actualizar su documentación también.A fines de la década de 1970,
/usr/bin
se integró en la distribución base del sistema operativo y la gente comenzó a usar/usr/local/bin
para el propósito de la apertura anterior/usr/bin
.Después de un tiempo, los administradores de sistemas solían
/usr/local/bin
almacenarnon-local
software importado de la red (por ejemplo, USENET) y, como las empresas de UNIX no querían repetir el mismo error que antes/usr/bin
, hubo una conferencia sobre la jerarquía del sistema de archivos alrededor de 1987 donde todas las empresas de UNIX acordaron renunciar/usr/local/bin
y usar/opt/<vendor>/bin
en su lugar.Desafortunadamente, las distribuciones de Linux no siguieron esta decisión ...
fuente
/opt
trataba sobre UNIX y no sobre UNIX sino sobre Linux. Esto es como responder "¿Por qué los automóviles tienen 4 ruedas?" con "¡Las bicicletas tienen 2! Lamentablemente, los autos no". lo que no ayuda al OP a entender por qué los automóviles tienen 4.