الخلاصة
- يعرّف
draft-ietf-netmod-yang-packages-09بنية ذات إصدار تجمع الحزم والوحدات المنفذة ووحدات الاستيراد والميزات والانحرافات والاستبعادات ونقاط التركيب في resolved package schema. - صحة ملف
.ypkg، وغياب الدورات، وقيمةcomplete: true، وربط YANG Library أدلة مفيدة على الوصف. لكنها لا تثبت مصدر المحتوى أو تحميل العملية أو تطابق العميل والخادم أو سلامة النشر المختلط.
تبدأ الحالة الأخطر بنتيجة صحيحة ظاهرياً. الاسم والإصدار فريدان، وJSON صالح، وشجرة includes بلا دورة، وكل location متاح، والمحلّل أغلق الاستيرادات. مع ذلك قد يحتفظ المتحكم بنسخة مخبأة أقدم بينما يعلن الخادم تعريفاً أحدث تحت الاسم والإصدار نفسيهما. عندئذ يقول الطرفان «تم الحل» ويقصد كل منهما مخططاً مختلفاً.
صدرت المراجعة 09 في 6 يوليو 2026، وهي Internet-Draft نشطة لمجموعة NETMOD، موجهة إلى Standards Track وتنتهي في 7 يناير 2027. ما زالت عملاً جارياً، وليست دليلاً على التنفيذ أو التشغيل. أهميتها في نقل مجموعة غير رسمية من الملفات إلى بنية هرمية قابلة للتسمية والإصدار وإعادة الحساب.
الحل يغير ما يُورث وما يُحذف
يضيف includes حزماً ووحدات منفذة ووحدات import-only وميزات إلزامية. يزيل excludes وحدات أو ميزات موروثة. يشير depends-on إلى سياق تحتاجه حزمة غير مكتملة، لكنه لا يضيف ذلك السياق إلى مخطط الحزمة المحلول. ويحدد mount مخططات فرعية عند نقاط تركيب معينة.
تُحل كل حزمة مضمنة أولاً بالطريقة نفسها، ثم تندمج النتائج مع القرارات المحلية. تُجمع الوحدات المنفذة، ويُحسم تعارض إصداراتها، ثم تستطيع الوحدات المحلية الكتابة فوق النتيجة قبل تطبيق الاستبعادات. يمكن لوحدات import-only الاحتفاظ بأكثر من إصدار. وتُجمع الميزات ثم تضاف أو تحذف؛ واستبعاد الوحدة يحذف ميزاتها أيضاً.
في نقطة التركيب، يؤدي inherit-packages=false إلى إسقاط مجموعة الحزم الموروثة وترك التعريف المحلي يبني المخطط الفرعي. أما قوائم location فتحتفظ بأول ظهور وتضيف المواقع الجديدة بترتيب التضمين. هذا يعطي ترتيباً قابلاً للإعادة، لكنه لا يصادق على البايتات التي يعيدها أول URI.
قاعدة الاختيار لا تعرف نية التغيير
عندما تتعارض نسخ وحدة منفذة، تقارن القاعدة major وminor وpatch فقط إذا كان الوسمان YANG Semver، وتتجاهل معدلات التوافق وprerelease وbuild metadata. يفوز وسم Semver على غيره، وإلا تُختار revision-date الأحدث. ويمكن لإدخال محلي أن يفرض اختياراً صريحاً.
النتيجة حتمية، لكنها لا تعرف الإصدار الذي بُنيت عليه روابط العميل ولا الفرع الذي أجازه مالك التغيير. لذلك يجب تسجيل مجموعة المرشحين كاملة، والقاعدة، والفائز، والكتابة الفوقية، والاستبعادات، والتحذيرات. نجاح الأمر ليس تقرير قرار.
تصنيف فروق المخطط موضوع مقال آخر. قد يدعم التقييم، لكنه لا يثبت أن مدخلات المقارنة هي البايتات المحملة ولا يختبر برنامج العميل.
complete يغلق الاستيرادات فقط
تكون الحزمة referentially complete حين يمكن حل كل import في جميع الوحدات المباشرة والموروثة إلى إصدار موجود داخل التعريف. ويمكن لحزمة hotfix غير مكتملة أن تستخدم depends-on لتسمية السياق المتوقع.
لا تعني هذه الخاصية أن mirror موثوق، أو أن المحتوى لم يتغير تحت name/version نفسه، أو أن كل submodule جُلب فعلاً، أو أن بيانات المثال متوافقة. تُذكر submodules أساساً لتوفير locations، بينما تُجرى المقارنة على مستوى الوحدة وقد يُفترض التكافؤ عند تعادل الإصدار. يجب حفظ البايتات الفعلية وإعادة إغلاق المراجع.
كذلك فإن التفرد العالمي للاسم والإصدار قاعدة نشر، لا عنوان محتوى. إذا اختلف موقعان، فلا يكفي توقع التكافؤ لتحديد المصدر الصحيح. يلزم توثيق الناشر وURI ووقت الجلب ومصدر الذاكرة المخبأة والdigest.
«معروف للخادم» لا يعني «نشط في datastore»
قائمة packages العليا فهرس لما يعرفه الخادم، وقد تضم عدة إصدارات غير منفذة أو غير نشطة. الربط التشغيلي يظهر في إضافة YANG Library التي تربط name/version وadditional features بمخطط datastore محدد.
عند وجود الربط، يجب أن تنتج الحزم مخططاً كاملاً يطابق module-set في YANG Library تماماً. هذا فحص اتساق قوي، لكن الخادم هو من يعلن التمثيلين. على العميل مقارنتهما وتسجيل وقت الرصد وcontent-id. وهذه القيمة يولدها الخادم وليست digest عالمية مشتركة.
تحمل ملفات .ypkg التعريف كبيانات instance بصيغة JSON. يستطيع العميل استعمال نسخة الخادم أو location معلناً أو cache للاسم والإصدار نفسيهما. التحقق من البنية لا يثبت المؤلف أو الحداثة أو مسار الحل أو تفعيل العملية. كما يوضح RFC 9195 أن بيانات instance ليست بروتوكولاً بديلاً لتغيير الإعداد أو الحالة الحية.
التوافق وصف للمخطط لا للنتيجة
إذا اختلف خادم عن حزمة معيارية، يمكنه إعلان server implementation package يتضمن الأصل ثم يصقله: يختار إصدارات أخرى، ويضيف deviations، ويستبعد وحدات أو ميزات. هذا وصف صريح للاختلاف، لكنه لا يضمن قبول العميل له.
ينبغي فصل سلسلة الأدلة: جهة إصدار الحزمة وهويتها؛ البايتات وdigest؛ صحة البنية؛ مسار الحل التكراري؛ قرار التعارض؛ إغلاق imports وsubmodules؛ المخطط النهائي؛ ربط datastore؛ تحميل العملية؛ مجموعتا العميل والخادم؛ اختبارات الإعداد والحالة وRPC وnotifications والتحكم في الوصول؛ ترتيب النشر والرجوع؛ حالة التشغيل؛ والنتيجة الخارجية.
المصادر الأولية
استند التحليل إلى المراجعة 09 وسجل Datatracker وتاريخه، مع RFC 7950 وRFC 8525 وRFC 9195 وRFC 8528 وRFC 8342، والمراجعة 17 من YANG Module Versioning، والمراجعة 28 من YANG Semantic Versioning، ومحضر NETMOD في IETF 122:
- https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-packages-09
- https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-packages/
- https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-packages/history/
- https://www.rfc-editor.org/rfc/rfc7950.html
- https://www.rfc-editor.org/rfc/rfc8525.html
- https://www.rfc-editor.org/rfc/rfc9195.html
- https://www.rfc-editor.org/rfc/rfc8528.html
- https://www.rfc-editor.org/rfc/rfc8342.html
- https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-module-versioning-17
- https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-semver-28
- https://datatracker.ietf.org/doc/minutes-122-netmod-202503190600/00/.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
