Quelle est la norme pour le système de fichiers OS X? par exemple / opt / vs / usr /

35

Qu'est-ce qui doit et doit être utilisé /opt/et qu'est-ce qui doit / doit être investi /usr/? D'après ce que je comprends, /usr/c'était pour les répertoires personnels des utilisateurs, mais puisqu'ils existent dans /Users/- quel est le but maintenant?

Existe-t-il un manuel ou un guide sur l'utilisation de tous les répertoires intégrés? Comme quoi /home/, ou /net/?

DilithiumMatrix
la source
5
Est -ce apple.stackexchange.com/questions/80902/... répond à votre requête?
bmike
Merci @bmike, cela répond à mes problèmes immédiats, mais je serais toujours curieux de savoir si quelqu'un a compilé une description plus complète / exhaustive.
DilithiumMatrix
Avez-vous suivi le lien vers la norme de hiérarchie du système de fichiers ?
zelanix
1
@zelanix oui, et il ne répond toujours pas adéquatement à OS X
DilithiumMatrix

Réponses:

48

Existe-t-il un manuel ou un guide sur l'utilisation de tous les répertoires intégrés? Comme quoi est / home /, ou / net /?

Jetez un œil au Guide de programmation du système de fichiers pour obtenir les informations les plus récentes et man hierdans Terminal, qui fournit une "esquisse historique" de la hiérarchie du système de fichiers (il est inclus à la fin de cette réponse pour référence).

Un commentaire à votre question mentionne la norme de hiérarchie du système de fichiers . Vous arriverez probablement à la conclusion, après avoir lu le Guide de programmation du système de fichiers et man hier, que macOS ne suit pas le FHS , c'est plus une chose Linux. Bien sûr, il existe des similitudes entre le FHS et la disposition du système de fichiers dans macOS en raison de l'origine UNIX commune, mais les différences sont frappantes. macOS n'utilise aucun de ces éléments:

  • /bootdossier -> macOS utilise à la /System/Library/Kernelsplace (dans les anciennes versions de macOS, le dossier contenant le noyau était /)
  • /homedossier -> macOS utilise à la /Usersplace
  • /rootdossier -> macOS utilise à la /var/rootplace

et /optn'est pas mentionné une seule fois dans aucun document (plus de détails /optci-dessous.)

Une autre distinction entre macOS et un système d'exploitation compatible FHS est l'utilisation /private, par exemple, d' /etcun lien symbolique vers /private/etc.

À propos /net: Il s'agit d'une carte de montage automatique (répertoriée dans /etc/auto_master), voir Wikipedia pour plus d'informations.

Qu'est-ce qui doit et doit aller dans / opt / et qu'est-ce qui doit / doit aller dans / usr /? Ma compréhension est que / usr / était utilisé pour les répertoires personnels des utilisateurs, mais puisque cela existe dans / Users / - quel est le but maintenant?

Bien qu'il ait /usr été utilisé dans le passé pour placer les répertoires personnels des utilisateurs , ce n'est plus le cas.

De nos jours, /usrcontient des commandes utilisateur ( /usr/binpour les utilisateurs normaux et /usr/sbinpour les utilisateurs administratifs, comme root), des bibliothèques partagées ( /usr/lib), des pages de manuel ( /usr/share/man), des exécutables qui ne devraient pas être exécutés directement par les utilisateurs ( /usr/libexec) et d'autres choses.

Il propose également un sous-répertoire, /usr/localpour placer des programmes, des bibliothèques et d'autres fichiers qui ne sont pas fournis avec le système d'exploitation de base.

/opta un rôle très similaire /usr/localet ils semblent interchangeables. Cependant, d'après mon expérience de travail avec d'autres administrateurs système Linux / UNIX, il semble y avoir une préférence pour /usr/localles systèmes d'exploitation UNIX basés sur BSD.

Voici donc mon point de vue: macOS est basé sur BSD et par conséquent j'utiliserais /usr/local. Notez que vous pouvez créer un répertoire de programme puis des commandes de lien symbolique vers /usr/local/bin, etc., par exemple:

/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

Cette pratique était également habituelle sous Linux et UNIX, mais le FHS l'interdit explicitement : si vous souhaitez installer des packages tiers dans leur propre hiérarchie de répertoires, vous devez utiliser à la /opt/<package>place. Notez que la conformité FHS nécessite de placer des fichiers de configuration /etc/opt/<package>et des fichiers variables /var/opt/<package>.

Donc, sous macOS, je vous recommande de vous en tenir à la /usr/localprocédure décrite ci-dessus.

Je connais des logiciels complémentaires comme Cisco VPN et XQuartz qui s'installent /opt, donc les distinctions ci-dessus commencent à s'estomper.

man hier

Comme mentionné ci-dessus, c'est 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
la source
1
Ainsi, par exemple, /usr/X11/n'est pas recommandé?
GEdgar
@zhermes Je suis content que vous l'ayez trouvé utile.
jaume
1
Pour les lecteurs qui n'ont pas OS X (pour man hier): page de manuel
Graham Perrin
1
Ce message sur les forums InsanelyMac dit: "Apple a utilisé le dernier nom de fichier mach_kernel pour son noyau dans Mavericks, donc vous ne trouverez pas un tel fichier dans Sierra! Depuis Yosemite, le noyau OS X est maintenant placé dans / System / Library / Kernels sous le noyau de nom de fichier , "donc ma supposition précédente était apparemment erronée, il apparaît.
RandomDSdevel
1
@RandomDSdevel Merci, je n'étais pas au courant de ce changement, j'ai mis à jour ma réponse.
jaume
0

Quand je lis /opt(souvent associé à /opt/localMacPorts ) et les utilisations «standard» des chemins, je pense aussi à Fink, qui existe depuis au moins 2001 . Fink utilisation vulgarisée du chemin suivant:

/sw

Un exemple d'utilisation imprudente d'une partie non standard de la hiérarchie du système de fichiers sur Mac OS X

2003-02-06

Virex 7.2, gratuit pour tous les membres .Mac, a tristement écrasé les bibliothèques Fink :

C'est très mauvais. Utilisateurs Fink, n'installez pas ceci…

/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

D'autres discussions sur l'incident, y compris le respect des licences, ont inclus:

2003-04-16

Une nouvelle de Fink :

Problème Virex résolu

McAfee a publié Virex 7.2.1, qui n'écrase plus le répertoire principal de Fink /sw. Les utilisateurs de Fink devraient continuer à éviter Virex 7.2.

Les premiers rapports indiquent que la mise à niveau de Virex de 7.2 à 7.2.1 pose toujours quelques problèmes. Si vous mettez à niveau Virex avec Fink non installé et souhaitez par la suite installer Fink, vous devrez supprimer le /swrépertoire à la main avant l'installation. Et si vous mettez à niveau Virex avec Fink déjà installé, vous devez immédiatement exécuter fink réinstalle openssl-shlibs dlcompat-shlibs curl-ssl-shlibs pour restaurer les fichiers que la mise à niveau Virex peut avoir supprimés.

2003-05

Les notes de publication de McAfee Virex version 7.2.1 ne faisaient aucune mention des problèmes causés aux utilisateurs de Fink.

En remarque…

2004-08-31

Observations que Virex 7.5 n'était plus disponible pour les membres du .Mac .


Lié à BSD

OS X… J'ai cru comprendre que /usr/c'était pour les répertoires personnels des utilisateurs

Cela est toujours vrai pour les systèmes d'exploitation tels que FreeBSD et PC-BSD.

Bien qu'il /usr/home/ne soit pas explicite sur https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE, le chemin est illustré dans des documents tels que:

Graham Perrin
la source
Alors pourquoi ce vote négatif?
Pacerier