Mengapa ada begitu banyak tempat untuk meletakkan biner di Linux? Setidaknya ada lima ini:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
Dan di kotak kantor saya, saya tidak punya izin menulis untuk beberapa di antaranya.
Apa jenis biner masuk ke mana dari ini bin
?
filesystems
binary
Lazer
sumber
sumber
/usr/sbin/
.~/bin/
untuk barang pribadi./bin
digabung dengan/usr/bin
dan/sbin
digabung dengan/usr/sbin
- lihat Kasus untuk Penggabungan / usr ./usr/local/bin
?Jawaban:
/bin
(dan/sbin
) ditujukan untuk program yang perlu berada di/
partisi kecil sebelum partisi yang lebih besar/usr
, dll dipasang. Saat ini, sebagian besar berfungsi sebagai lokasi standar untuk program-program utama seperti/bin/sh
, meskipun maksud aslinya mungkin masih relevan untuk misalnya instalasi pada perangkat tertanam kecil./sbin
, berbeda dari/bin
, adalah untuk program manajemen sistem (biasanya tidak digunakan oleh pengguna biasa) yang diperlukan sebelum/usr
dipasang./usr/bin
adalah untuk program pengguna normal yang dikelola distribusi.Ada hubungan
/usr/sbin
dengan yang sama/usr/bin
seperti/sbin
harus/bin
./usr/local/bin
untuk program pengguna normal yang tidak dikelola oleh manajer paket distribusi, mis. paket yang dikompilasi secara lokal. Anda tidak boleh menginstalnya ke dalam/usr/bin
karena upgrade distribusi masa depan dapat memodifikasi atau menghapusnya tanpa peringatan./usr/local/sbin
, Karena Anda mungkin bisa menebak pada titik ini, adalah untuk/usr/local/bin
sebagai/usr/sbin
untuk/usr/bin
.Selain itu, ada juga
/opt
yang untuk paket non-distribusi monolitik, meskipun sebelum mereka terintegrasi dengan baik berbagai distribusi menempatkan Gnome dan KDE di sana. Umumnya Anda harus memesannya untuk paket pihak ketiga yang besar dan berperilaku buruk seperti Oracle.sumber
~/bin
dan tambahkan direktori itu ke PATH Anda sebagai pengguna ... Terima kasih atas catatannya, saya menghapus komentar saya yang sudah usang.PATH
variabel sistem , danecho $PATH
bagi saya menunjukkan/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, yang berarti bahwa executable di/usr/local/bin
diutamakan daripada yang di/usr/bin
mana diutamakan daripada yang di/bin
.Saya sarankan untuk melihat halaman manual hierarki sistem file:
Yang juga tersedia online, misalnya: http://linux.die.net/man/7/hier
sumber
The Filesystem Hierarchy Standard entri di Wikipedia membantu saya menjawab pertanyaan yang sama ketika saya memiliki itu, ditambah ia memiliki meja yang sangat jelas.
Kutipan dari halaman 1 :
1 Diperoleh pada 19 Juni 2019; permalink .
sumber
The
sbin
direktori berisi program yang umumnya sistem administrasi saja. Program untuk pengguna biasa tidak boleh masuk di dalamnya.Beberapa program diperlukan saat startup, dan berakhir di
/bin/
atau/sbin/
. Ini harus tersedia sebelum sistem file dipasang. Hal-hal sepertimount
, danfsck
yang diperlukan untuk memeriksa dan me-mount sistem file harus ada di sana.Sebagian besar program yang dikemas berakhir pada
/usr/bin/
dan/usr/sbin/
. Ini mungkin pada sistem file selain dari sistem file root. Dalam beberapa kasus mereka mungkin berada pada drive yang dipasang jaringan.Program dan skrip lokal termasuk dalam
/usr/local/bin/
dan/usr/local/sbin/
. Ini mengidentifikasi mereka sebagai jelas non-standar, dan mungkin hanya tersedia di situs.Untuk penjelasan lebih lanjut, coba jalankan perintah
man hier
yang harus memberikan deskripsi tentang hierarki sistem file yang direkomendasikan untuk distribusi Anda. Anda mungkin juga ingin membaca tentang Hirarki Sistem File di Wikipediasumber
Pada tahun 1970-an,
UNIX
ada semua executable resmi di/bin
dan/usr/bin
merupakan lokasi di bawah direktori home pengguna (misalnya/usr/dmr
) yang tersedia bagi setiap pengguna untuk menyimpan binari sendiri yang mungkin juga menarik bagi orang lain.Hasil dari pembukaan ini
/usr/bin
adalah junk yard dari perangkat lunak tidak berdokumen dan karenanyaStephen Bourne
menuliscron script
yang memeriksa binari baru setiap malam dan menghapus semua binari yang tidak memiliki dokumentasi atau yang telah diperbarui tanpa memperbarui dokumentasinya juga.Pada akhir 1970-an,
/usr/bin
diintegrasikan ke dalam distribusi basis OS dan orang-orang mulai menggunakan/usr/local/bin
untuk tujuan pembukaan sebelumnya/usr/bin
.Setelah beberapa saat, sysadmin digunakan
/usr/local/bin
untuk menyimpannon-local
perangkat lunak yang diimpor dari jaringan (mis. USENET) dan karena perusahaan UNIX tidak suka mengulangi kesalahan yang sama seperti/usr/bin
lagi, ada konferensi hierarki sistem file sekitar 1987 di mana semua perusahaan UNIX setuju menyerah/usr/local/bin
dan menggunakan/opt/<vendor>/bin
gantinya.Sayangnya, distro Linux tidak mengikuti keputusan ini ....
sumber
/opt
dan bukan tentang UNIX tetapi tentang Linux. Ini seperti menjawab "Mengapa mobil memiliki 4 roda?" dengan "Sepeda punya 2! Sayangnya, mobil tidak." yang tidak membantu OP memahami mengapa mobil memiliki 4.