/ usr / bin vs / usr / local / bin en Linux

¿Por qué hay tantos lugares para poner un binario en Linux? Hay al menos estos cinco:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /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

  • Olvidaste /usr/sbin/ .
  • Y ~/bin/ para cosas personales.
  • Actualmente hay menos lugares, ya que /bin se fusionó con /usr/bin y /sbin se fusionó con /usr/sbin; consulte El caso de la fusión / usr .
  • @Calmarius, ¿qué? No debería ‘ ¿usas /usr/local/bin?
  • @Pacerier ~ / bin es solo para el usuario actual. Por ejemplo, en servidores Linux multiusuario donde no eres un administrador que ‘ es la única forma de » instalar » cosas para usted.

Responder

  1. /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.

  2. /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.

  3. /usr/bin es para programas de usuario normales administrados por distribución.

  4. Hay un /usr/sbin con la misma relación con /usr/bin ya que /sbin tiene que /bin.

  5. /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.

  6. /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, y echo $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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *