Apa alasan untuk "sumber daya sistem unix", atau /usr
direktori, seperti yang dijelaskan di sini , yang menduplikasi banyak nama direktori di bawah direktori root /
?
Tujuan saya: Saya menginstal Oracle JDK untuk yang kesekian kalinya dan memutuskan kali ini untuk meletakkannya di bawah /home/user
dan saya hanya membaca sedikit untuk melihat apakah itu ide yang buruk pada mesin pengguna tunggal.
filesystem
history-of-ubuntu
H2ONaCl
sumber
sumber
/usr
berarti direktori "pengguna" tersembunyi selama bertahun-tahun ...Jawaban:
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 olehroot
pengguna, sepertimount
danfdisk
."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 , darisystemd
dokumen: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 atasbin
,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
danshare
, 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 sendiriAnda 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)
sumber
$PATH
tidak relevan. Penyerang bahkan dapat mengubah itu melalui~/.profile
, sehingga titik Anda diperdebatkan.~/.local/bin
seaman (atau tidak aman, jika Anda mau) sebagai~/bin
, yang merupakan praktik umum di sebagian besar distro. Gagasan bahwa pengguna tidak harus memiliki setiap dir untuk menjaga dan menjalankan skrip pribadi dalam$PATH
tidak masuk akal.~/bin
seaman~/.profile
, dan$PATH
tidak melindungi saya dari malware yang dijalankan oleh saya (yang memiliki izin untuk menulis di rumah saya sendiri). Saya tidak tahu file ini, saya minta maaf. Terima kasih atas klarifikasi, maaf atas komentar saya sebelumnya.