มาตรฐานสำหรับระบบไฟล์ OS X คืออะไร? เช่น / opt / vs. / usr /


35

สิ่งที่ควรและควรเข้าไป/opt/และสิ่งที่ / ควรเข้าไป/usr/? ความเข้าใจของฉันคือที่/usr/เคยเป็นไดเรกทอรีบ้านของผู้ใช้ แต่เนื่องจากพวกเขามีอยู่ใน/Users/- วัตถุประสงค์ตอนนี้คืออะไร?

มีคู่มือหรือคำแนะนำเกี่ยวกับไดเรกทอรีในตัวทั้งหมดที่ควรใช้หรือไม่ เช่นเดียวกับสิ่งที่มีอยู่/home/หรือ/net/?


5
ไม่apple.stackexchange.com/questions/80902/...ตอบแบบสอบถามของคุณหรือไม่
bmike

ขอบคุณ @bike มันตอบคำถามของฉันได้ทันที แต่ฉันยังคงอยากรู้อยากเห็นหากมีคนรวบรวมคำอธิบายที่ครบถ้วนสมบูรณ์ / ละเอียดมากขึ้น
DilithiumMatrix

คุณติดตามลิงก์ไปยัง The Filesystem Hierarchy Standardหรือไม่
zelanix

1
@zelanix ใช่แล้ว แต่ก็ยังไม่สามารถตอบสนอง OS X ได้อย่างเพียงพอ
DilithiumMatrix

คำตอบ:


48

มีคู่มือหรือคำแนะนำเกี่ยวกับไดเรกทอรีในตัวทั้งหมดที่ควรใช้หรือไม่ ชอบ / home /, หรือ / net / คืออะไร?

ลองดูที่คู่มือการเขียนโปรแกรมระบบไฟล์เพื่อดูข้อมูลล่าสุดและที่man hierอยู่ใน Terminal ซึ่งมี "ภาพร่างประวัติศาสตร์" ของลำดับชั้นของระบบไฟล์ (ซึ่งรวมอยู่ท้ายคำตอบนี้สำหรับการอ้างอิง)

ความคิดเห็นสำหรับคำถามของคุณกล่าวถึงระบบแฟ้มลำดับชั้นมาตรฐาน คุณอาจจะได้ข้อสรุปหลังจากอ่านคู่มือการเขียนโปรแกรมระบบไฟล์แล้วและman hiermacOS นั้นไม่ได้ทำตามFHSนั่นเป็นเรื่อง Linux มากกว่า แน่นอนว่ามีความคล้ายคลึงกันระหว่าง FHS และโครงร่างระบบไฟล์ใน macOS เนื่องจากต้นกำเนิด UNIX ทั่วไป แต่ความแตกต่างนั้นโดดเด่น macOS ไม่ได้ใช้สิ่งเหล่านี้:

  • /bootโฟลเดอร์ -> macOS ใช้/System/Library/Kernelsแทน (ใน macOS เวอร์ชันเก่า, โฟลเดอร์ที่มีเคอร์เนลคือ/)
  • /homeโฟลเดอร์ -> macOS ใช้/Usersแทน
  • /rootโฟลเดอร์ -> macOS ใช้/var/rootแทน

และ/optไม่ได้กล่าวถึงไม่ใช่ครั้งเดียวในเอกสารใด ๆ (เพิ่มเติม/optด้านล่าง)

distiction ระหว่าง MacOS และ FHS ที่สอดคล้องกับระบบปฏิบัติการคือการใช้/privateตัวอย่างเช่น/etcเป็นsymlink/private/etcไป

เกี่ยวกับ/net: เป็นแผนที่ automounter (อยู่ในรายการ/etc/auto_master), ดูWikipediaสำหรับข้อมูลเพิ่มเติม

สิ่งที่ควรทำและควรเข้า / เลือก / และควรทำอะไร / เข้าสู่ / usr / ความเข้าใจของฉันคือ / usr / เคยเป็นไดเรกทอรีบ้านของผู้ใช้ แต่เนื่องจากที่มีอยู่ใน / Users / - วัตถุประสงค์ตอนนี้คืออะไร?

แม้ว่าจะ/usr ถูกนำมาใช้ในอดีตที่จะวางไดเรกทอรีบ้านของผู้ใช้ที่ไม่มีกรณี

ทุกวันนี้/usrมีคำสั่งผู้ใช้ ( /usr/binสำหรับผู้ใช้ปกติและ/usr/sbinสำหรับผู้ใช้ที่เป็นผู้ดูแลระบบเช่นroot), ไลบรารีที่แบ่งใช้ ( /usr/lib), man pages ( /usr/share/man), ไฟล์ปฏิบัติการที่ไม่ควรเรียกใช้โดยตรงจากผู้ใช้ ( /usr/libexec) และอื่น ๆ

นอกจากนี้ยังมีไดเรกทอรีย่อย/usr/localเพื่อวางโปรแกรมไลบรารีและไฟล์อื่น ๆ ที่ไม่ได้มาพร้อมกับระบบปฏิบัติการพื้นฐาน

/optมีบทบาทคล้ายกันมาก/usr/localและพวกเขาดูเหมือนจะใช้แทนกันได้ อย่างไรก็ตามจากประสบการณ์ของฉันที่ทำงานร่วมกับ sysadmins Linux / UNIX อื่น ๆ ดูเหมือนว่าจะมีการตั้งค่าสำหรับ/usr/localระบบปฏิบัติการ UNIX บน BSD

ดังนั้นนี่คือเวลาของฉันที่มัน: MacOS เป็น BSD-based /usr/localและดังนั้นฉันต้องการใช้ โปรดทราบว่าคุณสามารถสร้างไดเรกทอรีโปรแกรมและจากนั้น symlink คำสั่งไปที่/usr/local/binฯลฯ ตัวอย่างเช่น:

/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

สิ่งนี้เคยเป็นแบบฝึกหัดปกติใน Linux และ UNIX เช่นกัน แต่ FHS อธิบายอย่างชัดแจ้งห้าม : หากคุณต้องการติดตั้งแพ็คเกจบุคคลที่สามในลำดับชั้นไดเรกทอรีของตนเองคุณควรใช้/opt/<package>แทน โปรดทราบว่า FHS ปฏิบัติต้องใส่แฟ้มการกำหนดค่าในและไฟล์ตัวแปรใน/etc/opt/<package>/var/opt/<package>

ดังนั้นใน macOS ฉันขอแนะนำให้คุณทำ/usr/localตามที่อธิบายไว้ข้างต้น

ฉันตระหนักถึงซอฟต์แวร์เสริมเช่น Cisco VPN และXQuartzที่ติดตั้ง/optดังนั้นความแตกต่างด้านบนจึงเริ่มเบลอ

man hier

ดังกล่าวข้างต้นนี้คือ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
ตัวอย่างเช่น/usr/X11/ไม่แนะนำ
GEdgar

@zhermes ฉันดีใจที่คุณพบว่ามีประโยชน์
Jaume

1
สำหรับผู้อ่านที่ไม่มี OS X (สำหรับman hier): หน้าคู่มือ Mac OS X
Graham Perrin

1
โพสต์บนฟอรัม InsanelyMacกล่าวว่า "Apple ใช้ชื่อไฟล์mach_kernelล่าสุดสำหรับเคอร์เนลใน Mavericks ดังนั้นคุณจะไม่พบไฟล์ดังกล่าวใน Sierra! เนื่องจาก Yosemite เคอร์เนล OS X วางอยู่ใน/ System / Library / Kernelsภายใต้เคอร์เนลชื่อไฟล์"ดังนั้นการคาดเดาก่อนหน้านี้ของฉันจึงผิดปกติปรากฏขึ้น
RandomDSdevel

1
@ RandomDSdevel ขอบคุณฉันไม่ได้ตระหนักถึงการเปลี่ยนแปลงที่ฉันได้ปรับปรุงคำตอบของฉัน
Jaume

0

เมื่อฉันอ่านของ/opt(มักจะเกี่ยวข้องกับการ/opt/localสำหรับ MacPorts ) และการใช้งาน 'มาตรฐาน' ของเส้นทางผมคิดว่ายังมีตำรวจที่ได้รับรอบตั้งแต่อย่างน้อย 2001 Fink เป็นที่นิยมใช้เส้นทางต่อไปนี้:

/sw

ตัวอย่างของการใช้ส่วนที่ไม่เป็นมาตรฐานของลำดับชั้นของระบบไฟล์บน Mac OS X อย่างไม่ระมัดระวัง

2003/02/06

Virex 7.2 ฟรีสำหรับสมาชิก. Mac ทุกคนเขียนทับไลบรารี Fink ที่น่าอับอาย:

มันแย่มาก ผู้ใช้ไม่ต้องติดตั้ง ...

/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

การอภิปรายอื่น ๆ ของเหตุการณ์รวมถึงการเคารพต่อการอนุญาตให้ใช้สิทธิ์รวมถึง:

2003/04/16

ตำรวจข่าวรายการ:

แก้ไขปัญหา Virex แล้ว

แมคอาฟีได้ออก Virex 7.2.1 /swซึ่งไม่เขียนทับไดเรกทอรีตำรวจหลัก ผู้ใช้ Fink ควรหลีกเลี่ยง Virex 7.2 ต่อไป

รายงานก่อนระบุว่าการอัพเกรด Virex จาก 7.2 เป็น 7.2.1 ยังคงมีปัญหาบางอย่าง หากคุณอัพเกรด Virex ด้วย Fink ไม่ได้ติดตั้งและต้องการติดตั้ง Fink ในภายหลังคุณจะต้องลบ/swไดเรกทอรีด้วยตนเองก่อนทำการติดตั้ง และหากคุณอัพเกรด Virex ที่มี Fink ติดตั้งไว้แล้วคุณควรเรียกใช้fink ติดตั้ง openssl-shlibs ใหม่ทันที dlcompat-shlibs curl-ssl-shlibsเพื่อกู้คืนไฟล์ที่การอัปเกรด Virex อาจลบไปแล้ว

2003-05

บันทึกประจำรุ่นสำหรับ McAfee Virex เวอร์ชั่น 7.2.1ไม่ได้กล่าวถึงปัญหาที่เกิดขึ้นกับผู้ใช้ Fink

ในฐานะที่เป็นบันทึกด้าน ...

2004/08/31

สังเกตว่าVirex 7.5 ก็ไม่สามารถใช้ได้กับสมาชิก


BSD ที่เกี่ยวข้อง

OS X …ความเข้าใจของฉันคือสิ่งนี้/usr/เคยเป็นไดเรกทอรีบ้านของผู้ใช้ ...

ยังคงเป็นจริงสำหรับระบบปฏิบัติการเช่น FreeBSD และ PC-BSD

ในขณะที่/usr/home/ยังไม่ชัดเจนที่https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASEพา ธ จะถูกยกตัวอย่างในเอกสารเช่น:


ดังนั้นทำไม downvote นี้
Pacerier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.