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

35

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

Существует ли руководство или руководство по использованию всех встроенных каталогов? Как то /home/, что есть , или /net/?

DilithiumMatrix
источник
5
Есть ли apple.stackexchange.com/questions/80902/... ответить на ваш запрос?
bmike
Спасибо @bmike, это отвечает моим непосредственным проблемам, но мне все равно было бы любопытно, если бы кто-нибудь составил более полное / исчерпывающее описание.
DilithiumMatrix
Вы переходили по ссылке на Стандарт иерархии файловой системы ?
Zelanix
1
@zelanix да, и он до сих пор не решает проблему OS X
DilithiumMatrix

Ответы:

48

Существует ли руководство или руководство по использованию всех встроенных каталогов? Как то, что / home / или / net /?

Взгляните на Руководство по программированию файловой системы для получения самой man hierпоследней информации и в терминале, который предоставляет «исторический очерк» иерархии файловой системы (он включен в конце этого ответа для справки).

В комментарии к вашему вопросу упоминается стандарт иерархии файловой системы . Вы, вероятно , пришли к выводу, после просматривал System File Руководства по программированию и man hier, что MacOS не следует FHS , что больше похоже на Linux вещи. Конечно, есть сходство между FHS и макетом файловой системы в macOS из-за общего происхождения UNIX, но различия поразительны. macOS не использует ничего из этого:

  • /bootпапка -> /System/Library/Kernelsвместо этого используется macOS (в старых версиях macOS папка, содержащая ядро, была /)
  • /homeпапка -> MacOS использует /Usersвместо
  • /rootпапка -> MacOS использует /var/rootвместо

и /optне упоминается ни разу ни в одном документе (подробнее /optниже)

Еще один distiction между MacOS и OS 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. Обратите внимание, что вы можете создать программный каталог, а затем команды symlink для /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
Для читателей, у которых нет OS X (для man hier): страница руководства
Грэм Перрин,
1
В этом сообщении на форумах InsanelyMac говорится: «Apple в последний раз использовал имя файла mach_kernel для своего ядра в Mavericks, поэтому вы не найдете такого файла в Sierra! С Yosemite ядро ​​OS X теперь находится в / System / Library / Kernels под имя файла ядра » , поэтому мой ранее предположение , по- видимому неправильно, это кажется.
RandomDSdevel
1
@RandomDSdevel Спасибо, я не знал об этом изменении, я обновил свой ответ.
Jaume
0

Когда я читаю о /opt(часто связанном с /opt/localMacPorts ) и о «стандартном» использовании путей, я имею в виду и Fink, который существует примерно с 2001 года . Финк популяризировал использование следующего пути:

/sw

Пример небрежного использования нестандартной части иерархии файловой системы в Mac OS X

2003-02-06

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

Это очень плохо. Пользователи 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

Финк новости пункт:

Проблема с 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 reinstall 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-RELEASE, путь иллюстрируется в таких документах, как:

Грэм Перрин
источник
Так почему же это опровергнуто?
Pacerier