Perbezaan antara bin, sbin, usr/bin, usr/sbin

Pada 30 November 2010, David Collier menulis:

Saya perhatikan bahawa dalam kotak sibuk pautan dibahagikan kepada empat direktori ini.
Adakah terdapat beberapa peraturan mudah untuk menentukan dalam direktori mana satu pautan harus terletak ...
Contohnya, kill ada dalam /bin, dan killall ada dalam /usr/bin... Saya tidak nampak sebarang logik dalam bahagian ini.

Anda mungkin tahu bahawa Ken Thompson dan Dennis Ritchie mencipta Unix pada PDP-7 pada tahun 1969. Jadi, sekitar tahun 1971, mereka menaik taraf kepada PDP-11 dengan sepasang cakera RK05 (1,5 megabait setiap satu).

Apabila sistem pengendalian berkembang dan tidak lagi sesuai pada cakera pertama (di mana akar FS terletak), mereka memindahkan sebahagian ke yang kedua, di mana direktori rumah terletak (oleh itu, titik pelekap dipanggil /usr - daripada perkataan pengguna). Mereka menduplikasi semua direktori OS yang diperlukan di sana (/bin, /sbin, /lib, /tmp ...) dan meletakkan fail pada cakera baharu, kerana yang lama kehabisan ruang. Kemudian mereka mempunyai cakera ketiga, mereka memasangnya dalam direktori /home dan memindahkan direktori rumah pengguna ke sana supaya OS boleh mengambil semua ruang yang tinggal pada dua cakera, dan ini adalah tiga megabait (wah!).

Sudah tentu, mereka perlu membuat peraturan bahawa "apabila sistem pengendalian but, ia mesti dapat melekapkan cakera kedua dalam /usr, jadi jangan letakkan program seperti lekap pada cakera kedua dalam /usr atau anda akan mempunyai masalah ayam-dan-telur." Semudah itu. Dan itu dalam Unix V6 35 tahun yang lalu.

Pemisahan /bin dan /usr/bin (dan semua direktori tersebut) adalah warisan peristiwa tersebut, perincian pelaksanaan dari tahun 70-an yang telah disalin oleh birokrat selama beberapa dekad sekarang. Mereka tidak pernah bertanya soalan itu mengapamereka hanya melakukannya. Bahagian ini tidak lagi masuk akal walaupun sebelum Linux dicipta, atas beberapa sebab:

  1. Semasa but, initrd atau initramfs digunakan, yang menangani masalah seperti "kami memerlukan fail ini sebelum fail itu." Justeru, kita ada telah pun sistem fail sementara yang digunakan untuk memuatkan semua yang lain.
  2. Pustaka kongsi (yang telah ditambahkan pada Unix oleh lelaki di Berkley) tidak membenarkan anda menukar kandungan /lib dan /usr/lib secara bebas. Kedua-dua bahagian ini mesti sepadan atau ia tidak akan berfungsi. Ini tidak berlaku pada tahun 1974 kerana mereka mempunyai sedikit kemerdekaan pada masa itu kerana pautan statik.
  3. Pemacu keras yang murah telah memecahkan halangan 100 megabait sekitar tahun 1990, dan pada masa yang sama, perisian mengubah saiz partition muncul (partition magic 3.0 keluar pada tahun 1997).

Sudah tentu, kerana terdapat perpecahan, sesetengah orang telah membuat peraturan yang membenarkannya. Seperti, partition root diperlukan untuk semua jenis ciri OS umum, dan anda perlu meletakkan fail tempatan anda dalam / usr. Atau masukkan / apa yang AT&T edarkan, dan dalam /usr apa pengedaran anda, IBM AIX, atau Dec Ultrix, atau SGI Irix ditambah dan /usr/local mengandungi fail khusus untuk sistem anda. Dan kemudian seseorang memutuskan /usr/local bukanlah tempat yang sesuai untuk memasang perisian baharu, jadi mari tambah /opt! Saya tidak akan terkejut jika /opt/local turut muncul ...

Sudah tentu, dalam tempoh 30 tahun, kerana pemisahan ini, pelbagai peraturan khusus pengedaran yang menarik telah datang dan hilang. Contohnya, "/tmp dikosongkan semasa but semula, tetapi /usr/tmp tidak." (Dan dalam Ubuntu tidak ada /usr/tmp pada dasarnya, dan dalam Gentoo /usr/tmp ialah pautan simbolik ke /var/tmp, yang kini tertakluk kepada peraturan itu, dan ia tidak dibersihkan semasa but semula. Ya, ini semuanya sebelum Ia juga berlaku bahawa akar FS adalah baca sahaja, dan kemudian anda tidak perlu menulis apa-apa ke /usr sama ada, tetapi anda perlu menulis ke /var. kebanyakannya tidak boleh ditulis kecuali dalam /etc, yang kadang-kadang cuba dialihkan ke /var ...)

Birokrat seperti Yayasan Linux (yang menelan Kumpulan Standard Percuma semasa pengembangannya bertahun-tahun yang lalu) gembira untuk mendokumentasikan dan merumitkan peraturan ini tanpa cuba memikirkan mengapa mereka berada di sana. Apa yang mereka tidak sedar ialah Ken dan Dennis baru sahaja memindahkan sebahagian daripada OS ke direktori rumah mereka kerana cakera RK05 pada PDP-11 terlalu kecil.

Saya cukup pasti bahawa busybox hanya meletakkan fail dengan cara yang sama seperti yang telah dibangunkan secara sejarah. Tiada sebab sebenar untuk berbuat demikian sehingga kini. Secara peribadi, saya hanya membuat pautan /bin, /sbin dan /lib ke direktori serupa dalam /usr. Lagipun, orang yang bekerja dengan perisian terbenam cuba memahami dan memudahkan ...

Sumber: www.habr.com

Tambah komen