Jika saya menginstal aplikasi di Linux misalnya Debian / Gnu Linux, file aplikasi akan disalin ke banyak direktori berbeda di sistem file.
Beberapa skrip masuk ke / usr / share .. / usr / local beberapa file lain ke / var .. / log .. etc / dan seterusnya.
Bagi saya ini tidak masalah karena saya belajar sesuatu tentang sistem file dan sebagian besar direktori ada untuk menyimpan file untuk tujuan tertentu. Ini sangat cocok dalam filosofi Unix "lakukan satu hal dan lakukan dengan baik"
Tetapi pertanyaan saya adalah apa kelebihan struktur direktori seperti itu? Atau apakah itu hanya warisan dari zaman unix lama. (misalnya, dibandingkan dengan penggunaan satu windows, di mana semua file untuk aplikasi berada dalam satu "folder" tertentu)
sumber
/bin
,/etc
, dari/
.Tidak masalah organisasi mana yang dipilih, itu akan membuat beberapa hal lebih mudah dan beberapa hal lebih sulit.
Pengorganisasian file dengan jenis, cara Unix (ke
bin
,man
,lib/python
, ...), membuat lebih mudah untuk menggunakan file-file. Jika Anda ingin menjalankan perintah, Anda tahu di mana menemukannya, tidak peduli paket mana yang menyediakannya. Jika Anda ingin mencari melalui dokumentasi, semuanya ada di satu tempat. Jika beberapa program menyediakan modul penyorotan sintaks Vim, fungsi penyelesaian zsh, atau binding Python, file yang relevan akan berada di tempat di mana vim / zsh / python dapat menemukannya.Unix juga mengatur file berdasarkan pola penggunaan. File konfigurasi masuk
/etc
, file yang tidak berubah dalam operasi normal masuk/usr
, dan file yang berubah secara otomatis masuk/var
. Data pengguna berada di bawah/home
. Ini sangat berguna untuk manajemen konfigurasi (kelola apa yang ada di/etc
tambah daftar paket yang diinstal). Ini juga berguna untuk menentukan strategi cadangan: apa yang ada di dalam/etc
dan/home
sangat penting, sedangkan apa yang ada di dalam/usr
dapat dengan mudah diunduh lagi.Biaya utama cara Unix adalah menginstal sepotong perangkat lunak tersebar di banyak direktori. Namun, sistem unix modern memiliki pengelola paket; mengelola file di banyak direktori sejauh ini bukan hal yang paling rumit yang mereka lakukan (melacak ketergantungan sangat berguna dan lebih sulit).
Bandingkan dengan Windows. Windows dimulai tanpa manajemen paket, dan setiap aplikasi membuat direktori sendiri di suatu tempat. Semua file biasanya berada di dalam direktori itu: program, data statis, data pengguna, ... Kecuali kadang-kadang untuk perpustakaan program mana yang akan jatuh ke direktori sistem umum tanpa memperhatikan konflik ("DLL neraka"). Seiring waktu, Windows menjadi multi-pengguna, membutuhkan pemisahan direktori pengguna dari direktori sistem. Windows juga menciptakan tempat sentral untuk file konfigurasi (Unix's
/etc
) dan beberapa data sistem (Unix's/var
), registri. Ini lebih merupakan artefak historis yang sebagian besar disebabkan oleh kurangnya manajemen paket dan sejarah awal sebagai sistem pengguna tunggal. Pendekatan Windows memiliki banyak keterbatasan: tidak membiarkan paket perangkat lunak berinteraksi dengan mudah. Misalnya, sebagian besar perangkat lunak yang diinstal tidak berakhir pada jalur pencarian perintah default, sehingga berinteraksi buruk dengan segala bentuk skrip. Pemasang biasanya menyediakan ikon menu sebagai wadah khusus - dimasukkan ke direktori sistem terpisah (à la Unix!).Keterbatasan dari pendekatan Unix adalah bahwa ia tidak dengan mudah mengizinkan koeksistensi beberapa versi paket, yang khususnya bermasalah ketika paket sedang ditingkatkan. Cara untuk mendapatkan yang terbaik dari kedua dunia adalah dengan membongkar setiap paket di direktori sendiri (
/opt
struktur), dan membuat hutan tautan simbolik dari direktori paket ke/usr
struktur. Inilah yang dilakukan perangkat lunak seperti stow .Singkatnya, pendekatan Unix membuatnya lebih mudah untuk menggunakan file, untuk mengelola file, dan untuk memungkinkan paket berinteraksi; itu memerlukan perangkat lunak manajemen paket, tetapi itu tetap diinginkan. Pendekatan Windows membuatnya lebih mudah untuk mengelola paket secara manual, tetapi harus mengarah ke model Unix untuk mendapatkan fungsionalitas yang berguna.
sumber
Manfaat utama yang tidak disebutkan di atas, dan salah satu alasan historis struktur ini, adalah pemisahan fisik pada beberapa volume / disk yang tersedia pada berbagai tahap dalam proses booting.
Manfaat lain adalah bahwa berbagai direktori dapat dipasang pada volume / sistem file yang dioptimalkan untuk data direktori. Misalnya,
tmpfs
untuk/run
; dan/sbin
pada media read-only / ROM.Juga, volume bisa lokal atau jauh, pribadi atau dibagikan.
Akhirnya, lihat Direktori Aplikasi untuk pendekatan alternatif (disebutkan oleh @fluffy) yang digunakan di UNIX (OS X
.app
), Linux ( ROX Desktop ) dan Windows ( PortableApps.com ).sumber
Sebenarnya tidak ada keuntungan untuk tata letak ini, selain itu mudah ditebak di mana file bersama dan konfigurasi untuk aplikasi. UNIX memiliki warisan panjang tata letak semacam ini, dan untuk memecahkannya akan sangat sulit. Namun, beberapa distribusi UNIX telah mengubah model mereka - mereka hanya menyediakan lokasi lama untuk tujuan warisan, dan aplikasi lain digabungkan ke dalam direktori / paket kecilnya sendiri. Mac OS X adalah contoh yang paling menonjol dari ini, dan ada beberapa distribusi Linux yang tidak jelas yang melakukan hal yang sama (dan Android melakukan sesuatu yang serupa, hanya membawanya sedikit lebih jauh dan menginstal dan meluncurkan setiap aplikasi di bawah ID pengguna sendiri juga. ).
Hal utama yang disediakan oleh konvensi sistem file adalah hanya - konvensi, sehingga orang tahu di mana mencari file (baik itu secara manual atau dalam kode). Tidak ada alasan teknis nyata untuk itu menjadi satu cara di atas yang lain.
sumber