Was ist Standard für das OS X-Dateisystem? zB /opt/ vs. /usr/

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/?

Danke @bmike, es beantwortet meine unmittelbaren Probleme, aber ich wäre trotzdem neugierig, ob jemand eine vollständigere/erschöpfendere Beschreibung zusammengestellt hat.
Sind Sie dem Link zu The Filesystem Hierarchy Standard gefolgt ?
@zelanix ja, und es spricht OS X immer noch nicht angemessen an

Antworten (2)

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:

  • /bootOrdner -> macOS verwendet /System/Library/Kernelsstattdessen (in älteren Versionen von macOS war der Ordner mit dem Kernel /)
  • /homeOrdner -> macOS verwendet /Usersstattdessen
  • /rootOrdner -> macOS verwendet /var/rootstattdessen

und /optwird in keinem Dokument ein einziges Mal erwähnt (mehr dazu weiter /optunten.)

Ein weiterer Unterschied zwischen macOS und einem FHS-kompatiblen Betriebssystem ist die Verwendung von /private, beispielsweise /etcist 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 /usrenthält es Benutzerbefehle (in /usr/binfür normale Benutzer und /usr/sbinfü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.

/opthat eine sehr ähnliche Rolle /usr/localund 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/localBSD-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/binusw. 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/localdie oben beschriebene Vorgehensweise halten.

Mir ist Add-On-Software wie Cisco VPN und XQuartz bekannt , die in installiert /optwerden, 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
Also zum Beispiel /usr/X11/nicht zu empfehlen?
@zhermes Ich bin froh, dass Sie es nützlich fanden.
@GEdgar Ja, /usr/X11war 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.X11redirectinstalliert /usr/X11, da X11 nicht mehr in OS X enthalten ist ( support.apple.com/kb/HT5293 ).
Beachten Sie, dass usr ein Backcronym für UNIX-Systemressourcen hat, und das ist eine treffendere Beschreibung des Verzeichnisses als »user«. Ich würde dies als kleinen Kommentar hinzufügen, aber ich habe nicht den Ruf.
@lefenzy Es scheint zwei verschiedene Arten von Antworten zu geben, wenn es um "usr" geht: Es ist ein Akronym und steht für "Unix System Resources" oder es bedeutet "Benutzer". Laut tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html "können einige Leute dieses Verzeichnis jetzt als 'Benutzersystemressourcen' bezeichnen und nicht als 'Benutzer', wie es ursprünglich beabsichtigt war." Ich weiß nicht, welche davon wahr ist, vielleicht sind sie alle bis zu einem gewissen Grad richtig ... Ich lasse es einfach hier als Kommentar.
Für Leser, die kein OS X haben (für man hier): Apples Mac OS X Handbuchseite für hier(7)
@jaume, wo befindet sich jetzt der X11-Ordner?
@GrahamPerrin, was bedeutet Klammer 7 überhaupt?
@ Pacerier Ich habe es für dich überprüft. Die neueste Version (2.7.11, von xquartz.org/index.html ) ist in /Applicationsund 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_kernelscheint 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.
In diesem Beitrag in den InsanelyMac-Foren heißt es: „Apple hat zuletzt den Dateinamen mach_kernel für seinen Kernel in Mavericks verwendet, daher werden Sie in Sierra keine solche Datei finden! Dateiname Kernel ", also war meine frühere Vermutung offensichtlich falsch, wie es scheint.
@RandomDSdevel Danke, ich war mir dieser Änderung nicht bewusst, ich habe meine Antwort aktualisiert.

Wenn ich von /opt(oft assoziiert mit /opt/localfü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

Ein Beispiel für die nachlässige Verwendung eines nicht standardmäßigen Teils der Dateisystemhierarchie unter Mac OS X

2003-02-06

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:

2003-04-16

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 /swVerzeichnis 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.

2003-05

Versionshinweise für McAfee Virex Version 7.2.1 erwähnen nicht die Probleme, die Benutzern von Fink entstehen.

Als Randnotiz …

2004-08-31

Beobachtungen, dass Virex 7.5 für .Mac-Mitglieder nicht mehr verfügbar war .


BSD-bezogen

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:

  • Für Leute, die sowohl mit FreeBSD als auch mit UNIX® neu sind: 3. Sich umsehen
Warum wird das also herabgestuft?