Qu'est-ce que / usr / local / bin?


85

Avant aujourd'hui, j'utilisais le terminal dans une certaine mesure pour accéder aux répertoires et en sortir, ainsi que pour modifier les dates des fichiers à l'aide de la touchcommande. J'avais réalisé toute l'étendue du terminal après avoir installé un script amusant sur Mac et chmod 755dû utiliser le fichier pour le rendre exécutable par la suite.

J'aimerais savoir ce qui /usr/local/binest, cependant. /usr/, Je suppose, est l'utilisateur de l'ordinateur. Je ne sais pas pourquoi /local/, cependant. Cela correspond évidemment à l'ordinateur local, mais étant donné qu'il se trouve sur l'ordinateur (ou sur un serveur), serait-il vraiment nécessaire? Ça ne va /usr/binpas bien?

Et c'est quoi /bin? Pourquoi cette zone est-elle habituellement utilisée pour installer des scripts sur le terminal?

Réponses:


77

/usr/local/bin est destiné aux programmes qu'un utilisateur normal peut exécuter.

  • La /usr/localhiérarchie est destinée à être utilisée par l’administrateur système lors de l’installation locale du logiciel.
  • Il doit être sécurisé pour ne pas être écrasé lorsque le logiciel système est mis à jour.
  • Il peut être utilisé pour des programmes et des données pouvant être partagés entre un groupe d’hôtes, mais ne se trouvant pas dans /usr.
  • Les logiciels installés localement doivent être placés dans /usr/local/ usr, à moins qu’ils ne soient installés pour remplacer ou mettre à niveau des logiciels dans /usr.

Cette source aide à expliquer la norme de hiérarchie du système de fichiers à un niveau plus profond.

Vous trouverez peut-être cet article/usr/local/bin intéressant sur l'utilisation et l'abus d' intéressant.


"" "sauf s'il est en cours d'installation pour remplacer ou mettre à niveau le logiciel dans / usr" "" signifie?
Pacerier

63

/ usr /, je suppose que c'est l'utilisateur de l'ordinateur.

Proche.

Unix a débuté en tant que système d'exploitation multi-utilisateur, donc ce n'est pas "l'utilisateur", c'est "les utilisateurs ", mais au pluriel.

Avant AT & T Unix System V Release 4 (SVR4) est sorti en 1988 avec ses outils de gestion des utilisateurs en défaut à la création de répertoires personnels des utilisateurs dans /home, l'emplacement était classique /usr.¹ Votre $HOMErépertoire aurait peut - être été /usr/jfwsur un III système boîte.

/usrcontenait également, comme aujourd'hui, /usr/bin, /usr/lib, etc. L' expérience a montré que les répertoires séparant la maison était une bonne pratique de la gestion du système, donc avec le /homechangement de politique dans SVR4, il a laissé derrière tout ce que nous considérons aujourd'hui comme appartenant à /usr.

/usrIl restait néanmoins une bonne raison de conserver le nom: il restait des fichiers qui n'avaient pas besoin d'être disponibles jusqu'à ce que le système soit démarré suffisamment loin pour permettre une utilisation interactive normale. C'est-à-dire que les parties du système d'exploitation axées sur l' utilisateur ont été laissées . Cela signifiait que /usrle volume physique pouvait être différent, ce qui était une bonne chose à l'époque des disques durs de 92 Mo de la taille des machines à laver .

Les premiers systèmes Unix avaient pris soin de garder les fichiers de base du système d'exploitation /usrafin que vous puissiez toujours démarrer en mode mono-utilisateur², même si le /usrvolume était démontable pour une raison quelconque. Le volume racine contenait suffisamment d'outils pour le /usrremettre en ligne.

Plusieurs saveurs Unix ne pas tenir compte maintenant ce vieux principe de conception puisque même les petits systèmes embarqués ont suffisamment de place pour les deux fichiers de volume racine traditionnels et tous /usrsur un seul volume.³ Red Hat Enterprise Linux, Solaris et Cygwin symlink /binà /usr/binet /libde /usr/libsorte qu'il n'y a plus toute différence entre ces répertoires.

... / local / ... signifie évidemment l'ordinateur local ...

Oui. Il fait référence au fait que les fichiers sous /usr/localsont supposés être particuliers à ce système unique. Les fichiers qui sont génériques de quelque manière que ce soit doivent vivre ailleurs.

Cela a également des racines dans la manière dont les systèmes Unix étaient couramment utilisés il y a plusieurs décennies, lorsque tout cela était standardisé. Encore une fois, les disques durs de l'époque étaient volumineux, très coûteux et peu stockés selon les normes actuelles. Pour économiser de l'argent et de l'espace sur les disques, un laboratoire rempli de boîtes Unix partageaient généralement la plupart de leurs /usrconnexions via NFS ou un autre protocole de partage de fichiers réseau. Ainsi, chaque boîte n'avait pas besoin de sa propre copie redondante. boîte irait en dessous /usr/local, ce qui serait un volume distinct de /usr.

Cet héritage historique est la raison pour laquelle il reste la valeur par défaut pour la plupart des logiciels Unix tiers à installer /usr/locallorsqu'ils sont installés manuellement. La plupart de ces logiciels vous permettront d’installer le paquet ailleurs, mais si vous ne le faites pas, vous obtenez le paramètre de sécurité par défaut, qui n’interfère pas avec d’autres emplacements d’installation courants ayant des objectifs plus spécifiques.

Il y a de bonnes raisons de faire installer le logiciel ailleurs. L'équipe macOS d'Apple fait cela lorsqu'elle construit, par exemple, à bashpartir du code source GNU Bash . Ils utilisent /comme préfixe d’installation, en remplaçant la /usr/localvaleur par défaut, pour que Bash finisse dans /bin.

Un autre exemple est la manière dont les anciens systèmes Linux ont séparé leur logiciel d'interface graphique /usr/X11R6pour le séparer des curseslogiciels de ligne de commande et des logiciels traditionnels . Cela a été fait simplement en remplaçant le /usr/localpréfixe par défaut par /usr/X11R6.⁵

Et qu'est-ce que / bin?

En abrégé, "binaire" signifie dans ce contexte "un fichier qui n'est pas du texte brut". La plupart de ces fichiers sont des exécutables sur un boîtier Unix, de sorte que ces deux termes sont devenus synonymes dans certains milieux. ("S'il te plaît, construis-moi un binaire pour RHEL 7, Fred.")

Les fichiers texte sur un système Unix vivent ailleurs: /etc, /usr/include, /usr/share, etc.

Il était une fois, même les scripts de shell - qui sont des fichiers texte brut - étaient conservés en dehors des binrépertoires, mais cette ligne a également été floue. Aujourd'hui, les binrépertoires contiennent généralement tout type de fichier exécutable, qu'il soit strictement "binaire" ou non.


Notes de bas de page et digressions :

  1. La nature primitive des outils de gestion des utilisateurs antérieurs à SVR4 signifiait que le HOME=/usr/$NAMEschéma était simplement consigné en tant que convention, et non imposé par défaut par les outils logiciels.

    Vous pouvez le voir à la page 4-8 du " Guide de l'administrateur système du système Unix System V version 3.2 d' AT & T: vous voyez ici l'AT & T qui recommande l'ancien /usr/$NAMEschéma de la dernière version majeure d'Unix avant la sortie de SVR4.

    Dans les systèmes Unix plus anciens, il était assez courant que les administrateurs système choisissent un schéma différent qui leur semblait plus logique. Les gens étant des gens, cela signifiait que beaucoup de programmes différents avaient été inventés.

    Un schéma que j'ai rencontré avant de /home/$NAMEdevenir la norme était /u/$NAME.

    Un autre système je au début des années 1990 a eu tant d'utilisateurs qu'ils ne pouvaient pas s'adapter à tous les répertoires sur un seul volume physique, alors ils ont utilisé un système comme /u1/$NAME, /u2/$NAMEet ainsi de suite, si je me souviens. Le disque sur lequel votre répertoire personnel s'est retrouvé était simplement une question d'espace disponible au moment de la création de votre compte.

  2. Vous pouvez démarrer une boîte MacOS en mode mono-utilisateur en maintenant la touche enfoncée Cmd-Spendant son démarrage. Lâchez-vous une fois que l'écran devient noir et que du texte gris clair apparaît. C'est comme si on passait sous le terminal, mais cela recouvre tout l'écran car l'interface graphique n'a pas encore démarré.

    Attention, tu cours en tant que root.

    Tapez "exit" à l'invite de la racine utilisateur unique pour quitter le mode utilisateur unique et continuer à démarrer en mode interface graphique multi-utilisateur.

  3. Les systèmes d'exploitation Unixy qui semblent toujours garder les fichiers critiques en mode utilisateur unique ne le sont /usrpeut - être pas. Une fois, j'ai rendu une boîte FreeBSD 9 non amorçable en passant /usrà un volume ZFS. J'avais oublié que les fonctionnalités de ZFS à la racine ne se trouvaient pas avant FreeBSD 10, ce qui créait un Catch 22 : le système d'exploitation avait besoin de fichiers /usrpour pouvoir être monté /usr!

    C'était déjà assez grave, mais si FreeBSD 9 gardait toujours son matériel de démarrage pour un utilisateur unique /usr, j'aurais pu le réparer. Etant donné qu’il ne démarrerait même pas en mode mono-utilisateur avec le /usrfait qu’il soit impossible à monter, il est clair que cette tradition avait été violée d’une manière ou d’une autre. Je devais démarrer à partir d'un CD de secours pour remettre le système en service.

  4. C'est également ce que nous obtenons /usr/share: il sépare les fichiers pouvant être partagés même entre des boîtiers Unix avec différents types de processeurs. En règle générale, les fichiers texte: pages de manuel, dictionnaire, etc.

  5. "X11R6" faisait référence à la version du système X Window qui sous-tendait les interfaces graphiques Linux au moment où cette convention était répandue. Les systèmes Linux ont généralement cessé de séparer le logiciel d'interface graphique à peu près au moment où X11R6 a été remplacé par X.Org .

  6. Les systèmes Unix d'origine conservaient leurs principaux scripts shell /etcafin d'éviter de les mélanger avec les vrais fichiers binaires de /bin.


3
J'ai adoré cette photo de machine à laver!
Asgs

@Warren, Quels sont les systèmes d'exploitation notables avant System III?
Pacerier

@Pacerier: UNIX versions 1 à 7, UNIX / 32V, 1BSD à 4BSD n'incluant pas les versions de points de 4BSD (la version 4.1BSD était à peu près contemporaine de AT & T Unix System III) et PWB Unix. Source . Pourquoi demandez-vous et qu'est-ce que cela a à voir avec cette question?
Warren Young

@Warren, eh bien, ils pourraient avoir affecté le "système de dénomination de répertoire" de
facto

@Pacerier: Je maintiens ma prétention: il n'y avait pas de "standard" avant System V, seulement des conventions et des pratiques locales.
Warren Young

9

Je recommanderais de faire référence à Wikipedia pour les questions liées à la structure en général, cela couvrira les bases.

Pour répondre directement à votre question, toutefois:

  • / usr est, vaguement, des bibliothèques système et des exécutables non critiques
  • / usr / local est, encore une fois, vaguement destiné aux bibliothèques non exécutables et aux exécutables

C'est pourquoi vous avez tendance à trouver une structure similaire entre les deux; / usr / {, local /} {bin, sbin, lib}. Étant nouveau pour le shell, ce bit avec les {} est une extension du shell. Essayez d'exécuter

ls -ld /usr/{,local/}{bin,sbin,lib}

à partir de votre shell local pour voir comment cela fonctionne.


9

/usr/local/bin montre les racines UNIX du dernier Mac OS (son BSD est basé ici).

  • "usr" signifie ressources système UNIX. Il s'agit de l'emplacement dans lequel les programmes système et les bibliothèques sont stockés.
  • "local" représente des ressources qui n'étaient pas fournies avec la distribution standard et, généralement, compilées et gérées site par site.
  • "bin" représente les exécutables compilés binaires.

Cela s'est transformé depuis les premières implémentations d'UNIX pour Linux et BSD, mais la convention est restée. Maintenant, ce /usr/binserait pour les programmes et bibliothèques "principaux" ou principaux , alors que ce serait pour les programmes et bibliothèques /usr/local/binsupplémentaires et non critiques.


12
J'utilise Unix peu de temps après la chute du mur de Berlin et je n'avais jamais entendu l'extension "Unix System Resources" de "usr" jusqu'à aujourd'hui. c'est un backronym. "usr" tire son nom car c'est là que se trouvaient à l'origine les répertoires personnels de l'utilisateur. Autrement dit, si vous aviez une connexion sur une ancienne boîte System III, votre répertoire de travail initial serait /usr/nzwulfinpar défaut. Un autre schéma commun. avant la /homeprise en charge du schéma SVR4 /u. Un système que j’ai utilisé très tôt comptait tellement d’utilisateurs qu’ils avaient besoin de plusieurs disques physiques pour stocker leurs fichiers /u/d5/tangent.
Warren Young

3
@ Warren, je ne l'avais pas entendu non plus et j'ai fouillé Google pendant un moment; on dirait qu'il y a pas mal d'arrière
Michael Mrozek

4

/usr/local/bin est l'emplacement par défaut le plus populaire pour les fichiers exécutables, en particulier ceux à code source ouvert.

Ce choix est toutefois discutable car, sur les systèmes Unix, il /usra été standardisé au début des années 90 pour contenir une hiérarchie de fichiers appartenant au système d’exploitation et pouvant donc être partagés par plusieurs systèmes utilisant ce système d’exploitation.

Ces fichiers étant statiques, le /usrsystème de fichiers peut être monté en lecture seule. /usr/localrejette cette norme car elle est de conception locale donc non partagée; elle doit donc être en lecture-écriture pour permettre la compilation locale et ne fait pas partie du système d'exploitation. Dommage que quelque chose comme /opt/localn'a pas été choisi à la place ...


1

Je vous recommande d'utiliser /usr/localdes programmes commerciaux que vous pourriez installer tels que Mathematica. Placez-le dans sa propre partition lors de la configuration. Lorsque vous mettez à niveau votre système d'exploitation, cette partition ne sera pas perturbée et vous ne devrez pas réinstaller son contenu. Utilisez-le donc pour les éléments que vous souhaitez conserver entre les mises à niveau du système d'exploitation.

Séparément, assurez-vous de donner /homesa propre partition pour cette raison aussi.


0

Cette réponse pourrait être utile aussi.

/ usr / local

L’idée de départ /usr/localétait d’avoir un répertoire séparé ('local') '/ usr' sur chaque machine en plus /usr, qui pourrait simplement être monté en lecture seule ailleurs. Il copie la structure de /usr.

Ces jours-ci, /usr/localest largement considéré comme un bon endroit pour garder des programmes auto-compilés ou tiers. La /usr/localhiérarchie est destinée à être utilisée par l’administrateur système lors de l’installation locale du logiciel. Il doit être protégé contre tout écrasement lorsque le logiciel système est mis à jour.

Il peut être utilisé pour des programmes et des données partagés entre un groupe d’hôtes, mais non trouvés dans /usr. Les logiciels installés localement doivent être placés à l'intérieur et /usr/localnon à /usrmoins d'être installés pour remplacer ou mettre à niveau des logiciels en /usr.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.