Tiêu chuẩn cho hệ thống tập tin OS X là gì? ví dụ: opt / vs. / usr /


35

Những gì nên và nên đi vào /opt/và những gì nên / không đi vào /usr/? Sự hiểu biết của tôi là trước đây /usr/được sử dụng cho các thư mục nhà của người dùng, nhưng vì chúng tồn tại trong /Users/- mục đích bây giờ là gì?

Có hướng dẫn hoặc hướng dẫn về những gì tất cả các thư mục tích hợp nên được sử dụng cho? Giống như những gì /home/, hoặc /net/?


5
Liệu apple.stackexchange.com/questions/80902/... đáp các thắc mắc của bạn?
bmike

Cảm ơn @bmike, nó trả lời các vấn đề trước mắt của tôi, nhưng tôi vẫn tò mò liệu có ai đã biên soạn một mô tả đầy đủ / đầy đủ hơn không.
DilithiumMatrix

Bạn đã theo liên kết đến Tiêu chuẩn phân cấp hệ thống tập tin ?
zelanix

1
@zelanix có, và nó vẫn không giải quyết thỏa đáng OS X
DilithiumMatrix

Câu trả lời:


48

Có hướng dẫn hoặc hướng dẫn về những gì tất cả các thư mục tích hợp nên được sử dụng cho? Giống như / nhà /, hoặc / net / là gì?

Hãy xem Hướng dẫn lập trình hệ thống tệp để biết thông tin cập nhật nhất và tại man hierTerminal, nơi cung cấp "bản phác thảo lịch sử" của hệ thống phân cấp hệ thống tệp (có trong phần cuối của câu trả lời này để tham khảo).

Một bình luận cho câu hỏi của bạn đề cập đến Tiêu chuẩn phân cấp hệ thống tập tin . Bạn có thể sẽ đi đến kết luận, sau khi xem Hướng dẫn lập trình hệ thống tệpman hier, macOS đó không tuân theo FHS , đó là một điều của Linux. Tất nhiên, có những điểm tương đồng giữa FHS và bố cục hệ thống tập tin trong macOS vì nguồn gốc UNIX phổ biến, nhưng sự khác biệt rất đáng chú ý. macOS không sử dụng bất kỳ thứ nào trong số này:

  • /bootthư mục -> macOS sử dụng /System/Library/Kernelsthay thế (trong các phiên bản cũ hơn của macOS, thư mục chứa kernel là /)
  • /homethư mục -> macOS sử dụng /Usersthay thế
  • /rootthư mục -> macOS sử dụng /var/rootthay thế

/optkhông được đề cập không chỉ một lần trong bất kỳ tài liệu nào (nhiều hơn ở /optbên dưới.)

Một sự khác biệt nữa giữa macOS và HĐH tuân thủ FHS là việc sử dụng /private, ví dụ như /etclà một liên kết tượng trưng đến /private/etc.

Giới thiệu /net: Đây là bản đồ tự động (được liệt kê trong /etc/auto_master), xem Wikipedia để biết thêm thông tin.

Cái gì nên và nên đi vào / opt / và cái gì nên / không đi vào / usr /? Sự hiểu biết của tôi là / usr / được sử dụng cho các thư mục nhà của người dùng, nhưng vì nó tồn tại trong / Users / - mục đích bây giờ là gì?

Mặc dù trước đây /usr được sử dụng để đặt các thư mục nhà của người dùng , nhưng đó không còn là vấn đề nữa.

Ngày nay, /usrchứa các lệnh người dùng ( /usr/binđối với người dùng bình thường và người dùng /usr/sbinquản trị, như root), thư viện dùng chung ( /usr/lib), trang man ( /usr/share/man), các tệp thực thi không nên được chạy trực tiếp bởi người dùng ( /usr/libexec) và các nội dung khác.

Nó cũng cung cấp một thư mục con, /usr/localđể đặt các chương trình, thư viện và các tệp khác không đi kèm với HĐH cơ sở.

/optcó một vai trò rất giống nhau /usr/localvà chúng dường như có thể hoán đổi cho nhau. Tuy nhiên, từ kinh nghiệm của tôi khi làm việc với các hệ thống Linux / UNIX khác, dường như có một ưu tiên cho /usr/localcác HĐH UNIX dựa trên BSD.

Vì vậy, đây là ý kiến ​​của tôi về nó: macOS dựa trên BSD và do đó tôi sẽ sử dụng /usr/local. Lưu ý rằng bạn có thể tạo một thư mục chương trình và sau đó các lệnh symlink đến /usr/local/bin, v.v.

/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

Điều này cũng thường được sử dụng trong Linux và UNIX, nhưng FHS rõ ràng cấm nó: nếu bạn muốn cài đặt các gói của bên thứ ba trong hệ thống phân cấp thư mục riêng của họ, bạn nên sử dụng /opt/<package>thay thế. Lưu ý rằng tuân thủ FHS yêu cầu đặt các tệp cấu hình vào /etc/opt/<package>và các tệp biến /var/opt/<package>.

Vì vậy, trong macOS, tôi khuyên bạn nên tuân thủ /usr/localnhư được mô tả ở trên.

Tôi biết các phần mềm bổ trợ như Cisco VPN và XQuartz cài đặt /opt, vì vậy những khác biệt ở trên bắt đầu mờ đi.

man hier

Như đã đề cập ở trên, đây là 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

1
Vì vậy, ví dụ, /usr/X11/không được khuyến khích?
GEdgar

@zhermes Tôi rất vui vì bạn thấy nó hữu ích.
jaume

1
Dành cho những độc giả không có OS X (for man hier): Trang hướng dẫn sử dụng Mac OS X
Graham Perrin

1
Bài đăng này trên diễn đàn InsanelyMac cho biết: "Apple đã sử dụng tên tệp mach_kernel cuối cùng cho kernel của họ trong Mavericks, vì vậy bạn sẽ không tìm thấy bất kỳ tệp nào như vậy ở Sierra! Vì Yosemite, kernel OS X hiện được đặt trong / System / Library / Kernels bên dưới tên tập tin kernel , "vì vậy dự đoán trước đó của tôi rõ ràng là sai, nó xuất hiện.
RandomDSdevel

1
@RandomDSdevel Cảm ơn bạn, tôi không biết về sự thay đổi đó, tôi đã cập nhật câu trả lời của mình.
jaume

0

Khi tôi đọc về /opt(thường được liên kết với /opt/localMacPorts ) và sử dụng các đường dẫn 'tiêu chuẩn', tôi cũng nghĩ về Fink, đã xuất hiện từ ít nhất là năm 2001 . Fink sử dụng phổ biến các đường dẫn sau:

/sw

Một ví dụ về việc sử dụng bất cẩn một phần không chuẩn trong phân cấp hệ thống tệp trên Mac OS X

2003 / 02-06

Virex 7.2, miễn phí cho tất cả các thành viên .Mac, ghi đè lên các thư viện Fink :

Thật tồi tệ. Người dùng Fink, không cài đặt bản này

/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

Các cuộc thảo luận khác về vụ việc, bao gồm tôn trọng cấp phép, bao gồm:

2003-200-16

Một mục tin tức Fink :

Vấn đề Virex đã được giải quyết

McAfee đã phát hành Virex 7.2.1, không còn ghi đè lên thư mục Fink chính /sw. Người dùng Fink nên tiếp tục tránh Virex 7.2.

Tuy nhiên, các báo cáo ban đầu chỉ ra rằng việc nâng cấp Virex từ 7.2 lên 7.2.1 vẫn còn một số vấn đề. Nếu bạn nâng cấp Virex với Fink chưa được cài đặt và sau đó muốn cài đặt Fink, bạn sẽ cần xóa /swthư mục bằng tay trước khi cài đặt. Và nếu bạn nâng cấp Virex với Fink đã được cài đặt, bạn nên chạy ngay lập tức cài đặt lại fink openssl-shlibs dlcompat-shlibs curl-ssl-shlibs để khôi phục các tệp mà bản nâng cấp Virex có thể đã bị xóa.

2003-05

Ghi chú phát hành cho McAfee Virex Phiên bản 7.2.1 không đề cập đến các vấn đề gây ra cho người dùng Fink.

Như một lưu ý phụ

2004-08-31

Quan sát rằng Virex 7.5 không còn có sẵn cho các thành viên .Mac .


Liên quan đến BSD

... OS X ... sự hiểu biết của tôi là /usr/sử dụng được cho các thư mục người dùng tại nhà ...

Điều đó vẫn đúng với các hệ điều hành như FreeBSD và PC-BSD.

Trong khi /usr/home/không rõ ràng tại https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE đường dẫn được minh họa trong các tài liệu như:


Vậy tại sao điều này bị hạ thấp?
Pacerier
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.