GNU Shepherd ، مدير خدمة تم تطويره بواسطة Guix

بعد عامين من إصدار النسخة الرئيسية الأخيرة، أُعلن للجمهور عن إطلاق النسخة الجديدة من مدير خدمات GNU Shepherd 0.9 (المعروف سابقًا باسم dmd) . ويقوم مطورو توزيعة GNU Guix بتطويرها كبديل لعملية التهيئة SysV-init التي تراعي تبعيات النظام.

يُوفّر نظام Shepherd وظائف مساحة المستخدم بشكل غير متزامن كخدمات ، وهي عبارة عن دوال عامة وأنواع بيانات كائنية مُصدّرة ليستخدمها النظام في توسيع نظام التشغيل الأساسي بطريقة مُحدّدة. وعلى عكس نظام systemd، تعمل عملية مراقبة مساحة المستخدم بصلاحيات ذلك المستخدم.

عن الراعي

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

كما يوفر Shepherd ما يسمى بالخدمات الافتراضية التي تتيح التسليم الديناميكي عبر فئة من كائنات الخدمة ذات الصلة، مثل جميع تلك التي تنشئ مثيلات لوكيل نقل البريد (MTA) للنظام.

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

نظرًا لأنه مكتوب ومُهيأ بلغة Guile Scheme، فقد تم تصميم GNU Shepherd ليكون قابلاً للبرمجة بدرجة عالية من قبل مسؤول النظام، ولكن يمكن استخدامه أيضًا لإدارة ملفات تعريف المستخدمين للبرامج والخدمات غير المميزة.

يتم تخزين خدماتها وتكوينها بشكل موحد كشفرة Scheme موجهة للكائنات، وعلى الرغم من توفير مجموعة أساسية من الخدمات مع نظام Guix الأساسي، إلا أنه يمكن الإعلان عن خدمات جديدة بشكل مرن، ومن خلال نظام كائنات Guile، GOOPS، يمكن إعادة تعريف الخدمات الحالية حسب تقدير المستخدم عن طريق مطالبة Shepherd بإعادة كتابة الخدمات ديناميكيًا بطرق محددة عند إنشاء مثيل لها.

تم تصميم GNU Shepherd في الأصل للعمل مع GNU Hurd وتم اعتماده لاحقًا بواسطة نظام Guix.

الميزات الرئيسية الجديدة لـ GNU Shepherd 0.9

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

ومن التغييرات الملحوظة الأخرى أنه بالنسبة للخدمات التي لا تحتوي على المعلمة "#:log-file" ، يتم توفير الإخراج إلى syslog ، وبالنسبة للخدمات التي تحتوي على المعلمة "#:log-file"، تتم كتابة السجل إلى ملف منفصل يشير إلى وقت السجلات في عملية Shepherd غير المميزة، والتي يتم تخزينها في دليل $XDG_DATA_DIR.

بالإضافة إلى ذلك ، تجدر الإشارة إلى أنه تمت إضافة إجراء "make-inetd-constructor" لإنشاء خدمات مشابهة لـ inetd وأنه تمت إضافة إجراء "make-systemd-constructor" لإنشاء الخدمات التي يتم تنشيطها في نشاط الشبكة ( نمط تنشيط مقبس systemd).

تشمل التغييرات البارزة الأخرى في هذا الإصدار الجديد ما يلي:

  • تمت إضافة إجراء لبدء خدمة الخلفية:
  • تمت إضافة معلمات ": plugary-groups" و "#: create-session" و "#: Resource-limits" إلى إجراء "make-forkexec-constructor".
  • عملية مضمونة بدون قفل أثناء انتظار ملفات PID.
  • تمت إزالة دعم التجميع باستخدام Guile 2.0. تم إصلاح المشكلات عند استخدام إصدارات Guile 3.0.5-3.0.7.
  • مكتبة الألياف 1.1.0 أو أحدث مطلوب الآن للعمل.
  • تحسين التوثيق والأمثلة
  • لم يعد من الممكن بناء Shepherd باستخدام Guile 2.0
  • الإصلاح في خطأ مترجم Guile 3.0. [5-7]
  • الترجمات المحدثة

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


أضف كمصدر مفضل في جوجل