/ usr / bin vs / usr / local / bin unter Linux

Warum gibt es unter Linux so viele Stellen, an denen eine Binärdatei abgelegt werden kann? Es gibt mindestens diese fünf:

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

Und auf meiner Office-Box habe ich keine Schreibberechtigungen für einige von diesen.

Welche Art von Binärdatei geht in welche dieser bin s?

Kommentare

  • Sie haben /usr/sbin/ vergessen .
  • Und ~/bin/ für persönliche Dinge.
  • Es gibt heutzutage weniger Orte, da /bin wurde mit /usr/bin zusammengeführt und /sbin wurde mit /usr/sbin zusammengeführt – siehe Der Fall für die / usr-Zusammenführung .
  • @Calmarius, was? Sollte ‚ nicht /usr/local/bin verwendet werden?
  • @Pacerier ~ / bin ist nur für den aktuellen Benutzer. Zum Beispiel auf Mehrbenutzer-Linux-Servern, auf denen Sie kein Administrator sind und ‚ die einzige Möglichkeit ist, “ Sachen für sich.

Antwort

  1. /bin (und /sbin) waren für Programme gedacht, die sich auf einer kleinen / -Partition vor der größeren befinden mussten /usr usw. Partitionen wurden bereitgestellt. Heutzutage dient es hauptsächlich als Standardspeicherort für Schlüsselprogramme wie /bin/sh, obwohl die ursprüngliche Absicht z. Installationen auf kleinen eingebetteten Geräten.

  2. /sbin im Unterschied zu /bin ist für Systemverwaltungsprogramme (normalerweise nicht von normalen Benutzern verwendet), die benötigt werden, bevor /usr bereitgestellt wird.

  3. /usr/bin ist für verteilungsverwaltete normale Benutzerprogramme vorgesehen.

  4. Es gibt eine /usr/sbin mit derselben Beziehung zu /usr/bin als /sbin muss /bin.

  5. /usr/local/bin ist für normale Benutzerprogramme nicht , die vom Distributionspaket-Manager verwaltet werden, z lokal kompilierte Pakete. Sie sollten sie nicht in /usr/bin installieren, da zukünftige Distributions-Upgrades sie ohne Vorwarnung ändern oder löschen können.

  6. /usr/local/sbin ist, wie Sie an dieser Stelle wahrscheinlich erraten können, /usr/local/bin als /usr/sbin bis /usr/bin.

Zusätzlich gibt es auch /opt, was jedoch für monolithische Nichtverteilungspakete gilt Bevor sie richtig integriert wurden, haben verschiedene Distributionen Gnome und KDE dort platziert. Im Allgemeinen sollten Sie es für große, schlecht benommene Pakete von Drittanbietern wie Oracle reservieren.

Kommentare

  • Ich denke, diese Antwort leistet einen großartigen Beitrag zur Klärung eine gängige Reihe von Konventionen, aber dieser Beitrag von Rob Landley ist eine wirklich gute Lektüre, wenn Sie einen Einblick in den Unsinn erhalten möchten … lists.busybox.net/pipermail/busybox/2010 -Dezember / 074114.html
  • refspecs.linuxfoundation.org/fhs.shtml für die kanonische aktuelle Referenz. Der Link von @kojiro ist veraltet und ‚ hat nicht die neue Spezifikation.
  • Wo lege ich einen Behälter ab, den ich aus dem Internet heruntergeladen habe? Aus Ihrer Beschreibung geht hervor, dass es in / usr / local / bin oder / usr / bin abgelegt werden sollte. Ist / usr / bin etwas, das ich niemals manuell berühren und nur den Paketmanager spielen lassen sollte?
  • @DidierA. Fügen Sie es in ~/bin ein und fügen Sie dieses Verzeichnis Ihrem PATH als Benutzer hinzu … Vielen Dank für den Hinweis, ich habe meinen ernsthaft veralteten Kommentar gelöscht.
  • Ich habe das gefunden Antwort auf den ersten Teil meiner Frage hier: superuser.com/a/238993/425838 . Die Priorität basiert auf der Reihenfolge in der Systemvariablen PATH, und echo $PATH zeigt für mich /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games an Dies bedeutet, dass ausführbare Dateien in /usr/local/bin Vorrang vor denen in /usr/bin haben, die Vorrang vor denen in .

Antwort

Ich empfehle einen Blick auf die Manpage zur Dateisystemhierarchie:

man hier 

, das auch online verfügbar ist, zum Beispiel: http://linux.die.net/man/7/hier . Relevante Teile wurden unten kopiert. Abhängig von Ihrem System kann es etwas anderes sagen.

Name

    hier – Beschreibung der Dateisystemhierarchie

Beschreibung

    Ein typisches Linux-System verfügt unter anderem über die folgenden Verzeichnisse:

    /bin

      Dieses Verzeichnis enthält ausführbare Programme, die für einzelne Benutzer benötigt werden Modus und um das System aufzurufen oder zu reparieren.

    /sbin

      Wie /bin dieses Verzeichnis Enthält Befehle, die zum Starten des Systems erforderlich sind, aber normalerweise nicht von normalen Benutzern ausgeführt werden.

    /usr/bin

      Dies ist das primäre Verzeichnis für ausführbare Programme. Die meisten von normalen Benutzern ausgeführten Programme, die zum Booten oder Reparieren des Systems nicht benötigt werden und die nicht lokal installiert sind, sollten in diesem Verzeichnis abgelegt werden.

    /usr/local/bin

      Binärdateien für lokale Programme.

    /usr/local/sbin

      Lokal installierte Programme für die Systemadministration.

    /usr/sbin

      Dieses Verzeichnis enthält Programm-Binärdateien für die Systemadministration, die für den Startvorgang, für das Mounten von /usr oder für die Systemreparatur nicht unbedingt erforderlich sind .

Kommentare

  • Dies ist nicht ‚ Beantworten Sie die Frage des Benutzers ‚ nicht.
  • Die Manpage enthält einen Eintrag für jedes der bin-Verzeichnisse, in dem erläutert wird, was geht auf sie ein, was eine der Fragen war.

Antwort

Die Dateisystemhierarchie Der Eintrag chy Standard in Wikipedia hat mir geholfen, die gleiche Frage zu beantworten, als ich sie hatte, und sie enthält eine sehr erklärende Tabelle.

Auszug aus dieser Seite 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 Abgerufen am 19. Juni 2019; Permalink .

Antwort

Die sbin -Verzeichnisse enthalten Programme, die im Allgemeinen nur der Systemadministration dienen. Programme für normale Benutzer sollten niemals in sie aufgenommen werden.

Einige Programme werden während des Startvorgangs benötigt und landen in /bin/ oder /sbin/. Diese müssen verfügbar sein, bevor Dateisysteme bereitgestellt werden. Dinge wie mount und fsck, die zum Überprüfen und Mounten von Dateisystemen erforderlich sind, müssen vorhanden sein.

Die meisten Pakete Programme landen in /usr/bin/ und /usr/sbin/. Diese können sich in einem anderen Dateisystem als dem Root-Dateisystem befinden. In einigen Fällen befinden sie sich möglicherweise auf einem im Netzwerk bereitgestellten Laufwerk.

Lokale Programme und Skripte gehören zu /usr/local/bin/ und /usr/local/sbin/ . Dies identifiziert sie als eindeutig nicht standardisiert und möglicherweise nur vor Ort verfügbar.

Zur weiteren Erläuterung führen Sie den Befehl man hier aus, der eine Beschreibung der empfohlenen Dateisystemhierarchie für Ihre Distribution enthalten sollte. Vielleicht möchten Sie auch über die Dateisystemhierarchie auf Wikipedia

Kommentare

    +1 Eine wirklich prägnante Erklärung, wenn top etwas zu viel ist.

  • “ Lokale Programme und Skripte gehören in / usr / local / bin / und / usr / local / sbin / “ – Sie meinen lokale Programme wie in „, die überhaupt nicht Teil des Betriebssystems sind, aber ich habe mich für die Installation entschieden sie und möchten sie verwenden „?

Antwort

In den 1970er Jahren hatte UNIX alle offiziellen ausführbaren Dateien in /bin und /usr/bin befand sich unter den Home-Verzeichnissen der Benutzer (z. B. /usr/dmr), die jedem Benutzer zum Speichern eigener Binärdateien zur Verfügung stand, die möglicherweise auch für andere von Interesse waren.

Das Ergebnis dieser offenen /usr/bin war ein Schrottplatz für undokumentierte Software und so wurde Stephen Bourne wro te ein cron-Skript, das jede Nacht nach neuen Binärdateien suchte und alle Binärdateien entfernte, die keine Dokumentation hatten oder die aktualisiert wurden, ohne auch ihre Dokumentation zu aktualisieren.

In den späten 1970er Jahren war /usr/bin wurde in die Basisverteilung des Betriebssystems integriert, und die Benutzer verwendeten /usr/local/bin für den Zweck des vorherigen offenen /usr/bin

Nach einer Weile verwendeten Sysadmins /usr/local/bin, um nicht lokale Software zu speichern, die aus dem Netzwerk importiert wurde (z USENET) und da UNIX-Unternehmen nicht den gleichen Fehler wie bei /usr/bin wiederholen wollten, gab es um 1987 eine Konferenz zur Dateisystemhierarchie, bei der sich alle UNIX-Unternehmen bereit erklärten, /usr/local/bin und stattdessen /opt/<vendor>/bin verwenden.

Leider sind Linux-Distributionen dieser Entscheidung nicht gefolgt …

Kommentare

  • Obwohl sehr interessant, nichts davon versucht sogar, die gestellte Frage zu beantworten, bei der es nicht um /opt und nicht um UNIX, sondern um Linux ging. Dies ist wie das Beantworten von “ Warum haben Autos 4 Räder? “ mit “ Fahrräder haben 2! Leider helfen Autos nicht ‚ t. „, was ‚ dem OP nicht hilft, zu verstehen, warum Autos haben 4.
  • Wenn Sie die angegebene Erklärung nicht als Erklärung für den Hintergrund von Linux und die Tatsache, dass Linux gerne UNIX imitiert, verwenden können, fehlt Ihnen möglicherweise der erforderliche Hintergrund.
  • Interessant, aber etwas, bei dem ich verwirrt bin und das vielleicht auch nur historisch ist. Heutzutage ist das Herunterladen eines Abfalleimers online und eines Unternehmensabfalleimers ‚ nicht sehr unterschiedlich. Wenn Joe Blow ein Programm erstellt und ich es herunterlade, warum nicht in / opt / JowBlow / bin anstelle von / usr / local / bin. Handelt es sich um einen vertrauenswürdigen Anbieter oder um einen nicht vertrauenswürdigen? ‚ scheint mir keinen Sinn zu ergeben.
  • Ich wünschte, ich hätte diese ‚ genau ‚ Geschichte vor einigen Jahren. a) Ich habe mich gefragt, warum AIX / usr / local vermieden hat, / opt / IBM und / opt / ibm verwendet und bullfreeware / opt / freeware verwendet – und warum ich einen anderen Pfad hätte verwenden sollen (nicht nur / opt / * sbin). In Bezug auf die Semi-Relevanz unter Linux – bessere GNU-Tools – lautet das Standardpräfix in Auto-Tools / usr / local. Schade, dass Autotools (Automake, Autoconf usw. nicht folgen … Aber wir alle überleben und lernen, wo die Distrub. || Anbieter ihre Programme platzieren.
  • Könnten wir noch eine dieser Konferenzen abhalten? Nur dieses Mal, JEDER HÖRT!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.