Що є стандартним для файлової системи OS X? наприклад / opt / vs. / usr /


35

У що і що слід входити, /opt/і в що слід / що має входити /usr/? Я розумію, що /usr/раніше було для домашніх каталогів користувачів, але оскільки вони існують в /Users/- яка мета зараз?

Чи є посібник чи посібник, для чого слід використовувати всі вбудовані каталоги? Як, що є /home/, чи /net/?


5
Чи відповідає apple.stackexchange.com/questions/80902/… на ваш запит?
bmike

Дякую @bmike, він відповідає на мої негайні питання, але мені все одно цікаво, якщо хтось склав більш повний / вичерпний опис.
DilithiumMatrix

Чи переходили ви за посиланням на стандарт ієрархії файлової системи ?
zelanix

1
@zelanix так, і це все ще не відповідає належним чином OS X
DilithiumMatrix

Відповіді:


48

Чи є посібник чи посібник, для чого слід використовувати всі вбудовані каталоги? Як, що таке / додому /, або / нетто /?

Ознайомтеся з посібником з програмування файлової системи для найновішої інформації та man hierв терміналі, який надає "історичний ескіз" ієрархії файлової системи (він міститься в кінці цієї відповіді для ознайомлення).

У коментарі до вашого питання згадується стандарт ієрархії файлової системи . Ви, мабуть, прийдете до висновку, ознайомившись з Посібником з програмування файлової системи та man hier, що macOS не слідкує за FHS , це більше справа Linux. Звичайно, є подібність між FHS та компонуванням файлової системи в macOS через загальне походження UNIX, але відмінності вражають. macOS не використовує нічого з цього:

  • /bootпапка -> macOS використовує /System/Library/Kernelsнатомість (у старих версіях macOS папка, що містить ядро /)
  • /homeпапка -> macOS використовує /Usersнатомість
  • /rootпапка -> macOS використовує /var/rootнатомість

і /optне один раз згадується в жодному документі (докладніше /optнижче).

Наступним розрізненням між macOS та сумісною з FHS ОС є використання /private, наприклад /etc, символьної посилання на /private/etc.

Про /net: Це карта автоматичного читання (перелічена в /etc/auto_master), для отримання додаткової інформації див. Вікіпедію .

Що означає і що слід увімкнути / opt / і що повинно / увійти / usr /? Я розумію, що / usr / використовувався для домашніх каталогів користувачів, але оскільки це існує в / Users / - яка мета зараз?

Хоча /usr раніше використовувалося для розміщення домашніх каталогів користувачів , це вже не так.

На сьогоднішній день /usrмістить команди користувача (як /usr/binдля звичайних користувачів, так і /usr/sbinдля адміністративних користувачів, наприклад root), спільні бібліотеки ( /usr/lib), основні сторінки ( /usr/share/man), виконавчі файли, які не повинні працювати безпосередньо користувачами ( /usr/libexec) та інші речі.

Він також пропонує підкаталог, /usr/localдля розміщення програм, бібліотек та інших файлів, які не поставляються з базовою ОС.

/optвідіграє дуже подібну роль /usr/localі вони здаються взаємозамінними. Тим НЕ менше, з мого досвіду роботи з іншими сисадмінів Linux / UNIX, там , здається, перевагу для /usr/localв BSD UNIX на основі операційних систем.

Отже, це я сприймаю: macOS базується на BSD, і тому я б використовував /usr/local. Зауважте, що ви можете створити каталог програм, а потім позначати команди на /usr/local/binтощо, наприклад:

/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

Це також було звичайною практикою в Linux і UNIX, але FHS прямо забороняє це: якщо ви хочете встановити сторонні пакети у власній ієрархії каталогів, вам слід скористатися /opt/<package>натомість. Зауважте, що відповідність FHS потребує введення файлів конфігурації /etc/opt/<package>та файлів змінних /var/opt/<package>.

Тож у macOS я рекомендую дотримуватися /usr/localописаного вище.

Мені відомо про додаткові програми, такі як Cisco VPN та XQuartz, які встановлюються /opt, тому вищезазначені відмінності починають розмиватися.

man hier

Як було сказано вище, це 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

1
Так, наприклад, /usr/X11/не рекомендується?
GEdgar

@zhermes Я радий, що ти вважаєш це корисним.
jaume

1
Для читачів, у яких немає ОС X (для man hier): Сторінка керівництва
Грем Перрін

1
У цій публікації на форумах InsanelyMac написано: "Apple востаннє використовувала ім'я файлу mach_kernel для свого ядра в Mavericks, тому такого файлу в Сієррі ви не знайдете! Оскільки ядро ​​Yosemite, OS X тепер розміщене в / Система / Бібліотека / Ядра під" ім'я файлу ядра ", тому, здається, моя попередня здогадка помилялася.
RandomDSdevel

1
@RandomDSdevel Дякую, я не знав про цю зміну, я оновив свою відповідь.
jaume

0

Коли я читаю /opt(часто асоціюється з /opt/localMacPorts ) і про «стандартні» способи використання шляхів, я думаю також про Fink, який існує приблизно щонайменше з 2001 року . Розгляньте популярне використання наступного шляху:

/sw

Приклад необережного використання нестандартної частини ієрархії файлової системи на Mac OS X

2003-02-06

Virex 7.2, безкоштовний для всіх членів .Mac, ганебно переписав бібліотеки Fink :

Це дуже погано. Подумайте користувачів, не встановлюйте це ...

/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

Інші дискусії щодо інциденту, включаючи повагу до ліцензування, включали:

2003-04-16

Повідомлення Fink :

Проблема з Virex вирішена

McAfee випустив Virex 7.2.1, який більше не замінює основний каталог Fink /sw. Користувачі Fink повинні продовжувати уникати Virex 7.2.

Ранні звіти свідчать, що оновлення Virex з 7.2 до 7.2.1 все ще залишає деякі проблеми. Якщо ви оновите Virex за допомогою Fink не встановлено, а згодом хочете встановити Fink, вам потрібно буде видалити /swкаталог вручну перед установкою. І якщо ви оновите Virex за допомогою вже встановленого Fink, вам слід негайно запустити fink перевстановити openssl-shlibs dlcompat-shlibs curl-ssl-shlibs для відновлення файлів, які оновлення Virex, можливо, видалило.

2003-05

Примітки до випуску McAfee Virex версії 7.2.1 не згадували про проблеми, викликані користувачами Fink.

Як бічна примітка ...

2004-08-31

Спостереження , що Virex 7,5 більше не доступний для членів .Mac .


Зв'язані з BSD

OS X… Я розумію, що /usr/це було для домашніх каталогів користувачів

Це все ще стосується операційних систем, таких як FreeBSD та PC-BSD.

Хоча /usr/home/це не є явним за адресою https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2- ПРИВАННЯ, шлях пояснюється такими документами, як:


То чому це заборонено?
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.