¿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/
?
¿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 hier
en 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:
/boot
carpeta -> usa macOS /System/Library/Kernels
en su lugar (en versiones anteriores de macOS, la carpeta que contenía el kernel era /
)/home
carpeta -> macOS usa /Users
en su lugar/root
carpeta -> macOS usa /var/root
en su lugary /opt
no se menciona ni una sola vez en ningún documento (más /opt
abajo).
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, /usr
contiene comandos de usuario ( /usr/bin
para usuarios normales y /usr/sbin
para 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.
/opt
tiene un papel muy similar /usr/local
y parecen intercambiables. Sin embargo, según mi experiencia trabajando con otros administradores de sistemas Linux/UNIX, parece haber una preferencia por /usr/local
los 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/local
lo 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
/usr/X11/
¿no es recomendable?/usr/X11
siempre 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.X11User
que proporcionaba X11 exactamente en esa ruta . com.apple.pkg.X11redirect
Mi 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 ).man hier
): página del manual de Mac OS X de Apple para hier(7)/Applications
y /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_kernel
ya 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.Cuando leo sobre /opt
(a menudo asociado con /opt/local
MacPorts ) 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
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:
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
/sw
directorio 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.
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 …
Observaciones de que Virex 7.5 ya no estaba disponible para los miembros de .Mac .
… 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:
bmike
matriz de dilitio
zelanix
matriz de dilitio