/ usr / bin vs / usr / local / bin sous Linux

Pourquoi y a-t-il autant dendroits pour mettre un binaire sous Linux? Il y en a au moins cinq:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

Et sur ma boîte de bureau, je nai pas les droits décriture sur certains dentre eux.

Quel type de binaire entre dans lequel de ces bin s?

Commentaires

  • Vous avez oublié /usr/sbin/ .
  • Et ~/bin/ pour les affaires personnelles.
  • Il y a moins dendroits de nos jours, puisque /bin a été fusionné avec /usr/bin et /sbin a été fusionné avec /usr/sbin – voir Le cas de la fusion / usr .
  • @Calmarius, quoi? ne devriez-vous pas ‘ utiliser /usr/local/bin?
  • @Pacerier ~ / bin est réservé à lutilisateur actuel. Par exemple, sur des serveurs Linux multi-utilisateurs où vous nêtes pas administrateur, ‘ est le seul moyen de  » installer  » des trucs pour vous-même.

Réponse

  1. /bin (et /sbin) étaient destinés aux programmes devant se trouver sur une petite partition / avant la plus grande /usr, etc. des partitions ont été montées. De nos jours, il sert principalement demplacement standard pour des programmes clés tels que /bin/sh, bien que lintention dorigine puisse toujours être pertinente pour, par exemple, installations sur de petits appareils embarqués.

  2. /sbin, par opposition à /bin, est pour les programmes de gestion système (normalement non utilisés par les utilisateurs ordinaires) nécessaires avant le montage de /usr.

  3. /usr/bin est destiné aux programmes utilisateur normaux gérés par la distribution.

  4. Il existe un /usr/sbin avec la même relation avec /usr/bin comme /sbin doit /bin.

  5. /usr/local/bin est pour les programmes utilisateur normaux non gérés par le gestionnaire de paquets de distribution, par exemple packages compilés localement. Vous ne devez pas les installer dans /usr/bin car les futures mises à jour de la distribution pourraient les modifier ou les supprimer sans avertissement.

  6. /usr/local/sbin, comme vous pouvez probablement le deviner à ce stade, est de /usr/local/bin comme /usr/sbin vers /usr/bin.

De plus, il existe également /opt qui est pour les paquets monolithiques sans distribution, bien que avant quils ne soient correctement intégrés, diverses distributions y ont mis Gnome et KDE. En règle générale, vous devriez le réserver pour des packages tiers volumineux et mal comportés tels quOracle.

Commentaires

  • Je pense que cette réponse apporte une excellente clarification un ensemble commun de conventions, mais cet article de Rob Landley est une très bonne lecture si vous voulez un aperçu du non-sens … lists.busybox.net/pipermail/busybox/2010 -Décembre / 074114.html
  • refspecs.linuxfoundation.org/fhs.shtml pour la référence courante canonique. Le lien de @kojiro est obsolète et na pas ‘ la nouvelle spécification.
  • Où dois-je mettre un bac que jai téléchargé sur Internet? Daprès votre description, il semble quil devrait aller dans / usr / local / bin ou / usr / bin. Est-ce que / usr / bin est quelque chose que je ne devrais jamais toucher manuellement et ne laisser jouer que le gestionnaire de paquets?
  • @DidierA. placez-le dans ~/bin et ajoutez ce répertoire à votre PATH en tant quutilisateur … Merci pour la note, jai supprimé mon commentaire sérieusement obsolète.
  • Jai trouvé le Répondez à la première partie de ma question ici: superuser.com/a/238993/425838 . La priorité est basée sur lordre dans la variable système PATH, et echo $PATH pour moi affiche /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games , ce qui signifie que les exécutables de /usr/local/bin ont priorité sur ceux de /usr/bin qui ont priorité sur ceux de /bin.

Réponse

Je recommande de jeter un œil à la page de manuel de la hiérarchie du système de fichiers:

man hier 

qui est également disponible en ligne, par exemple: http://linux.die.net/man/7/hier . Les parties pertinentes ont été copiées ci-dessous. Selon votre système, cela peut dire quelque chose de différent.

Nom

    hier – description de la hiérarchie du système de fichiers

Description

    Un système Linux typique a, entre autres, les répertoires suivants:

    /bin

      Ce répertoire contient des programmes exécutables qui sont nécessaires pour un seul utilisateur mode et pour mettre le système en marche ou le réparer.

    /sbin

      Comme /bin, ce répertoire contient les commandes nécessaires pour démarrer le système, mais qui ne sont généralement pas exécutées par les utilisateurs normaux.

    /usr/bin

      Cest le répertoire principal des programmes exécutables. La plupart des programmes exécutés par des utilisateurs normaux qui ne sont pas nécessaires pour démarrer ou réparer le système et qui ne sont pas installés localement doivent être placés dans ce répertoire.

    /usr/local/bin

      Fichiers binaires pour les programmes locaux sur le site.

    /usr/local/sbin

      Programmes installés localement pour ladministration système.

    /usr/sbin

      Ce répertoire contient des binaires de programme pour ladministration du système qui ne sont pas essentiels pour le processus de démarrage, pour le montage de /usr ou pour la réparation du système .

Commentaires

  • Cela ne fonctionne pas ‘ t répondre à la question de lutilisateur ‘.
  • La page de manuel contient une entrée pour chacun des répertoires bin, expliquant ce entre dans eux, qui était lune des questions.

Réponse

Le Hiérarchie du système de fichiers Lentrée chy Standard de Wikipédia ma aidé à répondre à la même question lorsque je lai eue, en plus elle contient un tableau très explicatif.

Extrait de cette page 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 Récupéré le 19 juin 2019; lien permanent .

Réponse

Le Les répertoires sbin contiennent des programmes qui ne relèvent généralement que de ladministration système. Les programmes destinés aux utilisateurs réguliers ne doivent jamais y entrer.

Quelques programmes sont nécessaires au démarrage et se retrouvent dans /bin/ ou /sbin/. Ceux-ci doivent être disponibles avant le montage des systèmes de fichiers. Des éléments tels que mount et fsck qui sont nécessaires pour vérifier et monter les systèmes de fichiers doivent être là.

La plupart des packages les programmes se retrouvent dans /usr/bin/ et /usr/sbin/. Ceux-ci peuvent se trouver sur un système de fichiers autre que le système de fichiers racine. Dans certains cas, ils peuvent se trouver sur un lecteur monté sur le réseau.

Les programmes et scripts locaux appartiennent à /usr/local/bin/ et /usr/local/sbin/ . Cela les identifie comme clairement non standard et peut-être uniquement disponibles sur place.

Pour plus dexplications, essayez dexécuter la commande man hier qui devrait fournir une description de la hiérarchie de système de fichiers recommandée pour votre distribution. Vous pouvez également consulter la Hiérarchie du système de fichiers sur Wikipedia

Commentaires

  • +1 Une explication vraiment concise si top est un peu trop.
  •  » Les programmes et scripts locaux appartiennent à / usr / local / bin / et / usr / local / sbin /  » – Vous voulez dire les programmes locaux comme dans  » ne faisant pas du tout partie du système dexploitation, mais jai décidé dinstaller et souhaitez les utiliser « ?

Réponse

Dans les années 1970, UNIX avait tous les exécutables officiels dans /bin et /usr/bin était un emplacement sous les répertoires personnels des utilisateurs (par exemple, /usr/dmr) qui était disponible pour tout utilisateur pour stocker ses propres binaires qui auraient pu également intéresser dautres personnes.

Le résultat de cette ouverture /usr/bin était une poubelle de logiciels non documentés et donc Stephen Bourne wro te un script cron qui vérifiait les nouveaux binaires chaque nuit et supprimait tous les binaires qui navaient pas de documentation ou qui avaient été mis à jour sans mettre à jour leur documentation.

À la fin des années 1970, /usr/bin a été intégré dans la distribution de base du système dexploitation et les gens ont commencé à utiliser /usr/local/bin aux fins de louverture précédente /usr/bin .

Après un certain temps, les administrateurs système ont utilisé /usr/local/bin pour stocker des logiciels non locaux importés du réseau (par exemple USENET) et comme les entreprises UNIX naimaient pas répéter la même erreur quavec /usr/bin, il y a eu une conférence sur la hiérarchie du système de fichiers vers 1987 où toutes les entreprises UNIX ont accepté dabandonner /usr/local/bin et dutiliser à la place /opt/<vendor>/bin.

Malheureusement, les distributions Linux nont pas suivi cette décision ….

Commentaires

  • Bien que très intéressant, rien de tout cela essaie même de répondre à la question posée qui ne concernait pas /opt et non pas UNIX mais Linux. Cest comme répondre  » Pourquoi les voitures ont-elles 4 roues?  » avec  » Les vélos ont 2! Malheureusement, les voitures ‘ t. « , ce qui ‘ naide pas le PO à comprendre pourquoi les voitures en ont 4.
  • Si vous ne parvenez pas à utiliser lexplication donnée pour expliquer larrière-plan de Linux et le fait que Linux aime imiter UNIX, vous manquez peut-être larrière-plan nécessaire.
  • Intéressant, mais quelque chose qui me trouble et qui nest peut-être que historique Aujourdhui, télécharger un bac en ligne et un bac dentreprise nest ‘ t très différent. Si Joe Blow crée un programme et que je le télécharge, pourquoi ne pas le mettre dans / opt / JowBlow / bin au lieu de / usr / local / bin. Est-ce une question de fournisseur de confiance ou non de confiance? Cela ‘ ne semble pas avoir de sens pour moi.
  • Jaurais aimé connaître ceci ‘ exact ‘ histoire il y a quelques années. a) Je me suis demandé pourquoi AIX évitait / usr / local, utilise / opt / IBM et / opt / ibm et bullfreeware utilise / opt / freeware – et pourquoi JE DEVRAIS utiliser un chemin différent (pas seulement / opt / * sbin). Quant à la semi-pertinence avec Linux – meilleurs outils GNU – le préfixe par défaut dans les outils automatiques est / usr / local. Dommage que les autotools (automake, autoconf, etc. ne suivent pas …. Mais nous survivons tous et apprenons où la distribution. || Les vendeurs mettent leurs programmes.
  • Pourrions-nous avoir une autre de ces conférences? Juste cette fois, TOUT LE MONDE ÉCOUTE!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *