Ada versi pendek dan versi panjang dari jawaban Anda ...
Versi pendek:
Sebagai link Anda sudah mengatakan, /usr
adalah tempat untuk seluruh sistem , read-only file. Jadi semua perangkat lunak yang Anda instal ada di sana. Itu tidak menduplikasi nama /
kecuali /bin
dan /lib
, tetapi, pada awalnya, dengan tujuan yang berbeda: /bin, /lib
hanya untuk binari dan pustaka yang diperlukan untuk boot , sedangkan /usr/bin, /usr/lib
untuk semua executable dan pustaka lainnya. (sekarang jadilah anak yang baik dan jangan bertanya /sbin
, ini adalah Versi Singkatnya)
Saat ini, perbedaan antara "diperlukan untuk booting" dan tidak telah berkurang, karena sebagian besar distro modern, termasuk Ubuntu, tidak dapat boot dengan benar tanpa beberapa file dari /usr
. Dan itu sebabnya ada gerakan kuat menuju penggabungan /usr/bin
dan /bin
, jadi mungkin dalam waktu dekat (Ubuntu 12.10 mungkin?) /bin
Akan menjadi symlink ke /usr/bin
.
Tapi mungkin Anda bingung /usr
dan /usr/local
? Karena ya, ada (dan seharusnya) banyak nama direktori yang digandakan. Lebih lanjut tentang itu nanti ...
Versi panjang:
Kembali di tahun 70-an, di Unix (ya, Unix, jauh sebelum Linux), disket memiliki sedikit ruang (tidak ada HD, ingat?), Dan pada titik tertentu sistem biner tumbuh terlalu banyak dalam jumlah dan ukuran ke titik mereka tidak akan pas dengan satu disk, dan pengembang harus membaginya di beberapa media dan dengan demikian membuat titik pemasangan baru untuk mereka. /bin
filesystem penuh, sehingga mereka menginstal binari baru di ... /usr/bin
. Dan /usr
, pada waktu itu, ... direktori pengguna mereka !
Setelah perpecahan (yang hampir memalukan dan sering diceritakan sebagai lelucon), mereka mulai menciptakan pembenaran (dan kriteria) "artifisial" untuk memutuskan apa yang akan pergi /bin
dan apa yang akan pergi /usr/bin
. Aturan informal adalah: "hal-hal penting" pergi ke /bin
, "sisanya" pergi ke /usr/bin
. Sama dengan /lib
. Tidak lama kemudian /usr
menjadi penuh dengan dir yang berhubungan dengan sistem, dicampur dengan dir-pengguna. Maka /home
lahirlah, untuk menjaga semua dir yang terkait dengan pengguna dan tetap /usr
bersih untuk "barang" sistem saja.
Ini jauh sebelum FHS ada. Ketika itu dibuat, ia memeluk (dan memformalkan) tradisi saat ini dan mempertahankan nama /usr
, meskipun pada saat itu sudah tidak ada hubungannya dengan "pengguna" lagi. Jadi ya, nama-nama mewah " U NIX s ource r epository" atau " U NIX s ystem r esources" adalah semua nama yang dibuat-buat, dan sudah terlambat untuk mengganti nama pula. (tapi belum terlambat untuk bergabung /bin
)
"Oke, bagaimana dengan /usr/sbin
?" , Anda bertanya. Sial, aku berharap kamu sudah lupa. Ok ... /usr/sbin
untuk perintah yang hanya bisa (atau hanya bermakna ketika) dieksekusi oleh root
pengguna, seperti mount
dan fdisk
.
"Tapi bukankah itu hampir sama dengan /bin
?" . Ya tentu, tapi ...
"Tunggu, lalu mengapa ada /sbin
juga? Tidak masuk akal!" . Yah, itu karena ... err .. humm ..
Lihat, monyet berkepala 3 di belakang Anda!
Ok, mudah-mudahan, kamu cukup terganggu. Bergerak...
(jika Anda berpikir saya curang, ya, Anda benar. Tetapi begitu juga "jawaban resmi" perintah penting yang hanya dapat dieksekusi oleh root dan harus tersedia sebelum Anda me-mount /
"). Yang benar adalah: garisnya memang buram, dan ada banyak nama warisan yang "macet" dan sekarang cukup sulit untuk dihilangkan.
Lebih lanjut tentang Kasus untuk /usr
penggabungan , dari systemd
dokumen:
Pembenaran historis untuk a / bin, / sbin dan / lib yang terpisah dari / usr tidak lagi berlaku hari ini. Mereka dipisahkan untuk memilih alat pada hard disk yang lebih cepat (yang kecil, karena lebih mahal) dan berisi semua alat yang diperlukan untuk me-mount partisi yang lebih lambat / usr. Hari ini, partisi / usr yang terpisah harus sudah dipasang oleh initramfs saat boot awal, sehingga membuat justifikasi untuk disk split-off. Selain itu, banyak alat di / bin dan / sbin di status quo sudah kehilangan kemampuan untuk berjalan tanpa pre-mount / usr. Tidak ada alasan yang sah lagi untuk memiliki sistem operasi tersebar di beberapa hierarki, itu kehilangan tujuannya.
Dan bacaan yang menakjubkan tentang /usr
perpecahan dan alasannya, oleh Rob Landley:
Memahami bin, sbin, usr / bin, usr / sbin
Sekarang
Saat ini, mengenai menginstal direktori, cara terbaik Anda untuk memahami adalah berpikir seperti ini:
/usr
- semua file yang hanya dapat dibaca oleh seluruh sistem yang diinstal oleh (atau disediakan oleh) OS
/usr/local
- file yang hanya dapat dibaca di seluruh sistem yang diinstal oleh administrator lokal (biasanya, Anda). Dan itulah sebabnya sebagian besar nama direktori /usr
digandakan di sini.
/opt
- kekejaman yang dimaksudkan untuk perangkat lunak yang hanya bisa membaca seluruh sistem dan mandiri . Artinya, perangkat lunak yang tidak membagi file mereka atas bin
, lib
, share
, include
seperti berkelakuan baik software seharusnya.
~/.local
- mitra per pengguna /usr/local
, yaitu: perangkat lunak yang diinstal oleh (dan untuk) setiap pengguna
~/.local/opt
- mitra per pengguna dari /opt
Jadi di mana menginstal perangkat lunak?
Daftar di atas sudah setengah dari jawaban Anda pertanyaan Oracle JDK, setidaknya itu memberikan beberapa petunjuk. Daftar centang untuk "Di mana saya harus menginstal perangkat lunak X?" berlalu:
Apakah ini merupakan perangkat lunak direktori tunggal yang serba lengkap, seperti Eclipse IDE dan aplikasi java lainnya yang diunduh, dan Anda ingin itu tersedia untuk semua pengguna? Kemudian instal/opt
Sama seperti di atas, tetapi Anda tidak peduli dengan pengguna lain dan saya ingin menginstal untuk pengguna Anda saja? Kemudian instal~/.local/opt
File-nya terbagi atas beberapa dir, seperti bin
dan share
, seperti perangkat lunak tradisional yang dikompilasi dan diinstal ./configure && make && sudo make install
, dan haruskah tersedia untuk semua pengguna? Kemudian instal/usr/local
Sama seperti di atas, tetapi hanya untuk pengguna Anda? Kemudian instal~/.local
Perangkat lunak yang diinstal oleh OS, atau melalui manajer paket (seperti Software Center), dan, yang paling penting, modifikasi lokal apa saja yang mungkin ditimpa ketika manajer pembaruan memutakhirkannya ke versi baru ? Pergi ke/usr
Catatan:
Ini menjelaskan mengapa awalan instal default untuk perangkat lunak yang dikompilasi adalah /usr/local
, dan mengapa Anda harus mengubahnya ./configure --prefix=$HOME/.local
ketika menginstal perangkat lunak hanya untuk pengguna Anda sendiri
Anda mungkin telah memperhatikan bahwa semua direktori di atas adalah hanya-baca (kecuali, tentu saja, ketika Anda menginstal / menghapus perangkat lunak). File yang dapat ditulisi (seperti file konfigurasi) biasanya pergi ke /etc
(untuk perangkat lunak sistem-lebar) dan ~/.config
(untuk pengaturan per-pengguna). Meskipun banyak perangkat lunak lama (dan, sayangnya, beberapa yang modern juga) gunakan ~/.<software-name>
, mengacaukan folder rumah Anda dengan miliaran dir dan file.
~/.local
dan ~/.config
bukan bagian dari spesifikasi FHS. FHS tidak berurusan dengan folder rumah pengguna. Mereka adalah upaya XDG, organisasi standar lain yang diarahkan untuk Desktop Environments (seperti Gnome, KDE, dan Unity), untuk mencoba mengatur beberapa konvensi mengenai struktur rumah pengguna. Tidak semua perangkat lunak menganutnya (misalnya, ~/.local/bin
tidak dalam standar pengguna $PATH
, sementara menurut logika seharusnya) , dan tidak ada pengguna yang dipaksa untuk mengikutinya, tetapi keduanya mendapatkan banyak manfaat interoperabilitas jika mereka melakukannya.
Saya harap ini membantu untuk sedikit memperjelas hal-hal. Jangan ragu untuk bertanya apa pun sehingga saya dapat meningkatkan jawabannya!
(dan saya juga berharap para puritan tidak membunuh saya karena bahasa dan penjelasan yang sangat informal. Itu disengaja, dan tentu saja memiliki banyak ketidakakuratan, tetapi saya percaya itu adalah cara yang baik untuk membuat pendatang baru memiliki gambaran singkat pemahaman tentang menginstal direktori rasional)