bin, sbin, usr/bin, usr/sbin арасындағы айырмашылық

30 жылдың 2010 қарашасында Дэвид Коллиер былай деп жазды:

Мен бос емес қорапта сілтемелер осы төрт каталогқа бөлінгенін байқадым.
Сілтемелердің қайсысы қай каталогта болуы керек екенін анықтаудың қарапайым ережесі бар ма?
Мысалы, kill /bin ішінде, ал killall /usr/bin ішінде... Мен бұл бөлімде ешқандай логика көрмеймін.

Сіз Кен Томпсон мен Деннис Ричи 7 жылы PDP-1969 жүйесінде Unix құрғанын білетін шығарсыз. Осылайша, шамамен 1971 жылы олар RK11 жұбы (әрқайсысы 05 мегабайт) дискілері бар PDP-1,5-ге жаңартылды.

Операциялық жүйе өсіп, бірінші дискіге сыймай қалғанда (FS түбірі орналасқан), олар үй каталогтары орналасқан екінші бөлікке көшті (осыған байланысты орнату нүктесі /usr деп аталды - сөзден. пайдаланушы). Олар барлық қажетті ОЖ каталогтарын сол жерде көшірді (/bin, /sbin, /lib, /tmp ...) және файлдарды жаңа дискіге қойды, себебі ескіде бос орын таусылды. Содан кейін оларда үшінші диск болды, олар оны /home каталогына орнатты және ОЖ екі дискідегі барлық қалған орынды ала алатындай етіп пайдаланушылардың үй каталогтарын сол жерге жылжытты. үш мегабайт (Апыр-ай!).

Әрине, олар «Операциялық жүйе жүктелген кезде, ол /usr ішінде екінші дискіні орнатуға қабілетті болуы керек, сондықтан /usr ішіндегі екінші дискіге mount сияқты бағдарламаларды қоймаңыз, әйтпесе сізде болады» деген ереже жасау керек болды. тауық пен жұмыртқа мәселесі». Бұл қарапайым. Бұл 6 жыл бұрын Unix V35 жүйесінде болды.

/bin және /usr/bin (және барлық осындай каталогтар) бөлінуі - бұл оқиғалардың мұрасы, 70-ші жылдардағы іске асыру егжей-тегжейі, оны бюрократтар ондаған жылдар бойы көшірді. Олар ешқашан сұрақ қойған жоқ негеолар жай ғана жасады. Бұл бөлім бірнеше себептерге байланысты Linux құрылғанға дейін мағынасын жоғалтты:

  1. Жүктеу кезінде initrd немесе initramfs пайдаланылады, ол «бізге осы файлдан бұрын осы файл қажет» сияқты мәселелерді шешеді. Осылайша, бізде енді бар қалғанның барлығын жүктеу үшін пайдаланылатын уақытша файлдық жүйе.
  2. Ортақ кітапханалар (Берклидегі жігіттер Unix-ке қосқан) /lib және /usr/lib мазмұнын дербес өзгертуге мүмкіндік бермейді. Бұл екі бөлік сәйкес келуі керек, әйтпесе олар жұмыс істемейді. Бұл 1974 жылы болған жоқ, өйткені олар статикалық байланысқа байланысты біраз тәуелсіздікке ие болды.
  3. Арзан қатты дискілер шамамен 100 жылы 1990 мегабайттық кедергіні бұзды және сол уақытта бөлімдердің өлшемін өзгерту бағдарламалық құралы пайда болды (partition magic 3.0 1997 жылы шықты).

Әрине, бөліну болған соң, кейбіреулер оны негіздейтін ережелерді ойлап тапты. Мысалы, түбірлік бөлім жалпы ОЖ мүмкіндіктерінің барлық түрлері үшін қажет және жергілікті файлдарды / usr ішіне қою керек. Немесе AT&T не тарататынын /usr ішіне, IBM AIX немесе Dec Ultrix немесе SGI Irix қосылған таратуды және /usr/local жүйесіне жүйеге тән файлдарды енгізіңіз. Содан кейін біреу /usr/local жаңа бағдарламалық құралды орнату үшін дұрыс орын емес деп шешті, сондықтан /opt! Мен /opt/local пайда болса, таң қалмаймын ...

Әрине, 30 жыл ішінде осы бөлінудің арқасында әртүрлі қызықты таратуға арналған ережелер келді және кетті. Мысалы, "/tmp қайта жүктеу кезінде өшірілді, бірақ /usr/tmp өшірілді." (Ал Ubuntu-да /usr/tmp принципі жоқ, ал Gentoo-да /usr/tmp символдық сілтеме болып табылады /var/tmp, ол енді сол ережеге бағынады және ол қайта жүктеу кезінде тазартылмайды. Иә, бұл FS түбірінің тек оқуға арналған болатыны да орын алады, содан кейін /usr-ге ештеңе жазудың қажеті жоқ, бірақ /var-ға жазу керек. негізінде /etc ішінен басқа жазу мүмкін емес, оны кейде /var ішіне жылжытуға тырысты ...)

Linux Foundation сияқты бюрократтар (бірнеше жылдар бұрын кеңейген кезде Тегін стандарттар тобын жұтып қойған) бұл ережелерді құжаттандыруға және олардың неге ол жерде болғанын анықтауға тырыспай-ақ қиындатуға қуанышты. Олар түсінбейді: Кен мен Деннис операциялық жүйенің бір бөлігін үй каталогына жылжытты, себебі PDP-05-дегі RK11 дискісі тым кішкентай.

Мен busybox файлдарды тарихи дамығандай етіп қоятынына сенімдімін. Әзірге мұны істеуге нақты себеп жоқ. Жеке өзім /usr ішіндегі ұқсас каталогтарға /bin, /sbin және /lib сілтемесін жасаймын. Ақыр соңында, ендірілген бағдарламалық жасақтамамен жұмыс істейтін адамдар түсінуге және жеңілдетуге тырысады ...

Ақпарат көзі: www.habr.com

пікір қалдыру