Apa standar untuk sistem file OS X? mis. / opt / vs. / usr /

35

Apa yang masuk dan harus masuk /opt/dan apa yang harus / tidak masuk /usr/? Pemahaman saya adalah yang /usr/dulunya untuk direktori home pengguna, tetapi karena mereka ada di /Users/- apa tujuannya sekarang?

Apakah ada manual atau panduan untuk apa semua direktori bawaan harus digunakan? Seperti apa itu /home/, atau /net/?

DilithiumMatrix
sumber
5
Apakah apple.stackexchange.com/questions/80902/… menjawab pertanyaan Anda?
bmike
Terima kasih @bmike, ia menjawab masalah langsung saya, tetapi saya masih penasaran apakah ada yang menyusun deskripsi yang lebih lengkap / lengkap.
DilithiumMatrix
Apakah Anda mengikuti tautan ke The Filesystem Hierarchy Standard ?
zelanix
1
@zelanix ya, dan masih belum cukup mengatasi OS X
DilithiumMatrix

Jawaban:

48

Apakah ada manual atau panduan untuk apa semua direktori bawaan harus digunakan? Seperti apa / home /, atau / net /?

Lihatlah Panduan Pemrograman Sistem File untuk informasi terbaru dan man hierdi Terminal, yang menyediakan "sketsa historis" dari hierarki sistem file (termasuk di akhir jawaban ini untuk referensi).

Sebuah komentar untuk pertanyaan Anda menyebutkan Standar Hierarki Filesystem . Anda mungkin akan sampai pada kesimpulan, setelah membaca Panduan Pemrograman Sistem File dan man hier, bahwa macOS tidak mengikuti FHS , itu lebih merupakan hal Linux. Tentu saja, ada kesamaan antara FHS dan tata letak sistem file di macOS karena asal UNIX yang umum, tetapi perbedaannya mencolok. macOS tidak menggunakan ini:

  • /bootfolder -> penggunaan macOS /System/Library/Kernelssebagai gantinya (dalam versi macOS yang lebih lama, folder yang berisi kernel tadi /)
  • /homefolder -> menggunakan macOS /Userssebagai gantinya
  • /rootfolder -> menggunakan macOS /var/rootsebagai gantinya

dan /opttidak disebutkan tidak satu kali dalam dokumen apa pun (lebih lanjut di /optbawah.)

Sebuah distiction lebih lanjut antara MacOS dan OS FHS-compliant adalah penggunaan /private, misalnya /etcadalah symlink untuk /private/etc.

Tentang /net: Ini adalah peta automounter (terdaftar di /etc/auto_master), lihat Wikipedia untuk informasi lebih lanjut.

Apa yang harus dan harus dimasukkan ke / opt / dan apa yang harus / tidak masuk ke / usr /? Pemahaman saya adalah bahwa / usr / digunakan untuk direktori home pengguna, tetapi karena ada di / Users / - apa tujuannya sekarang?

Meskipun /usr dulu digunakan untuk menempatkan direktori home para pengguna , itu tidak lagi menjadi masalah.

Saat ini, /usrberisi perintah pengguna (dalam /usr/binuntuk pengguna normal dan /usr/sbinuntuk pengguna administratif, seperti root), pustaka bersama ( /usr/lib), halaman manual ( /usr/share/man), executable yang tidak boleh dijalankan langsung oleh pengguna ( /usr/libexec) dan hal-hal lain.

Ia juga menawarkan subdirektori,, /usr/localuntuk menempatkan program, pustaka, dan file lain yang tidak datang dengan OS dasar.

/optmemiliki peran yang sangat mirip /usr/localdan mereka tampaknya dapat dipertukarkan. Namun, dari pengalaman saya bekerja dengan sysadmin Linux / UNIX lainnya, tampaknya ada preferensi untuk /usr/localdi OS UNIX berbasis BSD.

Jadi ini adalah pendapat saya: macOS berbasis BSD dan akibatnya saya akan menggunakan /usr/local. Perhatikan bahwa Anda dapat membuat direktori program dan kemudian perintah symlink ke /usr/local/bin, dll, misalnya:

/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

Ini dulunya merupakan praktik yang biasa di Linux dan UNIX juga, tetapi FHS secara eksplisit melarangnya : jika Anda ingin menginstal paket pihak ketiga dalam hierarki direktori mereka sendiri, Anda harus menggunakannya /opt/<package>. Perhatikan bahwa kepatuhan FHS mengharuskan untuk memasukkan file konfigurasi /etc/opt/<package>dan file variabel /var/opt/<package>.

Jadi, di macOS, saya sarankan Anda tetap /usr/localseperti yang dijelaskan di atas.

Saya mengetahui perangkat lunak tambahan seperti Cisco VPN dan XQuartz yang menginstal /opt, sehingga perbedaan di atas mulai kabur.

man hier

Seperti disebutkan di atas ini adalah 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
sumber
1
Jadi, misalnya, /usr/X11/tidak disarankan?
GEdgar
@zhermes Saya senang Anda merasa bermanfaat.
jaume
1
Untuk pembaca yang tidak memiliki OS X (untuk man hier): Halaman manual Mac OS X untuk hier (7)
Graham Perrin
1
Posting ini di forum InsanelyMac mengatakan, "Apple terakhir menggunakan nama file mach_kernel untuk kernel mereka di Mavericks, jadi Anda tidak akan menemukan file seperti itu di Sierra! Sejak Yosemite, OS X kernel sekarang ditempatkan di / System / Library / Kernels di bawah nama file kernel , "jadi tebakan saya sebelumnya ternyata salah, itu muncul.
RandomDSdevel
1
@RandomDSdevel Terima kasih, saya tidak mengetahui perubahan itu, saya telah memperbarui jawaban saya.
jaume
0

Ketika saya membaca tentang /opt(sering dikaitkan dengan /opt/localuntuk MacPorts ) dan penggunaan jalur 'standar', saya juga memikirkan Fink, yang telah ada setidaknya sejak tahun 2001 . Fink populer menggunakan jalur berikut:

/sw

Contoh penggunaan sembarangan bagian tidak standar dari hierarki sistem file di Mac OS X

2003-02-06

Virex 7.2, gratis untuk semua anggota .Mac, menimpa pustaka Fink yang terkenal :

Ini sangat buruk. Pengguna Fink, jangan pasang ini ...

/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

Diskusi lain tentang insiden tersebut, termasuk penghormatan terhadap perizinan, termasuk:

2003-04-16

Sebuah berita Fink Item:

Masalah virus diselesaikan

McAfee telah merilis Virex 7.2.1, yang tidak lagi menimpa direktori Fink utama /sw. Pengguna Fink harus terus menghindari Virex 7.2.

Laporan awal menunjukkan bahwa peningkatan Virex dari 7.2 ke 7.2.1 masih menyisakan beberapa masalah. Jika Anda memutakhirkan Virex dengan Fink tidak diinstal, dan kemudian ingin menginstal Fink, Anda harus menghapus /swdirektori dengan tangan sebelum menginstal. Dan jika Anda memutakhirkan Virex dengan Fink yang sudah diinstal, Anda harus segera menjalankan instal ulang fink openssl-shlibs dlcompat-shlibs curl-ssl-shlibs untuk memulihkan file yang mungkin dihapus oleh pembaruan Virex.

2003-05

Catatan Rilis untuk McAfee Virex Versi 7.2.1 tidak menyebutkan masalah yang disebabkan oleh pengguna Fink.

Sebagai catatan…

2004-08-31

Pengamatan bahwa Virex 7.5 tidak lagi tersedia untuk anggota .Mac .


Terkait BSD

... OS X ... Pemahaman saya adalah yang /usr/digunakan untuk direktori home user ...

Itu masih berlaku untuk sistem operasi seperti FreeBSD dan PC-BSD.

Sementara /usr/home/itu tidak eksplisit di https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE jalan tersebut dicontohkan dalam dokumen seperti:

Graham Perrin
sumber
Jadi mengapa ini diturunkan?
Pacerier