¿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 caja de oficina, no tengo permisos de escritura para algunos de estos.
¿Qué tipo de binario entra en cuál de estos bin
s?
Comentarios
Responder
-
/bin
(y/sbin
) estaban destinados a programas que debían estar en una pequeña/
partición antes que la más grande/usr
, etc., se montaron particiones. En estos días, sirve principalmente como una ubicación estándar para programas clave como/bin/sh
, aunque la intención original aún puede ser relevante para, por ejemplo, instalaciones en pequeños dispositivos integrados. -
/sbin
, a diferencia de/bin
, es para programas de administración del sistema (no utilizados normalmente por usuarios normales) necesarios antes de que se monte/usr
. -
/usr/bin
es para programas de usuario normales administrados por distribución. -
Hay un
/usr/sbin
con la misma relación con/usr/bin
ya 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 en/usr/bin
porque las futuras actualizaciones de distribución pueden modificarlos o eliminarlos sin previo aviso. -
/usr/local/sbin
, como probablemente pueda adivinar en este punto, es/usr/local/bin
como/usr/sbin
para/usr/bin
.
Además, también hay /opt
que es para paquetes monolíticos sin distribución, aunque antes de que se integraran correctamente, varias distribuciones pusieron Gnome y KDE allí. Por lo general, debe reservarlo para paquetes de terceros grandes y con mal comportamiento, como Oracle.
Comentarios
- Creo que esta respuesta hace un gran trabajo aclarando un conjunto común de convenciones, pero esta publicación de Rob Landley es una lectura realmente excelente si desea conocer las tonterías … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml para la referencia actual canónica. El enlace de @kojiro está desactualizado y no ‘ no tiene la nueva especificación.
- ¿Dónde pongo un contenedor que descargué de Internet? Según su descripción, parece que debería ir en / usr / local / bin o / usr / bin. ¿Es / usr / bin algo que nunca debería tocar manualmente y dejar que solo el administrador de paquetes juegue?
- @DidierA. póngalo en
~/bin
y agregue ese directorio a su PATH como usuario … Gracias por la nota, eliminé mi comentario seriamente desactualizado. - Encontré el responda a la primera parte de mi pregunta aquí: superuser.com/a/238993/425838 . La precedencia se basa en el orden en la variable
PATH
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 en/usr/local/bin
tienen prioridad sobre los de/usr/bin
que tienen prioridad sobre los de/bin
.
Respuesta
Recomiendo echar un vistazo a la página de manual de jerarquía del sistema de archivos:
man hier
que también está disponible en línea, por ejemplo: http://linux.die.net/man/7/hier . Las partes relevantes se han copiado a continuación. Dependiendo de su sistema, puede decir algo diferente.
Nombre
hier – descripción de la jerarquía del sistema de archivos
Descripción
Un sistema Linux típico tiene, entre otros, los siguientes directorios:
/bin
Este directorio contiene programas ejecutables que se necesitan en un solo usuario modo y para activar el sistema o repararlo.
/sbin
Como
/bin
, este directorio contiene los comandos necesarios para arrancar el sistema, pero que normalmente no son ejecutados por usuarios normales.
/usr/bin
Este es el directorio principal para programas ejecutables. La mayoría de los programas ejecutados por usuarios normales que no son necesarios para arrancar o reparar el sistema y que no están instalados localmente deben colocarse en este directorio.
/usr/local/bin
Binarios para programas locales del sitio.
/usr/local/sbin
Programas instalados localmente para la administración del sistema.
/usr/sbin
Este directorio contiene binarios de programa para la administración del sistema que no son esenciales para el proceso de arranque, para montar
/usr
o para reparar el sistema .
Comentarios
- Esto no ‘ t responde la pregunta del ‘ del usuario.
- La página de manual contiene una entrada para cada uno de los directorios bin, explicando qué entra en ellos, que era una de las preguntas.
Responder
El Jerarquía del sistema de archivos La entrada chy Standard 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 :
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 Recuperado el 19 de junio de 2019; enlace permanente .
Respuesta
El Los directorios sbin
contienen programas que generalmente son solo para la administración del sistema. Los programas para usuarios habituales nunca deberían incluirse 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 como mount
y fsck
que se requieren para verificar y montar sistemas de archivos deben estar allí.
La mayoría de los paquetes empaquetados los programas 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.
Los programas y scripts locales pertenecen a /usr/local/bin/
y /usr/local/sbin/
. Esto los identifica como claramente no estándar y posiblemente solo estén disponibles en el sitio.
Para obtener más explicaciones, intente ejecutar el comando man hier
que debería proporcionar una descripción de la jerarquía del sistema de archivos recomendada para su distribución. También puede leer acerca de la Jerarquía del sistema de archivos en Wikipedia
Comentarios
- +1 Una explicación muy concisa si top es demasiado.
- » Los programas y scripts locales pertenecen a / usr / local / bin / y / usr / local / sbin / » – Te refieres a programas locales como en » que no forman parte del sistema operativo, pero decidí instalar y quieres usarlos «?
Responder
En la década de 1970, UNIX tenía todos los ejecutables oficiales en /bin
y /usr/bin
era una ubicación debajo de los directorios de inicio de los usuarios (por ejemplo, /usr/dmr
) que estaba disponible para que cualquier usuario almacenara sus propios binarios que podrían haber sido de interés para otros también.
El resultado de este /usr/bin
era un depósito de chatarra de software indocumentado, por lo que Stephen Bourne wro Cree un script cron que verificara si había nuevos binarios cada noche y eliminó todos los binarios que no tenían documentación o que también se actualizaron sin actualizar su documentació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
con el propósito de la anterior /usr/bin
abierta .
Después de un tiempo, los administradores de sistemas usaron /usr/local/bin
para almacenar software no local que se importó de la red (p. ej. USENET) y como a las compañías UNIX no les gustaba repetir el mismo error que con /usr/bin
nuevamente, hubo una conferencia de jerarquía del sistema de archivos alrededor de 1987 donde todas las compañías UNIX acordaron renunciar a /usr/local/bin
y utilizar /opt/<vendor>/bin
en su lugar.
Desafortunadamente, las distribuciones de Linux no siguieron esta decisión ….
Comentarios
- Aunque es muy interesante, nada de esto incluso intenta responder a la pregunta formulada que no se refería a
/opt
ni a UNIX sino a Linux. Esto es como responder » ¿Por qué los coches tienen 4 ruedas? » con » Las bicicletas tienen 2! Lamentablemente, los automóviles ‘ t. » no ‘ no ayudan al OP a entender por qué los coches tienen 4. - Si no puede utilizar la explicación dada como una explicación del trasfondo de Linux y el hecho de que a Linux le gusta imitar a UNIX, es posible que le falte el trasfondo necesario.
- Interesante, pero algo en lo que me confundo y que quizás también sea solo histórico. En la actualidad, descargar un contenedor en línea y un contenedor de empresa no es ‘ muy diferente. Si Joe Blow crea un programa y yo lo descargo, ¿por qué no ponerlo en / opt / JowBlow / bin en lugar de / usr / local / bin? ¿Se trata de un proveedor confiable frente a un proveedor no confiable? No ‘ parece tener sentido para mí.
- Ojalá hubiera sabido esto ‘ exacto ‘ historia hace unos años. a) Me preguntaba por qué AIX evitaba / usr / local, usa / opt / IBM y / opt / ibm y bullfreeware usa / opt / freeware, y por qué DEBO haber usado una ruta diferente (no solo / opt / * sbin). En cuanto a la semi-relevancia con Linux, mejores herramientas GNU, el prefijo predeterminado en las herramientas automáticas es / usr / local. Lástima que las herramientas automáticas (automake, autoconf, etc. no sigan … Pero todos sobrevivimos y aprendemos dónde están los distribuidores. || los proveedores ponen sus programas.
- ¿Podríamos tener otra de estas conferencias? ¡Solo esta vez, TODOS ESCUCHEN!
/usr/sbin/
.~/bin/
para cosas personales./bin
se fusionó con/usr/bin
y/sbin
se fusionó con/usr/sbin
; consulte El caso de la fusión / usr ./usr/local/bin
?