Co jest standardem dla systemu plików OS X? np. / opt / vs. / usr /

35

W co wchodzi /opt/i co powinno się wchodzić /usr/? Rozumiem, że /usr/kiedyś były to katalogi domowe użytkowników, ale skoro istnieją w /Users/- jaki jest teraz cel?

Czy istnieje instrukcja lub przewodnik do tego, do czego należy używać wszystkich wbudowanych katalogów? Jak co to jest /home/lub /net/?

DilithiumMatrix
źródło
5
Czy apple.stackexchange.com/questions/80902/… odpowiada na twoje zapytanie?
bmike
Dzięki @bmike, odpowiada na moje bezpośrednie problemy, ale nadal byłbym ciekawy, czy ktokolwiek opracował bardziej kompletny / wyczerpujący opis.
DilithiumMatrix
Czy podążałeś za linkiem do The Fileystem Hierarchy Standard ?
zelanix
1
@ zelanix tak, i nadal nie odnosi się odpowiednio do OS X
DilithiumMatrix

Odpowiedzi:

48

Czy istnieje instrukcja lub przewodnik do tego, do czego należy używać wszystkich wbudowanych katalogów? Jak co to jest / home / lub / net /?

Zajrzyj do Przewodnika programowania systemu plików, aby uzyskać najbardziej aktualne informacje oraz man hierw Terminalu, który zawiera „historyczny szkic” hierarchii systemu plików (znajduje się na końcu tej odpowiedzi w celach informacyjnych).

Komentarz do twojego pytania wspomina o Standardie Hierarchii Systemów Plików . Prawdopodobnie dojdziesz do wniosku, po przeczytaniu Przewodnika po programowaniu systemu plików i man hier, że macOS nie postępuje zgodnie z FHS , to raczej kwestia Linuksa. Oczywiście istnieją podobieństwa między FHS a układem systemu plików w systemie macOS ze względu na wspólne pochodzenie systemu UNIX, ale różnice są uderzające. macOS nie używa żadnego z tych:

  • /bootfolder -> używa /System/Library/Kernelszamiast tego macOS (w starszych wersjach macOS był folder zawierający jądro /)
  • /homefolder -> używa /Userszamiast tego macOS
  • /rootfolder -> używa /var/rootzamiast tego macOS

i /optnie jest wspomniany ani razu w żadnym dokumencie (więcej /optponiżej).

Dalszą distiction pomiędzy Macos i FHS zgodny OS jest stosowanie /private, na przykład /etcjest dowiązanie się /private/etc.

O /net: Jest to mapa automountera (wymieniona w /etc/auto_master), więcej informacji w Wikipedii .

Co powinien i powinien przejść do / opt / a co powinien / powinien przejść do / usr /? Rozumiem, że / usr / było kiedyś dla katalogów domowych użytkowników, ale skoro istnieje w / Users / - jaki jest teraz cel?

Chociaż /usr w przeszłości był używany do umieszczania katalogów domowych użytkowników , to już nie jest przypadek.

Obecnie /usrzawiera polecenia użytkownika ( /usr/bindla zwykłych użytkowników i /usr/sbinadministracyjnych, takich jak root), biblioteki współdzielone ( /usr/lib), strony podręcznika man ( /usr/share/man), pliki wykonywalne, które nie powinny być uruchamiane bezpośrednio przez użytkowników ( /usr/libexec) i inne rzeczy.

Oferuje także podkatalog /usr/localdo umieszczania programów, bibliotek i innych plików, które nie są dostarczane z podstawowym systemem operacyjnym.

/optma bardzo podobną rolę /usr/locali wydają się wymienne. Jednak z mojego doświadczenia w pracy z innych administratorów Linux / UNIX, nie wydaje się być korzystne dla /usr/localw BSD UNIX systemów operacyjnych.

To jest moje zdanie na ten temat: macOS jest oparty na BSD i dlatego użyłbym go /usr/local. Pamiętaj, że możesz utworzyć katalog programu, a następnie polecenia dowiązania symbolicznego do /usr/local/binitp., Na przykład:

/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

Kiedyś było to zwykłą praktyką także w Linuksie i UNIX, ale FHS wyraźnie zabrania tego: jeśli chcesz instalować pakiety stron trzecich w ich własnej hierarchii katalogów, powinieneś użyć /opt/<package>zamiast tego. Należy pamiętać, że zgodność z FHS wymaga umieszczenia plików konfiguracyjnych /etc/opt/<package>i plików zmiennych /var/opt/<package>.

Tak więc w macOS zalecam trzymanie się /usr/localjak opisano powyżej.

Wiem o dodatkowym oprogramowaniu, takim jak Cisco VPN i XQuartz, które się instalują /opt, więc powyższe różnice zaczynają się zacierać.

man hier

Jak wspomniano powyżej, jest to 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
jaume
źródło
1
Więc na przykład /usr/X11/nie jest zalecane?
GEdgar
@zhermes Cieszę się, że okażą się przydatne.
jaume
1
Dla czytelników, którzy nie mają OS X (dla man hier): strona podręcznika
Graham Perrin
1
Ten post na forach InsanelyMac mówi: „Apple ostatnio używał nazwy pliku mach_kernel dla swojego jądra w Mavericks, więc nie znajdziesz takiego pliku w Sierra! Od Yosemite, jądro OS X jest teraz umieszczone w / System / Library / Kernels pod file name kernel ”, więc moje wcześniejsze przypuszczenia były najwyraźniej błędne.
RandomDSdevel
1
@RandomDSdevel Dziękuję, nie wiedziałem o tej zmianie, zaktualizowałem swoją odpowiedź.
jaume
0

Kiedy czytam o /opt(często kojarzonych z /opt/localMacPortami ) i „standardowych” zastosowaniach ścieżek, myślę też o Fink, który istnieje już od co najmniej 2001 roku . Fink spopularyzował użycie następującej ścieżki:

/sw

Przykład nieostrożnego użycia niestandardowej części hierarchii systemu plików w systemie Mac OS X.

2003-02-06

Virex 7.2, bezpłatny dla wszystkich członków .Mac, niesławnie nadpisał biblioteki Fink :

To jest bardzo złe. Użytkownicy Fink, nie instaluj tego…

/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

Inne dyskusje na temat incydentu, w tym poszanowanie licencji, obejmowały:

2003-04-16

Fink aktualności pozycja:

Problem Virex rozwiązany

Firma McAfee wydała wersję Virex 7.2.1, która nie zastępuje już głównego katalogu Fink /sw. Użytkownicy Fink powinni nadal unikać Virex 7.2.

Wczesne raporty wskazują, że aktualizacja Virex z 7.2 do 7.2.1 nadal pozostawia pewne problemy. Jeśli uaktualnisz Virex z niezainstalowanym Fink, a następnie zechcesz zainstalować Fink, /swprzed instalacją musisz ręcznie usunąć katalog. A jeśli uaktualnisz Virex z już zainstalowanym Finkem , powinieneś natychmiast uruchomić Fink - zainstaluj ponownie openssl-shlibs dlcompat-shlibs curl-ssl-shlibs, aby przywrócić pliki, które aktualizacja Virex mogła usunąć.

2003-05

Informacje o wersji programu McAfee Virex w wersji 7.2.1 nie zawierały wzmianki o problemach spowodowanych przez użytkowników Fink.

Na marginesie…

2004-08-31

Obserwacje, że Virex 7.5 nie był już dostępny dla członków .Mac .


Związane z BSD

OS X… Rozumiem, że /usr/kiedyś były to katalogi domowe użytkowników

Dotyczy to nadal systemów operacyjnych takich jak FreeBSD i PC-BSD.

Chociaż /usr/home/nie jest to jednoznaczne na https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE ścieżka jest przedstawiona w dokumentach takich jak:

Graham Perrin
źródło
Dlaczego to jest przegłosowane?
Pacerier