bin، sbin، usr/bin، usr/sbin کے درمیان فرق

30 نومبر 2010 کو ڈیوڈ کولیر نے لکھا:

میں نے دیکھا کہ مصروف باکس میں لنکس ان چار ڈائریکٹریوں میں تقسیم ہیں۔
کیا اس بات کا تعین کرنے کے لیے کوئی آسان اصول ہے کہ کون سی ڈائرکٹری میں کون سا لنک ہونا چاہیے...
مثال کے طور پر، kill /bin میں ہے، اور killall /usr/bin میں ہے... مجھے اس تقسیم میں کوئی منطق نظر نہیں آتی۔

آپ شاید جانتے ہوں گے کہ کین تھامسن اور ڈینس رچی نے 7 میں PDP-1969 پر یونکس بنایا تھا۔ لہذا، 1971 کے آس پاس، انہوں نے RK11 ڈسکوں (ہر ایک میں 05 میگا بائٹس) کے جوڑے کے ساتھ PDP-1,5 میں اپ گریڈ کیا۔

جب آپریٹنگ سسٹم بڑھ گیا اور پہلی ڈسک (جس پر روٹ FS واقع تھا) پر فٹ نہیں رہا، تو وہ دوسرے حصے میں چلے گئے، جہاں ہوم ڈائریکٹریز واقع تھیں (لہذا، ماؤنٹ پوائنٹ کو کہا گیا / usr - لفظ سے صارف)۔ انہوں نے وہاں تمام ضروری OS ڈائریکٹریز (/bin, /sbin, /lib, /tmp ...) کی نقل تیار کی اور فائلوں کو ایک نئی ڈسک پر ڈال دیا، کیونکہ پرانی میں جگہ ختم ہو گئی تھی۔ پھر ان کے پاس ایک تیسری ڈسک تھی، انہوں نے اسے /home ڈائریکٹری میں نصب کیا اور صارفین کی ہوم ڈائریکٹریز کو وہاں منتقل کر دیا تاکہ OS دو ڈسکوں پر باقی تمام جگہ لے سکے، اور یہ تھے زیادہ سے زیادہ تین میگا بائٹس (زبردست!).

یقینا، انہیں ایک اصول بنانا تھا کہ "جب آپریٹنگ سسٹم بوٹ ہوتا ہے، تو اسے /usr میں دوسری ڈسک کو ماؤنٹ کرنے کے قابل ہونا چاہئے، لہذا /usr میں دوسری ڈسک پر ماؤنٹ جیسے پروگرام نہ لگائیں ورنہ آپ کو مرغی اور انڈے کا مسئلہ۔" یہ اتنا آسان ہے۔ اور یہ 6 سال پہلے Unix V35 میں تھا۔

/bin اور /usr/bin (اور اس طرح کی تمام ڈائرکٹریز) کی تقسیم ان واقعات کی میراث ہے، 70 کی دہائی سے عمل درآمد کی تفصیل جسے اب کئی دہائیوں سے بیوروکریٹس نے نقل کیا ہے۔ انہوں نے کبھی سوال نہیں کیا۔ کیوںانہوں نے صرف یہ کیا. لینکس کے بننے سے پہلے ہی کئی وجوہات کی بناء پر اس تقسیم کا مطلب ختم ہو گیا:

  1. بوٹ کرتے وقت، ایک initrd یا initramfs استعمال کیا جاتا ہے، جو مسائل کا خیال رکھتا ہے جیسے "ہمیں اس فائل سے پہلے اس فائل کی ضرورت ہے۔" اس طرح، ہمارے پاس ہے پہلے سے ہی ہے عارضی فائل سسٹم جو ہر چیز کو لوڈ کرنے کے لیے استعمال ہوتا ہے۔
  2. مشترکہ لائبریریاں (جنہیں برکلے کے لڑکوں نے یونکس میں شامل کیا تھا) آپ کو آزادانہ طور پر /lib اور /usr/lib کے مواد کو تبدیل کرنے کی اجازت نہیں دیتی ہیں۔ ان دونوں حصوں کو ملنا چاہیے ورنہ وہ کام نہیں کریں گے۔ یہ 1974 میں نہیں ہوا کیونکہ اس وقت انہیں مستحکم لنکنگ کی وجہ سے کچھ آزادی حاصل تھی۔
  3. سستی ہارڈ ڈرائیوز نے 100 کے آس پاس 1990 میگا بائٹ کی رکاوٹ کو توڑ دیا، اور اسی وقت، پارٹیشن ریزائزنگ سافٹ ویئر نمودار ہوا (پارٹیشن میجک 3.0 1997 میں سامنے آیا)۔

بلاشبہ، چونکہ ایک تقسیم ہے، اس لیے کچھ لوگ ایسے اصول لے کر آئے ہیں جو اس کا جواز پیش کرتے ہیں۔ جیسے، ہر طرح کی عمومی OS خصوصیات کے لیے روٹ پارٹیشن کی ضرورت ہے، اور آپ کو اپنی مقامی فائلیں /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 میں منتقل کرنے کی کوشش کی جاتی تھی...)

لینکس فاؤنڈیشن جیسے بیوروکریٹس (جس نے برسوں پہلے اپنی توسیع کے دوران فری اسٹینڈرڈز گروپ کو نگل لیا تھا) ان قوانین کو دستاویزی بنانے اور پیچیدہ کرنے میں خوش ہیں بغیر یہ جاننے کی کوشش کے کہ وہ وہاں کیوں تھے۔ جس چیز کا انہیں احساس نہیں وہ یہ ہے کہ کین اور ڈینس نے ابھی OS کا کچھ حصہ اپنی ہوم ڈائریکٹری میں منتقل کیا ہے کیونکہ PDP-05 پر RK11 ڈسک بہت چھوٹی تھی۔

مجھے پورا یقین ہے کہ busybox فائلوں کو اسی طرح رکھتا ہے جیسا کہ اس نے تاریخی طور پر تیار کیا ہے۔ اب تک ایسا کرنے کی کوئی حقیقی وجہ نہیں ہے۔ ذاتی طور پر، میں صرف /bin، /sbin اور /lib کو /usr میں اسی طرح کی ڈائریکٹریوں سے لنک کرتا ہوں۔ سب کے بعد، جو لوگ ایمبیڈڈ سافٹ ویئر کے ساتھ کام کرتے ہیں وہ سمجھنے اور آسان بنانے کی کوشش کرتے ہیں ...

ماخذ: www.habr.com

نیا تبصرہ شامل کریں