Was gehört und sollte hinein /opt/
und was sollte/darf hineingehen /usr/
? Meines Wissens war das /usr/
früher für Benutzer-Home-Verzeichnisse gedacht, aber da sie in existieren /Users/
- was ist jetzt der Zweck?
Gibt es ein Handbuch oder eine Anleitung, wofür alle integrierten Verzeichnisse verwendet werden sollten? Was ist /home/
, oder /net/
?
Gibt es ein Handbuch oder eine Anleitung, wofür alle integrierten Verzeichnisse verwendet werden sollten? Was ist zum Beispiel /home/ oder /net/?
Die aktuellsten Informationen finden Sie im Dateisystem-Programmierhandbuchman hier
und in Terminal, das eine „historische Skizze“ der Dateisystemhierarchie enthält (als Referenz am Ende dieser Antwort enthalten).
Ein Kommentar zu Ihrer Frage erwähnt den Filesystem Hierarchy Standard . Sie werden wahrscheinlich nach dem Durchlesen von File System Programming Guide und zu dem Schluss kommen man hier
, dass macOS nicht dem FHS folgt , das ist eher eine Linux-Sache. Natürlich gibt es aufgrund des gemeinsamen UNIX-Ursprungs Ähnlichkeiten zwischen dem FHS und dem Dateisystem-Layout in macOS, aber die Unterschiede sind frappierend. macOS verwendet keines davon:
/boot
Ordner -> macOS verwendet /System/Library/Kernels
stattdessen (in älteren Versionen von macOS war der Ordner mit dem Kernel /
)/home
Ordner -> macOS verwendet /Users
stattdessen/root
Ordner -> macOS verwendet /var/root
stattdessenund /opt
wird in keinem Dokument ein einziges Mal erwähnt (mehr dazu weiter /opt
unten.)
Ein weiterer Unterschied zwischen macOS und einem FHS-kompatiblen Betriebssystem ist die Verwendung von /private
, beispielsweise /etc
ist ein symbolischer Link auf /private/etc
.
Info /net
: Es ist eine Automounter-Karte (aufgelistet in /etc/auto_master
), siehe Wikipedia für weitere Informationen.
Was soll und soll in /opt/ und was soll/muss in /usr/? Mein Verständnis ist, dass /usr/ früher für Benutzer-Home-Verzeichnisse war, aber da das in /Users/ existiert - was ist jetzt der Zweck?
Obwohl /usr
in der Vergangenheit verwendet wurde, um die Home-Verzeichnisse der Benutzer zu platzieren , ist dies nicht mehr der Fall.
Heutzutage /usr
enthält es Benutzerbefehle (in /usr/bin
für normale Benutzer und /usr/sbin
für Administratoren wie root
), gemeinsam genutzte Bibliotheken ( /usr/lib
), Handbuchseiten ( /usr/share/man
), ausführbare Dateien, die nicht direkt von Benutzern ausgeführt werden sollten ( /usr/libexec
) und andere Dinge.
Es bietet auch ein Unterverzeichnis, /usr/local
, um Programme, Bibliotheken und andere Dateien zu platzieren, die nicht mit dem Basisbetriebssystem geliefert werden.
/opt
hat eine sehr ähnliche Rolle /usr/local
und sie scheinen austauschbar zu sein. Aus meiner Erfahrung bei der Arbeit mit anderen Linux/UNIX-Systemadministratoren scheint es jedoch eine Präferenz für /usr/local
BSD-basierte UNIX-Betriebssysteme zu geben.
Das ist also meine Meinung dazu: macOS ist BSD-basiert und folglich würde ich /usr/local
. Beachten Sie, dass Sie ein Programmverzeichnis erstellen und dann Befehle symbolisch mit /usr/local/bin
usw. verknüpfen können, zum Beispiel:
/usr/local/mysql
/usr/local/mysql/bin/mysqladmin
/usr/local/mysql/lib/libmysqlclient.so
/usr/local/bin/mysqladmin -> ../mysql/bin/mysqladmin
/usr/local/lib/libmysqlclient.so -> ../mysql/lib/libmysqlclient.so
Dies war früher auch unter Linux und UNIX üblich, aber die FHS verbietet es ausdrücklich: Wenn Sie Pakete von Drittanbietern in ihrer eigenen Verzeichnishierarchie installieren möchten, sollten Sie /opt/<package>
stattdessen verwenden. Beachten Sie, dass die FHS-Konformität erfordert, dass Konfigurationsdateien in /etc/opt/<package>
und Variablendateien in /var/opt/<package>
.
In macOS würde ich also empfehlen, dass Sie sich an /usr/local
die oben beschriebene Vorgehensweise halten.
Mir ist Add-On-Software wie Cisco VPN und XQuartz bekannt , die in installiert /opt
werden, daher beginnen die obigen Unterscheidungen zu verschwimmen.
man hier
Wie oben erwähnt ist dies man hier
:
A historical sketch of the filesystem hierarchy. The modern macOS filesystem is documented in the
``File System Programming Guide'' available on Apple Developer.
/ root directory of the filesystem
/bin/ user utilities fundamental to both single-user and multi-user environments
/dev/ block and character device files
fd/ file descriptor files; see fd(4)
/etc/ system configuration files and scripts
/mach_kernel kernel executable (the operating system loaded into memory at boot time).
/sbin/ system programs and administration utilities fundamental to both single-user and multi-
user environments
/tmp/ temporary files
/usr/ contains the majority of user utilities and applications
bin/ common utilities, programming tools, and applications
include/ standard C include files
arpa/ C include files for Internet service protocols
hfs/ C include files for HFS
machine/ machine specific C include files
net/ misc network C include files
netinet/ C include files for Internet standard protocols; see inet(4)
nfs/ C include files for NFS (Network File System)
objc/ C include files for Objective-C
protocols/ C include files for Berkeley service protocols
sys/ system C include files (kernel data structures)
ufs/ C include files for UFS
lib/ archive libraries
libexec/ system daemons & system utilities (executed by other programs)
local/ executables, libraries, etc. not included by the basic operating system
sbin/ system daemons & system utilities (executed by users)
share/ architecture-independent data files
calendar/ a variety of pre-fab calendar files; see calendar(1)
dict/ word lists; see look(1)
web2 words from Webster's 2nd International
words common words
man/ manual pages
misc/ misc system-wide ascii text files
mk/ templates for make; see make(1)
skel/ example . (dot) files for new accounts
tabset/ tab description files for a variety of terminals; used in the term-
cap file; see termcap(5)
zoneinfo/ timezone configuration information; see tzfile(5)
/var/ multi-purpose log, temporary, transient, and spool files
at/ timed command scheduling files; see at(1)
backups/ misc. backup files
db/ misc. automatically generated system-specific database files
log/ misc. system log files
mail/ user mailbox files
run/ system information files describing various info about system since it was
booted
utmpx database of current users; see utmpx(5)
rwho/ rwho data files; see rwhod(8), rwho(1), and ruptime(1)
spool/ misc. printer and mail system spooling directories
mqueue/ undelivered mail queue; see sendmail(8)
tmp/ temporary files that are kept between system reboots
folders/ per-user temporary files and caches
/usr/X11/
nicht zu empfehlen?/usr/X11
war schon immer der Standardspeicherort für X11 in vielen UNIX- und Linux-Distributionen, einschließlich OS X. Es wurde in der Vergangenheit von Apple selbst verwendet, am 10.5.8 gab es ein Paket namens com.apple.pkg.X11User
, das X11 in genau diesem Pfad bereitstellte . Auf meinem MacBook Pro ist immer noch ein X11-Paket mit dem Namen "Lion" oder "Mountain Lion" com.apple.pkg.X11redirect
installiert /usr/X11
, da X11 nicht mehr in OS X enthalten ist ( support.apple.com/kb/HT5293 ).man hier
): Apples Mac OS X Handbuchseite für hier(7)/Applications
und installiert /opt/X11
. Die "7" in Klammern in Graham Perrins Antwort ist der Abschnitt, in dem sich die Manpage für hier befindet. Weitere Informationen zu man-Abschnitten finden Sie unter unix.stackexchange.com/questions/3586/… .mach_kernel
scheint sich nicht mehr im Stammverzeichnis zu befinden, zumindest als ich auf meinem Computer nachgesehen habe. Zugegeben, das könnte etwas mit der Einführung von System Integrity Protection in OS X v10.11.x zu tun haben , aber das ist nur eine ungeprüfte Vermutung meinerseits.Wenn ich von /opt
(oft assoziiert mit /opt/local
für MacPorts ) und von „Standard“-Pfadverwendungen lese, denke ich auch an Fink, das es mindestens seit 2001 gibt . Fink hat die Verwendung des folgenden Pfads populär gemacht:
/sw
Virex 7.2, kostenlos für alle .Mac-Mitglieder, hat Fink-Bibliotheken infamerweise überschrieben :
Das ist sehr schlecht. Fink-Benutzer, installieren Sie dies nicht …
/Volumes/Virex 7.2.dmg/Virex 7.2.pkg 328 % lsbom Contents/Resources/Virex\ 7.2.bom | grep sw
./sw 40775 0/80
./sw/lib 40775 0/80
./sw/lib/libcrypto.0.9.6.dylib 100644 0/80 945416 3192711062
./sw/lib/libcurl.2.0.2.dylib 100644 0/80 634480 510417796
./sw/lib/libcurl.2.dylib 100644 0/80 634480 510417796
./sw/lib/libdl.0.dylib 100644 0/80 15124 4193639260
./sw/lib/libssl.0.9.6.dylib 100644 0/80 261776 3001832603
Andere Diskussionen über den Vorfall, einschließlich der Achtung der Lizenzierung, beinhalteten:
Eine Fink-Neuigkeit :
Virex-Problem behoben
McAfee hat Virex 7.2.1 veröffentlicht, das das Hauptverzeichnis von Fink nicht mehr überschreibt
/sw
. Fink-Anwender sollten Virex 7.2 weiterhin meiden.Frühe Berichte deuten darauf hin, dass das Upgrade von Virex von 7.2 auf 7.2.1 jedoch noch einige Probleme hinterlässt. Wenn Sie Virex ohne installiertes Fink aktualisieren und anschließend Fink installieren möchten, müssen Sie das
/sw
Verzeichnis vor der Installation manuell löschen. Und wenn Sie Virex mit bereits installiertem Fink aktualisieren, sollten Sie sofort fink reinstall openssl-shlibs dlcompat-shlibs curl-ssl-shlibs ausführen , um Dateien wiederherzustellen, die durch das Virex-Upgrade möglicherweise gelöscht wurden.
Versionshinweise für McAfee Virex Version 7.2.1 erwähnen nicht die Probleme, die Benutzern von Fink entstehen.
Als Randnotiz …
Beobachtungen, dass Virex 7.5 für .Mac-Mitglieder nicht mehr verfügbar war .
… OS X … Meines Wissens war das
/usr/
früher für Benutzer-Home-Verzeichnisse …
Das gilt immer noch für Betriebssysteme wie FreeBSD und PC-BSD.
Obwohl es unter https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE/usr/home/
nicht explizit angegeben ist, wird der Pfad in Dokumenten wie den folgenden veranschaulicht:
Fahrrad
DilithiumMatrix
Zelanix
DilithiumMatrix