اسم التوزيعة أم glibc أم المترجم: ما الذي يتحقق منه المثبِّت
قد يقرأ المثبِّت الذي يرفض توزيعتك المشتقة اسم توزيعة أو إصدار زمن تشغيل أو مترجمًا. واحد فقط من هذه يحدد ما إذا كان الملف التنفيذي قادرًا على العمل.
يطبع المثبِّت “unsupported distribution”، فتحرّر نصًا واحدًا، فيمضي حتى يفشل بعد دقيقة بخطأ من المحمّل. هذا التسلسل هو العَرَض الذي يستحق التعرّف عليه: الفشل الأول كان فحص تعرّف، والثاني حدّ توافق. إنهما مشكلتان مختلفتان تصادف أنهما تظهران في الطرفية نفسها. وتحرير الفحص لا يمكنه إلا أن ينقلك من الأول إلى الثاني.
العَرَض: المثبِّت يتوقف عند توزيعتك المشتقة
السكربت الذي يقرأ اسم توزيعة ويرفض المتابعة يخبرك بأن مؤلفه لم يختبر توزيعتك المشتقة. هذا تصريح بالدعم لا حقيقة تقنية، وهو غالبًا خاطئ بمعنى أن الحزمة كانت ستعمل بلا مشكلة.
تبدأ المشكلة حين يصبح الحل البديل هو الخطة. فتغيير ملف هوية يجعل الفحص ينجح، ثم تُحمَّل الحزمة، أو تفشل في التحميل، مقابل زمن التشغيل المثبَّت فعليًا. وإن فشلت هناك، فلن يساعد أي قدر إضافي من تحرير الهوية.
لذا فالخطوة المفيدة هي معرفة السؤال الذي طرحه المثبِّت، ثم معرفة ما إذا كانت الإجابة ستهم. هذان تحقيقان منفصلان، والثاني وحده هو ما يتنبأ بما إذا كانت الحزمة ستعمل.
ثلاثة إصدارات يسميها الناس إصدار النظام
إصدار التوزيعة يسمّي بيئة محزومة. وإصدار مكتبة C يسمّي تنفيذًا لزمن التشغيل وإصداره. وإصدار المترجم يسمّي سلسلة أدوات. ويسمي الناس الثلاثة جميعًا “إصدار النظام” في الحديث، وهي ليست قابلة للتبادل في المثبِّت.
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
التطبيق المبني مسبقًا يتوقع زمن التشغيل الذي كان موجودًا عند ربطه. وتبديل المترجمات على المضيف لا يعيد ربطه، وسلسلة أدوات أحدث لا تغيّر شيئًا في رموز المحمّل التي يطلبها الملف التنفيذي. والعمارة تهم بشكل منفصل مرة أخرى، لأن حزمة 32 بت على نظام 64 بت تفشل لأسباب لا يفسرها أي نص إصدار.
احتفظ بالمخرجات الأربعة مع التقرير. جمعها يستغرق عشر ثوانٍ، وهي تجيب عن معظم الأسئلة التي كان المشرف سيسألها لك بالبريد.
اقرأ الخطأ، لا الفحص
خطأ التشغيل الأول هو الدليل. رسالة عن كائن مشترك مفقود، أو عن إصدار رمز لا يستطيع المحمّل تلبيته، هي مشكلة تبعية في زمن التشغيل. ورسالة تكرر اسم التوزيعة هي فحص التعرّف مرة أخرى، في موضع مختلف.
يشرح توثيق الرابط الديناميكي كيف يعمل البحث عن المكتبات وأين يبحث المحمّل. وتغيير وسم التوزيعة لا يضيف مجلدًا إلى مسار البحث ذاك، ولهذا يبدو الفشل الثاني غير مرتبط بالأول.
لا تتناول ldd على ملف تنفيذي تم تنزيله كخطوة أولى عادية. فدليلها الخاص يحذّر من أنها قد تنفّذ البرنامج في بعض الظروف، وتشغيل مثبِّت غير موثوق هو بالضبط الحالة التي يحذّر منها ذلك التنبيه.
لماذا لا يفيد تحرير النص
تزوير هوية نظام التشغيل يغيّر طريقة رؤية كل برنامج على الجهاز لنفسه. فمديرو الحزم وأدوات الدعم والتطبيقات الأخرى تقرأ الملف نفسه، وقيمة تُرضي مثبِّتًا واحدًا قد تربك شيئًا آخر بعد أشهر.
استبدال مكتبات المضيف بملفات من توزيعة أخرى أسوأ. فقد يكسر برمجيات غير ذات صلة، وهو غير مرئي لمدير الحزم، ويحتاج إلى خطة صيانة لا يكتبها أحد. وهذه التغييرات لا يبررها مثبِّت تقييدي واحد.
إن كان الفحص عيبًا حقيقيًا في التعرّف، يمكن للمشرف تأكيده ووصف التصحيح المدعوم. وإن لم يكن عيبًا، فالمسار المدعوم هو بناء لمنصتك، وتلك الإجابة لا تتغير لأن النص حُرّر.
اكتب تقريرًا يستطيع المشرف التصرف بناءً عليه
سجّل التوزيعة وإصدارها، والعمارة، وإصدار VPN، والشرط الدقيق الذي رُفض، وأول خطأ في زمن التشغيل إن وصلت إلى هناك. وبيّن ما إذا كنت قد عدّلت شيئًا، لأن تقريرًا من نظام معدّل هو تقرير مختلف.
أبقِ المثبِّت الأصلي دون تغيير وصف الفحص بدلًا من الالتفاف حوله. هذا التمييز يتيح للمشرف الفصل بين قاعدة تعرّف ضيقة أكثر من اللازم وحد توافق حقيقي للملفات التنفيذية، وهما خطآن مختلفان جدًا بإصلاحين مختلفين جدًا.
إن جاء الجواب بأن منصتك غير مدعومة، فهذه نتيجة قابلة للاستخدام. تخبرك بالبحث عن بناء مدعوم بدلًا من إنفاق مساء آخر على ملفات هوية لم تكن المشكلة يومًا.