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

31

¿Qué hace y debería ir a /opt/ y qué debería ir a /usr/ ? Mi entendimiento es que /usr/ solía ser para los directorios de inicio del usuario, pero dado que existen en /Users/ , ¿cuál es el propósito ahora?

¿Existe un manual o una guía para el uso de todos los directorios integrados? ¿Te gusta lo que es /home/ o /net/ ?

    
pregunta DilithiumMatrix 30.01.2014 - 00:21

2 respuestas

42

¿Existe un manual o una guía para el uso de todos los directorios integrados? Me gusta 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 en man hier en la Terminal, que proporciona un" bosquejo histórico "de la jerarquía del sistema de archivos (se incluye al final de este respuesta para la 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 Guía de programación del sistema de archivos y man hier , que macOS no sigue la FHS , eso es más de una cosa de Linux. Por supuesto, hay 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 notables. macOS no utiliza ninguno de estos:

  • Carpeta /boot - > macOS usa /System/Library/Kernels en su lugar (en versiones anteriores de macOS, la carpeta que contiene el kernel era / )
  • Carpeta /home - > macOS usa /Users en su lugar
  • Carpeta /root - > macOS usa /var/root en su lugar

y /opt no se mencionan ni una sola vez en ningún documento (más información sobre /opt a continuación).

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

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

¿Qué hace y debería entrar en / opt / y qué debería / entra en / usr /? Mi entendimiento es que / usr / solía ser para los directorios de inicio del usuario, pero dado que existe en / Usuarios / - ¿cuál es el propósito ahora?

Aunque /usr se usó en el pasado para colocar los directorios principales de los usuarios , ese ya no es el caso.

Hoy en día, /usr contiene comandos de usuario (en /usr/bin para usuarios normales y /usr/sbin para usuarios administrativos, como root ), bibliotecas compartidas ( /usr/lib ), páginas man ( /usr/share/man ), ejecutables eso no debería ser ejecutado 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.

/opt tiene una función muy similar a /usr/local y parecen intercambiables. Sin embargo, según mi experiencia al trabajar con otros administradores de sistemas Linux / UNIX, parece haber una preferencia para /usr/local en sistemas operativos UNIX basados en BSD.

Así que esta es mi opinión: macOS está basado en BSD y, por lo tanto, usaría /usr/local . Tenga en cuenta que puede crear un directorio de programas 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 FHS explícitamente lo prohibe it: si desea instalar paquetes de terceros en su propia jerarquía de directorios, debe usar /opt/<package> en su lugar. Tenga en cuenta que el cumplimiento con FHS requiere poner los archivos de configuración en /etc/opt/<package> y los archivos variables en /var/opt/<package> .

Por lo tanto, en macOS, te recomiendo que te mantengas en /usr/local como se describe anteriormente.

Estoy al tanto de software complementario como Cisco VPN y XQuartz que se instala en /opt , por lo que Las distinciones anteriores comienzan a borrarse.

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
    
respondido por el jaume 30.01.2014 - 10:30
0

Cuando leo de /opt (a menudo asociado con /opt/local para MacPorts ) y de usos "estándar" de las rutas, creo que también de Fink, que ha existido 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, infame sobrescriba 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

Un elemento Fink news :

  

Se resolvió el problema Virex

     

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, sin embargo. Si actualiza Virex con Fink no instalado, y posteriormente desea instalar Fink, deberá eliminar el directorio /sw a mano antes de instalar. Y si actualiza Virex con Fink ya instalado, debe ejecutar de inmediato fink reinstalar openssl-shlibs dlcompat-shlibs curl-ssl-shlibs para restaurar los archivos que la actualización de Virex pueda haber eliminado.

2003-05

Release Las Notas para McAfee Virex Versión 7.2.1 no mencionaron los problemas causados a los usuarios de Fink.

Como una 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 directorios de inicio de usuario ...

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

Mientras que /usr/home/ no es explícito en enlace la ruta se ejemplifica en documentos como:

respondido por el Graham Perrin 14.03.2016 - 13:41

Lea otras preguntas en las etiquetas