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

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

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

Gracias @bmike, responde a mis problemas inmediatos, pero aún tengo curiosidad si alguien ha compilado una descripción más completa/exhaustiva.
¿Seguiste el enlace a The Filesystem Hierarchy Standard ?
@zelanix sí, y todavía no aborda adecuadamente OS X

Respuestas (2)

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

Eche un vistazo a la Guía de programación del sistema de archivos para obtener la información más actualizada y man hieren 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á 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 -> usa macOS /System/Library/Kernelsen su lugar (en versiones anteriores de macOS, la carpeta que contenía el kernel era /)
  • /homecarpeta -> macOS usa /Usersen su lugar
  • /rootcarpeta -> macOS usa /var/rooten su lugar

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

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

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

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

Aunque /usr en el pasado se usaba para colocar los directorios de inicio 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 no deberían ser ejecutados directamente por los usuarios ( /usr/libexec) y otras cosas.

También ofrece un subdirectorio, /usr/local, para 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 /usr/locallos sistemas operativos UNIX basados ​​en BSD.

Así que esta es mi opinión: macOS está basado en BSD y, en consecuencia, usaría /usr/local. Tenga en cuenta que puede crear un directorio de programas y luego vincular comandos simbólicos 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

Esta 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 usar en su /opt/<package>lugar. Tenga en cuenta que el cumplimiento de FHS requiere colocar archivos de configuración /etc/opt/<package>y archivos de variables en formato /var/opt/<package>.

Por lo tanto, en macOS, le recomiendo que se ciña a /usr/locallo descrito anteriormente.

Conozco el software adicional como Cisco VPN y XQuartz que se instalan en /opt, por lo que las distinciones anteriores comienzan a desdibujarse.

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
Entonces, por ejemplo, /usr/X11/¿no es recomendable?
@zhermes Me alegro de que lo hayas encontrado útil.
@GEdgar Sí, /usr/X11siempre ha sido la ubicación estándar para X11 en muchas distribuciones de UNIX y Linux, incluido OS X. Apple mismo lo ha utilizado en el pasado, en 10.5.8 había un paquete llamado com.apple.pkg.X11Userque proporcionaba X11 exactamente en esa ruta . com.apple.pkg.X11redirectMi MacBook Pro todavía tiene instalado un paquete X11 llamado /usr/X11, supongo que de "Lion" o "Mountain Lion", ya que X11 ya no se incluye con OS X ( support.apple.com/kb/HT5293 ).
Tenga en cuenta que usr tiene un acrónimo de recursos del sistema UNIX, y esa es una descripción más adecuada del directorio que "usuario". Agregaría esto como un comentario menor, pero no tengo la reputación.
@lefenzy Parece que hay dos tipos diferentes de respuestas cuando se trata de "usr": es un acrónimo y significa "Recursos del sistema Unix" o significa "usuario". Según tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html "algunas personas ahora pueden referirse a este directorio como 'Recursos del sistema de usuario' y no 'usuario' como se pretendía originalmente". No sé cuál es la verdadera, tal vez todas sean correctas hasta cierto punto... Lo dejaré aquí como comentario.
Para lectores que no tienen OS X (para man hier): página del manual de Mac OS X de Apple para hier(7)
@jaume, Entonces, ¿dónde está ahora la carpeta X11?
@GrahamPerrin, ¿qué significa el corchete 7 de todos modos?
@Pacerier Lo comprobé por ti. La última versión (2.7.11, de xquartz.org/index.html ) está instalada en /Applicationsy /opt/X11. El "7" entre paréntesis en la respuesta de Graham Perrin es la sección en la que se encuentra la página de manual de hier. Para obtener más información sobre las secciones man, consulte unix.stackexchange.com/questions/3586/… .
mach_kernelya no parece estar en el directorio raíz, al menos cuando revisé mi máquina. Por supuesto, esto podría tener algo que ver con la introducción de System Integrity Protection de OS X v10.11.x , pero eso es solo una suposición sin verificar de mi parte.
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, ¡así que no encontrará ningún archivo de este tipo en Sierra! Desde Yosemite, el kernel OS X ahora está ubicado en /System/Library/Kernels bajo el nombre de archivo kernel ", por lo que mi suposición anterior aparentemente fue incorrecta, al parecer.
@RandomDSdevel Gracias, no estaba al tanto de ese cambio, actualicé mi respuesta.

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 popularizó el uso 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. Fink usuarios, 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 seguir evitando Virex 7.2.

Los primeros informes indican que la actualización de 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 a mano antes de la instalación. Y si actualiza Virex con Fink ya instalado, debe ejecutar inmediatamente fink reinstall 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 … Según tengo entendido, /usr/solía ser para los directorios de inicio de los usuarios

Eso sigue siendo cierto para 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:

Entonces, ¿por qué se vota esto negativamente?