تحاول Debian و Fedora معالجة مشكلة التبعيات

تواجه توزيعات Linux مشكلة زيادة التبعيات من المشاريع ، على الرغم من يتم الاحتفاظ بعدد تبعيات كود Python و Perl و Ruby في حدود معقولة ، تمارس مشاريع JavaScript الانقسام إلى مكتبات صغيرة جدًا ، وغالبًا ما تؤدي وظيفة بسيطة.

يحتوي مستودع NPM بالفعل على أكثر من مليون حزمة والتطبيقات النموذجية الارتباط بمئات التبعيات، والتي بدورها لها تبعياتها الخاصة ، مما يجعل من الصعب الحفاظ على الحزم التقليدية وتوزيعها مع تطبيقات JavaScript على توزيعات Linux.

نظرًا للتشابك الشديد بين تبعيات مكتبة JavaScript ، تحديث أي حزمة بمثل هذه المكتبات في التوزيع يمكنه كسر الحزم الأخرى.

تؤدي ارتباطات الإصدار إلى تفاقم المشكلة: قد تتطلب إحدى المكتبات إصدارًا واحدًا من التبعية لتشغيل مستقر ، وقد تتطلب مكتبة أخرى إصدارًا آخر.

تتطلب العديد من المشاريع أحدث إصدارات المكتبات للعمل ، لا تفي دائمًا بمتطلبات استقرار التوزيع (تتم ممارسة التطوير المستمر في النظام البيئي Node.js باستخدام أحدث إصدارات الإطارات ، ويحتاج التوزيع إلى دعم لعدة سنوات).

محاولات إصلاح إصدارات الحزمة في التوزيع وحده يؤدي إلى زيادة في الإصدارات القديمة في المستودع الذي لم يتم تحديثه منذ سنوات. يؤثر تعطيل الصيانة لحزمة واحدة سلبًا على العديد من الحزم الأخرى ويؤدي إلى المزيد من المشكلات.

علاوة على ذلك ، لعبر التبعيات يؤدي إلى حقيقة أن العديد من مكتبات يصبح من المستحيل إلغاء تثبيت Node.js من النظام، والذي بدوره يمنعك من إلغاء تثبيت برامج Node.js الأخرى.

للتعامل مع هذا الموقف ، وافق مشروع Fedora مؤخرًا على خطة لإيقاف التكوين الافتراضي للحزم المنفصلة مع المكتبات المستخدمة في المشاريع القائمة على Node.js.

قرر ، بدءًا من Fedora 34 ، توفير الحزم الأساسية لـ Node.js مع مترجم فوري ورؤوس ومكتبات أساسية وثنائيات وأدوات إدارة الحزم الأساسية (NPM ، الغزل).

في تطبيقات مستودع Fedora التي تستخدم Node.js ، يُسمح بتضمين جميع التبعيات الموجودة في حزمة ، دون تقسيم وفصل المكتبات المستخدمة في حزم منفصلة.

سيؤدي تضمين المكتبات إلى التخلص من فوضى الحزم الصغيرة ، وتبسيط صيانة الحزمة (كان المشرف في السابق يقضي وقتًا أطول في مراجعة واختبار مئات الحزم مع المكتبات أكثر من الحزمة الرئيسية مع البرنامج) ، وحفظ البنية التحتية من التعارضات المكتبات وحل المشكلات المتعلقة بالارتباط بإصدارات المكتبات (سوف يقوم المشرفون بتضمين الإصدارات التي تم اختبارها واختبارها في الحزمة).

سيكون الجانب السلبي للتكامل هو تعقيد عملية إدخال التصحيحات إلى نقاط الضعف في المكتبات ، الأمر الذي سيتطلب عملاً منسقًا من المشرفين على جميع الحزم التي تتضمن المكتبة المعرضة للخطر. هناك خطر أن تنسى الحزمة تحديث مكتبة مدمجة ضعيفة وستذهب الحزمة دون أن يلاحظها أحد.

مطوري تناقش دبيان أيضًا التبديل إلى نموذج تكامل تبعية حزمة مماثل. بالإضافة إلى Node.js ، يتطرق النقاش إلى إنشاء حزم لمنصة Kubernetes ومشاريعها بلغات PHP و Go ، والتي يوجد ميل لتقسيمها إلى تبعيات صغيرة. لم يتم اتخاذ أي قرار بعد ، ولكن من المأمول أن تزداد المشكلة سوءًا بمرور الوقت ، وعاجلاً أم آجلاً سيضطر المشروع إلى فعل شيء ما.

تم الاستشهاد بواجهة ويب gsa (Greenbone Security Assistant) لماسح أمان gvm (إدارة ثغرات Greenbone) كمثال على المشكلات التي يواجهها مشرفو الحزم.

تبين أن نسخة دبيان المشحونة من gsa غير متوافقة مع الإصدارات الأحدث من gvm ، لكن لم يكن من الممكن تحديث gsa إلى الإصدار الحالي لأنه يحتوي على تغييرات كبيرة ويستخدم npm لتنزيل مكتبات Node.js المطلوبة.

المكتبات المطلوبة كثيرة جدًا وتتطلب إنشاء حزم جديدة في دبيان ليقوم شخص ما بصيانتها ، حيث تحظر قواعد دبيان تحميل المكونات الخارجية أثناء عملية الإنشاء.

مصدر: https://lwn.net/


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

تعليق ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   قطك قال

    هذا التجزئة لأطر العمل والمكتبات في ECMAscript قد خرج عن السيطرة.
    مقالة جيدة.