Es gibt die kurze Version und die lange Version Ihrer Antwort ...
Kurzfassung:
Wie Ihr Link bereits sagte, /usr
ist dies ein Ort für systemweite , schreibgeschützte Dateien. Alle Ihre installierte Software geht also dorthin. Es werden keine Namen von /
except /bin
und dupliziert /lib
, sondern ursprünglich mit einem anderen Zweck: /bin, /lib
Dies gilt nur für Binärdateien und Bibliotheken, die zum Booten erforderlich sind , während dies /usr/bin, /usr/lib
für alle anderen ausführbaren Dateien und Bibliotheken gilt. (Jetzt sei ein guter Junge und frag nicht nach /sbin
, das ist doch die Kurzversion)
Heutzutage hat sich die Unterscheidung zwischen "zum Booten erforderlich" und "nicht verringert", da die meisten modernen Distributionen, einschließlich Ubuntu, ohne mehrere Dateien von nicht richtig booten können /usr
. Und aus diesem Grund gibt es eine starke Bewegung in Richtung Zusammenführung /usr/bin
und /bin
wird wahrscheinlich in naher Zukunft (Ubuntu 12.10 vielleicht?) /bin
Ein Symlink zu sein /usr/bin
.
Aber vielleicht sind Sie verwirrend /usr
und /usr/local
? Denn ja, es gibt (und sollte) viele doppelte Verzeichnisnamen. Mehr dazu später ...
Lange Version:
In den 70er Jahren, in Unix (ja, Unix, lange vor Linux), hatten Disketten nur wenig Speicherplatz (keine HD, erinnerst du dich?), Und zu einem bestimmten Zeitpunkt wuchsen die System-Binärdateien in Anzahl und Größe zu stark, als dass dies der Fall wäre Die Entwickler mussten sie auf mehrere Datenträger aufteilen und so neue Einhängepunkte für sie erstellen. /bin
Dateisystem voll war, so dass sie installiert die neuen Binärdateien auf ... /usr/bin
. Und /usr
war zu dieser Zeit ihr ... Benutzerverzeichnis !
Nachdem die (fast peinliche und oft als Scherz / Überlieferung erzählte) Trennung stattgefunden hatte, begannen sie, "künstliche" Begründungen (und Kriterien) zu erstellen, um zu entscheiden, was gehen würde /bin
und was gehen würde /usr/bin
. Die informelle Regel lautete: "Wesentliche" Dinge gehen an /bin
, "der Rest" geht an /usr/bin
. Gleiche mit /lib
. Es /usr
dauerte nicht lange, bis es mit systembezogenen Verzeichnissen, gemischt mit Benutzerverzeichnissen, überfüllt wurde. So /home
wurde geboren, um alle benutzerbezogenen Verzeichnisse /usr
sauber zu halten und nur für System "Sachen".
Dies war lange bevor es FHS gab. Als es geschaffen wurde, übernahm es die gegenwärtige Tradition (und formalisierte sie) und behielt den Namen /usr
, obwohl es zu diesem Zeitpunkt bereits nichts mehr mit "Benutzer" zu tun hatte. Also ja, die Phantasienamen „ U NIX s ource r epository“ oder „ U NIX s ystem r ESSOURCEN“ sind alle konfektionierten Namen, und es ist zu spät , es trotzdem zu benennen. (aber nicht zu spät, um /bin
es zu verschmelzen )
"Ok, was ist mit /usr/sbin
?" , du fragst. Verdammt, ich hatte gehofft, du hättest es vergessen. Ok ... /usr/sbin
ist für Befehle, die nur vom root
Benutzer ausgeführt werden können (oder nur sinnvoll sind) , wie mount
und fdisk
.
"Aber ist das nicht fast dasselbe wie /bin
?" . Ja sicher, aber ...
"Warte, warum gibt es dann auch eine /sbin
? Macht keinen Sinn!" . Nun, das liegt an ... ähm ... humm ...
Schau, ein dreiköpfiger Affe hinter dir!
Ok, hoffentlich hast du genug abgelenkt. Weitermachen ...
(Wenn Sie denken, ich betrüge, ja, Sie haben Recht. Aber so lautet die "offizielle" Antwort "wesentliche Befehle, die nur von root ausgeführt werden können und verfügbar sein müssen, bevor Sie überhaupt einsteigen /
"). Die Wahrheit ist: Die Zeile ist in der Tat verschwommen, und es gibt viele alte Namen, die einfach "hängen geblieben" sind, und jetzt ist es ziemlich schwer, sie loszuwerden.
Weitere Informationen zum /usr
Zusammenschluss finden Sie in den systemd
Dokumenten:
Die historische Begründung für ein von / usr getrenntes / bin, / sbin und / lib gilt heute nicht mehr. Sie wurden aufgeteilt, um ausgewählte Tools auf einer schnelleren Festplatte zu haben (die klein war, weil sie teurer war) und um alle Tools zu enthalten, die zum Mounten der langsameren / usr-Partition erforderlich sind. Heutzutage muss eine separate / usr-Partition bereits während des frühen Bootens von den initramfs eingehängt werden, was die Rechtfertigung für einen Split-Off-Moot darstellt. Darüber hinaus haben viele Tools in / bin und / sbin im Status Quo bereits die Fähigkeit verloren, ohne ein vorinstalliertes / usr ausgeführt zu werden. Es gibt keinen gültigen Grund mehr, das Betriebssystem über mehrere Hierarchien zu verteilen, es hat seinen Zweck verloren.
Und eine erstaunliche Lektüre über die /usr
Spaltung und ihre Gründe von Rob Landley:
Grundlegendes zum bin, sbin, usr / bin, usr / sbin split
Heutzutage
Bezüglich der Installationsverzeichnisse ist es derzeit am besten, wenn Sie wie folgt vorgehen:
/usr
- Alle systemweiten schreibgeschützten Dateien, die vom Betriebssystem installiert (oder bereitgestellt) wurden
/usr/local
- Systemweite, schreibgeschützte Dateien, die vom lokalen Administrator (normalerweise von Ihnen) installiert wurden. Und deshalb werden die meisten Verzeichnisnamen von /usr
hier dupliziert.
/opt
- eine Gräueltat für systemweite, schreibgeschützte und eigenständige Software. Das heißt, Software , die nicht ihre Dateien über nicht gespalten bin
, lib
, share
, include
wie gut erzogene Software sollte.
~/.local
- das Gegenstück pro Benutzer /usr/local
, dh die von (und für) jeden Benutzer installierte Software
~/.local/opt
- das Gegenstück pro Benutzer von /opt
Wo also soll die Software installiert werden?
Die obige Liste ist bereits die halbe Antwort auf Ihre Oracle JDK-Frage, zumindest gibt es mehrere Hinweise. Die Checkliste zu "Wo soll ich Software X installieren?" verfliegt:
Handelt es sich um eine vollständig eigenständige Einzelverzeichnis-Software wie Eclipse IDE und andere heruntergeladene Java-Apps, die allen Benutzern zur Verfügung stehen soll? Dann installieren Sie in/opt
Wie oben, aber Sie interessieren sich nicht für andere Benutzer und ich möchte nur für Ihren Benutzer installieren? Dann installieren Sie in~/.local/opt
Die Dateien sind auf mehrere Verzeichnisse verteilt bin
und share
sollten wie herkömmliche Software, die mit kompiliert und installiert wurde ./configure && make && sudo make install
, allen Benutzern zur Verfügung stehen. Dann installieren Sie in/usr/local
Wie oben, aber nur für Ihren Benutzer? Dann installieren Sie in~/.local
Software, die vom Betriebssystem oder über Paketmanager (z. B. Software Center) installiert wird, und vor allem, welche lokalen Änderungen werden möglicherweise überschrieben, wenn der Update Manager ein Upgrade auf eine neue Version durchführt ? Es geht um/usr
Anmerkungen:
Dies erklärt, warum das Standard-Installationspräfix für kompilierte Software lautet /usr/local
und warum Sie es ändern sollten, ./configure --prefix=$HOME/.local
wenn Sie Software nur für Ihren eigenen Benutzer installieren
Möglicherweise haben Sie bemerkt, dass alle oben genannten Verzeichnisse schreibgeschützt sind (außer natürlich, wenn Sie Software installieren / entfernen). Die beschreibbaren Dateien (wie auch die Konfigurationsdateien) gehen normalerweise zu /etc
(für systemweite Software) und ~/.config
(für Benutzereinstellungen). Obwohl viele ältere Softwareprodukte (und leider auch einige moderne) verwendet werden ~/.<software-name>
, ist Ihr privater Ordner mit Milliarden von Verzeichnissen und Dateien überfüllt.
~/.local
und ~/.config
sind nicht Teil der FHS-Spezifikation. FHS befasst sich nicht mit dem Home-Ordner des Benutzers. Sie sind ein Versuch von XDG, einer anderen Standardorganisation, die sich an Desktop-Umgebungen (wie Gnome, KDE und Unity) orientiert, um zu versuchen, einige Konventionen hinsichtlich der Struktur des Benutzerhauses festzulegen. Nicht alle Softwareprodukte halten sich daran (z. B. ~/.local/bin
nicht an die Standardeinstellungen des Benutzers $PATH
, obwohl dies logischerweise der Fall sein sollte) , und kein Benutzer ist gezwungen, sich daran zu halten. In diesem Fall profitieren jedoch beide von zahlreichen Vorteilen für die Interoperabilität.
Ich hoffe, das hilft, die Dinge ein bisschen zu klären. Fühlen Sie sich frei, etwas zu fragen, damit ich die Antwort verbessern kann!
(und ich hoffe auch, dass Puristen mich nicht für solch eine äußerst informelle Sprache und Erklärung umbringen. Es war beabsichtigt und hat sicherlich viele Ungenauigkeiten, aber ich glaube, es ist eine gute Möglichkeit, einem Neuling einen kurzen Überblick über die Installation zu verschaffen Verzeichnisse rationales)