¿Qué es estándar para el sistema de archivos OS X? por ejemplo / opt / vs. / usr /

35

¿Qué entra y debe entrar /opt/y qué debe entrar / entra /usr/? Tengo entendido que /usr/solía ser para los directorios de inicio de los usuarios, pero dado que existen /Users/, ¿cuál es el propósito ahora?

¿Existe un manual o guía sobre para qué se deben usar todos los directorios integrados? ¿Qué es /home/o qué /net/?

DilithiumMatrix
fuente
55
¿ Apple.stackexchange.com/questions/80902/… responde a su consulta?
bmike
Gracias @bmike, responde mis problemas inmediatos, pero aún me gustaría saber si alguien ha compilado una descripción más completa / exhaustiva.
DilithiumMatrix
¿Seguiste el enlace al estándar de jerarquía del sistema de archivos ?
zelanix
1
@zelanix sí, y todavía no aborda adecuadamente OS X
DilithiumMatrix

Respuestas:

48

¿Existe un manual o guía sobre para qué se deben usar todos los directorios integrados? ¿Qué es / home / o / net /?

Consulte la Guía de programación del sistema de archivos para obtener la información más actualizada y man hieren la Terminal, que proporciona un "bosquejo histórico" de la jerarquía del sistema de archivos (se incluye al final de esta respuesta como referencia).

Un comentario a su pregunta menciona el Estándar de Jerarquía del Sistema de Archivos . Probablemente llegarás a la conclusión, después de leer detenidamente la Guía de programación del sistema de archivos y man hier, que macOS no sigue el FHS , eso es más una cosa de Linux. Por supuesto, existen similitudes entre el FHS y el diseño del sistema de archivos en macOS debido al origen común de UNIX, pero las diferencias son sorprendentes. macOS no usa ninguno de estos:

  • /bootcarpeta -> macOS usa en su /System/Library/Kernelslugar (en versiones anteriores de macOS, la carpeta que contenía el núcleo era /)
  • /homecarpeta -> macOS usa en su /Userslugar
  • /rootcarpeta -> macOS usa en su /var/rootlugar

y /optno se menciona ni una sola vez en ningún documento (más información a /optcontinuación).

Otra característica entre macOS y un sistema operativo compatible con FHS es el uso de /private, por ejemplo, /etcun enlace simbólico a /private/etc.

Acerca de /net: es un mapa de montadores automáticos (enumerado en /etc/auto_master), consulte Wikipedia para obtener más información.

¿Qué entra y debe entrar en / opt / y qué debe / entra en / usr /? Tengo entendido que / usr / solía ser para directorios de inicio de usuarios, pero dado que eso existe en / Users /, ¿cuál es el propósito ahora?

Aunque /usr se utilizó en el pasado para colocar los directorios principales de los usuarios , ya no es así.

Hoy en día, /usrcontiene comandos de usuario ( /usr/binpara usuarios normales y /usr/sbinpara usuarios administrativos, como root), bibliotecas compartidas ( /usr/lib), páginas man ( /usr/share/man), ejecutables que los usuarios no deberían ejecutar directamente ( /usr/libexec) y otras cosas.

También ofrece un subdirectorio /usr/localpara colocar programas, bibliotecas y otros archivos que no vienen con el sistema operativo base.

/opttiene un papel muy similar /usr/localy parecen intercambiables. Sin embargo, según mi experiencia trabajando con otros administradores de sistemas Linux / UNIX, parece haber una preferencia por los /usr/localsistemas operativos UNIX basados ​​en BSD.

Así que esta es mi opinión: macOS está basado en BSD y, en consecuencia, lo usaría /usr/local. Tenga en cuenta que puede crear un directorio de programa y luego comandos de enlace simbólico a /usr/local/bin, etc., por ejemplo:

/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

Esto solía ser una práctica habitual en Linux y UNIX también, pero el FHS lo prohíbe explícitamente : si desea instalar paquetes de terceros en su propia jerarquía de directorios, debe usarlos /opt/<package>. Tenga en cuenta que el cumplimiento de FHS requiere colocar archivos de configuración /etc/opt/<package>y archivos variables /var/opt/<package>.

Entonces, en macOS, te recomiendo que te mantengas /usr/localcomo se describe anteriormente.

Soy consciente del software adicional como Cisco VPN y XQuartz que se instalan /opt, por lo que las distinciones anteriores comienzan a difuminarse.

man hier

Como se mencionó anteriormente, esto es 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
fuente
1
Entonces, por ejemplo, /usr/X11/¿no se recomienda?
GEdgar
@zhermes Me alegra que lo hayas encontrado útil.
jaume
1
Para lectores que no tienen OS X (para man hier): página de manual de Mac OS X de Apple para hier (7)
Graham Perrin
1
Esta publicación en los foros de InsanelyMac dice: "Apple usó por última vez el nombre de archivo mach_kernel para su kernel en Mavericks, por lo que no encontrará ningún archivo de este tipo en Sierra. Desde Yosemite, el kernel OS X ahora se encuentra en / System / Library / Kernels debajo del kernel de nombre de archivo ", así que parece que mi suposición anterior era aparentemente incorrecta.
RandomDSdevel
1
@RandomDSdevel Gracias, no estaba al tanto de ese cambio, he actualizado mi respuesta.
jaume
0

Cuando leo sobre /opt(a menudo asociado con /opt/localMacPorts ) y sobre los usos 'estándar' de las rutas, también pienso en Fink, que existe desde al menos 2001 . Fink uso popularizado de la siguiente ruta:

/sw

Un ejemplo de uso descuidado de una parte no estándar de la jerarquía del sistema de archivos en Mac OS X

2003-02-06

Virex 7.2, gratuito para todos los miembros de .Mac, sobrescribió infamemente las bibliotecas de Fink :

Esto es muy malo. Usuarios de Fink, no instalen esto ...

/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

Otras discusiones sobre el incidente, incluido el respeto por las licencias, incluyeron:

2003-04-16

Una noticia de Fink :

Problema de Virex resuelto

McAfee ha lanzado Virex 7.2.1, que ya no sobrescribe el directorio principal de Fink /sw. Los usuarios de Fink deben continuar evitando Virex 7.2.

Sin embargo, los primeros informes indican que actualizar Virex de 7.2 a 7.2.1 todavía deja algunos problemas. Si actualiza Virex con Fink no instalado y posteriormente desea instalar Fink, deberá eliminar el /swdirectorio manualmente antes de instalarlo. Y si actualiza Virex con Fink ya instalado, debe ejecutar inmediatamente la reinstalación de Fink openssl-shlibs dlcompat-shlibs curl-ssl-shlibs para restaurar los archivos que la actualización de Virex puede haber eliminado.

2003-05

Las Notas de la versión de McAfee Virex Versión 7.2.1 no mencionaron los problemas causados ​​a los usuarios de Fink.

Como nota al margen …

2004-08-31

Observaciones de que Virex 7.5 ya no estaba disponible para los miembros de .Mac .


Relacionado con BSD

... OS X ... Entiendo que /usr/solía ser para los directorios de inicio de los usuarios ...

Eso sigue siendo cierto para los sistemas operativos como FreeBSD y PC-BSD.

Si bien /usr/home/no es explícito en https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE, la ruta se ejemplifica en documentos como:

Graham Perrin
fuente
Entonces, ¿por qué es esto rechazado?
Pacerier