O que é padrão para o sistema de arquivos OS X? por exemplo, / opt / vs. / usr /


35

O que entra e deve entrar /opt/e o que deve / entra /usr/? Meu entendimento é que /usr/costumava ser para diretórios pessoais de usuários, mas como eles existem /Users/- qual é o objetivo agora?

Existe um manual ou guia para o que todos os diretórios internos devem ser usados? Como o que é /home/, ou /net/?


5
Será apple.stackexchange.com/questions/80902/... responder à sua pergunta?
bmike

Obrigado @bmike, ele responde aos meus problemas imediatos, mas eu ainda ficaria curioso para saber se alguém compilou uma descrição mais completa / exaustiva.
precisa saber é o seguinte

Você seguiu o link para The Filesystem Hierarchy Standard ?
Zelanix

11
@zelanix sim, e ainda não atende adequadamente ao OS X
DilithiumMatrix

Respostas:


48

Existe um manual ou guia para o que todos os diretórios internos devem ser usados? Como o que é / home / ou / net /?

Dê uma olhada no Guia de programação do sistema de arquivos para obter as informações mais atualizadas e no man hierTerminal, que fornece um "esboço histórico" da hierarquia do sistema de arquivos (incluído no final desta resposta para referência).

Um comentário à sua pergunta menciona o padrão de hierarquia do sistema de arquivos . Você provavelmente chegará à conclusão, depois de ler atentamente o Guia de programação do sistema de arquivos e man hierque o macOS não segue o FHS , isso é algo mais do Linux. Obviamente, existem semelhanças entre o FHS e o layout do sistema de arquivos no macOS por causa da origem comum do UNIX, mas as diferenças são impressionantes. O macOS não usa nada disso:

  • /bootpasta -> usado pelo macOS /System/Library/Kernels(nas versões anteriores do macOS, a pasta que continha o kernel era /)
  • /homepasta -> o macOS usa em /Usersvez disso
  • /rootpasta -> o macOS usa em /var/rootvez disso

e /optnão é mencionado nem uma vez em nenhum documento (mais /optabaixo).

Uma outra distinção entre o macOS e um sistema operacional compatível com FHS é o uso de /private, por exemplo, /etcum link simbólico para /private/etc.

Sobre /net: É um mapa de montador automático (listado em /etc/auto_master), consulte a Wikipedia para obter mais informações.

O que entra e deve entrar em / opt / e o que deve / entra em / usr /? Meu entendimento é que / usr / costumava ser para diretórios pessoais de usuários, mas como isso existe em / Users / - qual é o objetivo agora?

Embora tenha /usr sido usado no passado para colocar os diretórios pessoais dos usuários , esse não é mais o caso.

Atualmente, /usrcontém comandos de usuário ( /usr/binpara usuários normais e usuários /usr/sbinadministrativos, como root), bibliotecas compartilhadas ( /usr/lib), páginas de manual ( /usr/share/man), executáveis ​​que não devem ser executados diretamente por usuários ( /usr/libexec) e outras coisas.

Ele também oferece um subdiretório,, /usr/localpara colocar programas, bibliotecas e outros arquivos que não acompanham o sistema operacional base.

/opttem um papel muito semelhante /usr/locale parece intercambiável. No entanto, da minha experiência trabalhando com outros administradores de sistema Linux / UNIX, parece haver uma preferência por /usr/localsistemas operacionais UNIX baseados em BSD.

Portanto, esta é a minha opinião: o macOS é baseado em BSD e, consequentemente, eu usaria /usr/local. Observe que você pode criar um diretório de programa e, em seguida, fazer o link simbólico de comandos para /usr/local/binetc, por exemplo:

/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

Isso também costumava ser uma prática comum no Linux e UNIX, mas o FHS proíbe explicitamente : se você deseja instalar pacotes de terceiros em sua própria hierarquia de diretórios, você deve usá-lo /opt/<package>. Observe que a conformidade com a FHS requer a inserção de arquivos de configuração /etc/opt/<package>e arquivos variáveis /var/opt/<package>.

Portanto, no macOS, recomendo que você atenha /usr/localcomo descrito acima.

Estou ciente de softwares complementares como Cisco VPN e XQuartz que são instalados /opt, portanto as distinções acima começam a ficar tremidas.

man hier

Como mencionado acima, isso é 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

11
Então, por exemplo, /usr/X11/não é recomendado?
precisa saber é o seguinte

@zhermes Estou feliz que você achou útil.
jaume

11
Para os leitores que não têm OS X (para man hier): da Apple Mac OS X página de manual para hier (7)
Graham Perrin

11
Esta publicação nos fóruns do InsanelyMac diz: "A Apple usou o nome do arquivo mach_kernel pela última vez para o kernel no Mavericks, portanto você não encontrará esse arquivo no Sierra! Desde o Yosemite, o kernel do OS X agora está em / System / Library / Kernels sob o nome do arquivo kernel ", portanto, meu palpite anterior estava aparentemente errado.
RandomDSdevel 16/07/2018

11
@RandomDSdevel Obrigado, eu não estava ciente dessa alteração, atualizei minha resposta.
21818 jaume

0

Quando leio /opt(geralmente associado ao /opt/localMacPorts ) e aos usos 'padrão' de caminhos, penso também no Fink, que existe desde pelo menos 2001 . Fink use popularmente o seguinte caminho:

/sw

Um exemplo de uso descuidado de uma parte não padrão da hierarquia do sistema de arquivos no Mac OS X

06-02-2003

O Virex 7.2, gratuito para todos os membros do .Mac, substituiu infame as bibliotecas do Fink :

Isso é muito ruim. Usuários do Fink, não instale isso…

/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

Outras discussões sobre o incidente, incluindo o respeito ao licenciamento, incluíram:

16/04/2003

Uma notícia do Fink :

Problema com Virex resolvido

A McAfee lançou o Virex 7.2.1, que não substitui mais o diretório principal do Fink /sw. Os usuários do Fink devem continuar evitando o Virex 7.2.

Os primeiros relatórios indicam que a atualização do Virex de 7.2 para 7.2.1 ainda deixa alguns problemas. Se você atualizar o Virex com o Fink não instalado, e posteriormente desejar instalar o Fink, será necessário excluir o /swdiretório manualmente antes de instalar. E se você atualizar o Virex com o Fink já instalado, execute imediatamente o fink reinstalar o openssl-shlibs dlcompat-shlibs curl-ssl-shlibs para restaurar os arquivos que a atualização do Virex pode ter excluído.

2003-05

As notas de versão do McAfee Virex versão 7.2.1 não mencionavam os problemas causados ​​aos usuários do Fink.

Como uma nota rodapé …

2004-08-31

Observações de que o Virex 7.5 não estava mais disponível para os membros .Mac .


Relacionado com BSD

OS X… Meu entendimento é que /usr/costumava ser para diretórios pessoais do usuário

Isso ainda é verdade para sistemas operacionais como FreeBSD e PC-BSD.

Embora /usr/home/não esteja explícito em https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE, o caminho é exemplificado em documentos como:


Então, por que isso foi prejudicado?
Pacerier
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.