Was ist der Grund für die „Unix Systemressourcen“, oder /usr
Verzeichnis, wie hier , die viele der Verzeichnisnamen unter dem Stammverzeichnis kopiert /
?
Mein Ziel: Ich installiere Oracle JDK zum x-ten Mal und entschied /home/user
mich diesmal, es einfach zu unterbinden. Ich lese nur ein bisschen herum, um zu sehen, ob es eine schlechte Idee für einen einzelnen Benutzer ist.
filesystem
history-of-ubuntu
H2ONaCl
quelle
quelle
/usr
, ein verstecktes "Benutzer" -Verzeichnis für so viele Jahre zu bedeuten ...Antworten:
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 vomroot
Benutzer ausgeführt werden können (oder nur sinnvoll sind) , wiemount
undfdisk
."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 densystemd
Dokumenten: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 gespaltenbin
,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
undshare
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 installierenMö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)
quelle
$PATH
ist irrelevant. Der Angreifer kann sogar ändern , dass über~/.profile
, so dass Ihr Punkt strittig ist.~/.local/bin
ist so sicher (oder unsicher, wenn Sie wollen) wie~/bin
es in den meisten Distributionen üblich ist. Die Idee, dass ein Benutzer kein Verzeichnis haben sollte , in dem er persönliche Skripte aufbewahren und ausführen kann,$PATH
ist absurd.~/bin
ist es so sicher wie~/.profile
und$PATH
schützt mich nicht vor Malware, die von mir ausgeführt wird (die die Berechtigung hat, in meinem eigenen Haus zu schreiben). Ich kannte diese Datei nicht, es tut mir leid. Vielen Dank für die Klarstellung, sorry für meinen vorherigen Kommentar.