ڈسٹرو کا نام، glibc یا کمپائلر: انسٹالر کیا جانچتا ہے
آپ کی ڈیریویٹو کو مسترد کرنے والا انسٹالر ڈسٹرو کا نام، رن ٹائم ورژن یا کمپائلر پڑھ رہا ہو سکتا ہے۔ ان میں سے صرف ایک طے کرتا ہے کہ بائنری چل سکتی ہے یا نہیں۔
انسٹالر “unsupported distribution” چھاپتا ہے، آپ ایک سٹرنگ میں ترمیم کرتے ہیں اور وہ آگے بڑھتا ہے یہاں تک کہ ایک منٹ بعد لوڈر کی غلطی سے ناکام ہو جائے۔ یہی ترتیب وہ علامت ہے جسے پہچاننا چاہیے: پہلی ناکامی شناخت کی جانچ تھی اور دوسری مطابقت کی حد ہے۔ یہ دو مختلف مسائل ہیں جو اتفاقاً ایک ہی ٹرمینل میں نظر آتے ہیں۔ جانچ میں ترمیم آپ کو صرف پہلے سے دوسرے تک لے جا سکتی ہے۔
علامت: انسٹالر آپ کی ڈیریویٹو پر رک جاتا ہے
جو سکرپٹ ڈسٹری بیوشن کا نام پڑھ کر آگے بڑھنے سے انکار کرتی ہے وہ آپ کو بتاتی ہے کہ اس کے مصنف نے آپ کی ڈیریویٹو کو آزمایا نہیں۔ یہ تکنیکی حقیقت نہیں بلکہ معاونت کا بیان ہے، اور اکثر اس معنی میں غلط ہے کہ پیکیج ٹھیک چلتا۔
مصیبت تب شروع ہوتی ہے جب وقتی حل ہی منصوبہ بن جائے۔ شناخت کی فائل بدلنے سے جانچ پاس ہو جاتی ہے، اور پھر پیکیج اصل میں نصب شدہ رن ٹائم کے خلاف لوڈ ہوتا ہے، یا نہیں ہوتا۔ اگر وہاں ناکام ہو تو مزید شناختی ترمیم کچھ مدد نہیں کرے گی۔
اس لیے مفید قدم یہ ہے کہ معلوم کریں انسٹالر نے کون سا سوال پوچھا، اور پھر معلوم کریں کہ جواب کی کوئی اہمیت ہوتی۔ یہ دو الگ تحقیقات ہیں اور صرف دوسری ہی بتاتی ہے کہ پیکیج کام کرے گا یا نہیں۔
تین ورژن جنہیں لوگ سسٹم ورژن کہتے ہیں
ڈسٹری بیوشن ریلیز کسی پیکیج شدہ ماحول کا نام دیتی ہے۔ C لائبریری کا ورژن رن ٹائم کے نفاذ اور اس کی ریلیز کا نام دیتا ہے۔ کمپائلر کا ورژن ٹول چین کا نام دیتا ہے۔ گفتگو میں لوگ تینوں کو “سسٹم ورژن” کہتے ہیں، لیکن انسٹالر میں یہ ایک دوسرے کی جگہ نہیں لے سکتے۔
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
پہلے سے بنا ہوا اطلاقیہ اُس رن ٹائم کی توقع کرتا ہے جو اسے لنک کرتے وقت موجود تھا۔ میزبان پر کمپائلر بدلنے سے یہ دوبارہ لنک نہیں ہوتا، اور نیا ٹول چین بائنری کی مطلوبہ لوڈر علامتوں میں کچھ نہیں بدلتا۔ آرکیٹیکچر پھر الگ اہمیت رکھتا ہے، کیونکہ 64 بٹ سسٹم پر 32 بٹ پیکیج ان وجوہات سے ناکام ہوتا ہے جنہیں کوئی ورژن سٹرنگ بیان نہیں کرتی۔
چاروں آؤٹ پٹ رپورٹ کے ساتھ رکھیں۔ انہیں جمع کرنے میں دس سیکنڈ لگتے ہیں اور یہ ان زیادہ تر سوالات کا جواب دیتے ہیں جو منتظم آپ سے ای میل پر پوچھتا۔
غلطی پڑھیں، جانچ نہیں
پہلی لانچ غلطی ہی ثبوت ہے۔ گمشدہ مشترکہ آبجیکٹ، یا ایسے علامتی ورژن کے بارے میں پیغام جسے لوڈر پورا نہیں کر سکتا، رن ٹائم انحصار کا مسئلہ ہے۔ جو پیغام ڈسٹری بیوشن کا نام دہراتا ہے وہ پھر شناخت کی جانچ ہے، کسی اور جگہ۔
متحرک لنکر کی دستاویزات بیان کرتا ہے کہ لائبریری کی تلاش کیسے کام کرتی ہے اور لوڈر کہاں تلاش کرتا ہے۔ ڈسٹری بیوشن کا لیبل بدلنے سے اُس تلاش کے راستے میں کوئی ڈائریکٹری شامل نہیں ہوتی، اسی لیے دوسری ناکامی پہلی سے غیر متعلق لگتی ہے۔
ڈاؤن لوڈ شدہ قابلِ عمل فائل پر ldd کو عام پہلے قدم کے طور پر استعمال نہ کریں۔ اس کا اپنا دستور اس بات سے خبردار کرتا ہے کہ بعض حالات میں یہ پروگرام چلا سکتا ہے، اور غیر معتبر انسٹالر چلانا بالکل وہی معاملہ ہے جس کے بارے میں وہ انتباہ ہے۔
سٹرنگ میں ترمیم کیوں مدد نہیں کرتی
آپریٹنگ سسٹم کی شناخت جعل سازی کرنا بدل دیتا ہے کہ مشین کا ہر پروگرام خود کو کیسے دیکھتا ہے۔ پیکیج منتظمین، معاون اوزار اور دیگر اطلاقیے وہی فائل پڑھتے ہیں، اور ایک انسٹالر کو مطمئن کرنے والی قدر مہینوں بعد کسی اور چیز کو الجھا سکتی ہے۔
میزبان کی لائبریریوں کو کسی دوسری ڈسٹری بیوشن کی فائلوں سے بدلنا زیادہ برا ہے۔ یہ غیر متعلق سافٹ ویئر توڑ سکتا ہے، پیکیج منتظم کے لیے نظر نہیں آتا، اور ایسا دیکھ بھال کا منصوبہ مانگتا ہے جو کوئی نہیں لکھتا۔ یہ تبدیلیاں ایک پابند انسٹالر سے جائز نہیں ٹھہرتیں۔
اگر جانچ واقعی شناخت کی خرابی ہے، تو منتظم اس کی تصدیق کر کے معاونت یافتہ اصلاح بیان کر سکتا ہے۔ اگر خرابی نہیں ہے، تو معاونت یافتہ راستہ آپ کے پلیٹ فارم کے لیے بلڈ ہے، اور سٹرنگ میں ترمیم کی وجہ سے وہ جواب نہیں بدلتا۔
ایسی رپورٹ لکھیں جس پر منتظم کارروائی کر سکے
ڈسٹری بیوشن اور ریلیز، آرکیٹیکچر، VPN ریلیز، مسترد شدہ درست شرط اور اگر وہاں تک پہنچے ہوں تو پہلی رن ٹائم غلطی درج کریں۔ لکھیں کہ آپ نے کچھ بدلا یا نہیں، کیونکہ بدلے ہوئے سسٹم سے آنے والی رپورٹ دوسری رپورٹ ہوتی ہے۔
اصل انسٹالر کو بدلے بغیر رکھیں اور اسے بچکنے کے بجائے جانچ کی وضاحت کریں۔ یہی فرق منتظم کو اجازت دیتا ہے کہ بہت تنگ شناختی اصول کو حقیقی بائنری مطابقت کی حد سے الگ کرے، اور یہ دو بہت مختلف کیڑے اور دو بہت مختلف اصلاحیں ہیں۔
اگر جواب آئے کہ آپ کا پلیٹ فارم معاونت یافتہ نہیں، تو یہ قابلِ استعمال نتیجہ ہے۔ یہ آپ کو کہتا ہے کہ معاونت یافتہ بلڈ تلاش کریں، نہ کہ شناخت کی فائلوں پر ایک اور شام گزاریں جو کبھی مسئلہ نہیں تھیں۔