ما هو نِكس ولماذا يجب أن تهتم به؟
مقدمة
كتبت هذه المقالة، وسأواصل كتابة سلسلة مقالات بعدها، بدافع شغفي الكبير ببيئة نكس وما تقدمه من مفاهيم ثورية في إدارة الحِزَم وبناء الأنظمة. ولقد لاحظت نقصًا شديدًا في المحتوى العربي الذي يشرح هذه التقنيات بعمق وبأسلوب مبسط، مما دفعني للمساهمة في سد هذه الفجوة. أهدف من خلال سلسلة المقالات هذه أن أُقدِّم دليل عربي واضح ومتكامل يساعد المطورين والمهتمين على اكتشاف إمكانيات نكس، والاستفادة من قوته الفريدة في بناء أنظمة موثوقة وقابلة للتكرار.
ما هو نكس؟
نِكس (بالإنكليزية: Nix) هو مُدير حِزَم متعدد المنصات وظيفي بشكل صافي وأداة لضبط النظام يعمل في الأنظِمة الشبيهة لينوكس. يتميز نكس بتوفير بيئة ثابتة وموثوقة لبناء البرمجيات وتشغيلها، بحيث تُدار جميع الحزم البرمجية بشكل موحَّد دون التأثير على النظام كَكُل. يعتمد نكس على فكرة بناء بيئات معزولة تسمح بتكرار بيئات التشغيل بشكل دقيق في أي وقت. نكس ليس مجرد مدير حزم تقليدي؛ بل هو أكثر من ذلك حيث يغير طريقة تعامل أنظمة التشغيل مع حزم البرمجيات
منهج نكس
يَستخدم مدير الحزم نكس نموذجًا تُثبَّت فيه كل حزمة برمجيات في دليل فريد ذو محتوى غير قابلة للتغيير. وتُسمّى هذه الدلائل بإضافة اسم الحزمة مع دالة التلبيد التَّعموية (بالإنكلزية: Hash Function) المحسوبة من جميع اعتماديات الحزمة. مما يجعل أسماء حزم نكس فريدة، ويسمح بتثبيت عدَّة نُسخ أو أشكال من نفس الحزمة في وقت واحد، وهذا مهم بشكل خاص عندما تعتمد حزم على نُسخ مختلفة من حزم أخرى، وهذا يمنع حدوث جحيم الاعتمادية بشكل كامل.
يُخزِّن نكس الحزم في دليل يُدعى بمَخْزَن نكس الذي يتوجد عادةً في nix/store/
حيث تُخزَّن كل حزمة في دليل فرعي خاص بها، كما:
/nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/
لغة البرمجة نكس
تُكتب وصفات بناء الحزم في نكس بلغة برمجة خاصة تصريحية وظيفية بشكل صافي بتثمين كسول وبنمط تحريكي. تُعرف هذه اللغة باسم نِكس، على غرار مدير الحزم نفسه.
- تصريحية: تحدد وصفات الحزم “ما الذي يجب أن يكون”، بدلاً من “كيفية تحقيقه”، مما يقلل الأخطاء الناتجة عن العمليات الإجرائية.
- وظيفية بشكل صافي: لا تملك الوصفات آثارًا جانبية، مما يسهل إعادة استخدامها وتقييمها بدون تغيير النتائج.
- تثمين كسول: يُأجَّل حِساب القيَم حتى تكون مطلوبة فعلًا، مما يجعل كتابة الوصفات أكثر كفاءة ومرونة.
- نمط تحريكي للأنواع: يوفِّر توازنًا بين المرونة وسهولة البرمجة، دون فرض تصنيفات صارمة على القيم.
تُستخدم لغة نكس لكتابة وصفات بناء الحزم (التي عادةً ما تنتهي باللاحقة nix.
). هذه الملفات تصف الحزمة، اعتمادياتها، خطوات البناء، ومعلومات تثبيتها.
مثال مبسط لوصفة حزمة نكس:
{ stdenv, fetchurl }:
stdenv.mkDerivation {
name = "hello";
src = fetchurl {
url = "http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz";
sha256 = "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i";
};
}
لن تحتاج لتعلم لغة البرمجة نكس لاستخدام مدير الحزم، لذا سأُخصِّص مقالات لاحقة للخوض في تفاصيل لغة البرمجة نكس.
لماذا قد ترغب في استخدام نكس؟
يقدم نكس طريقة جديدة لإدارة البرمجيات تختلف عن مدراء الحزم التقليديين. بفضل منهجه القائم على العزل الكامل لكل حزمة واعتمادياتها، يضمن نكس أن يكون تثبيت البرمجيات وتحديثها آمنًا وقابلًا للتكرار، دون الإضرار بالنظام الأساسي.
إذا كنت مطورًا يحتاج إلى بناء بيئات تطوير دقيقة وقابلة لإعادة الإنشاء، أو كنت مدير أنظمة يبحث عن تحديث الأنظمة بدون مخاطر إتلافها، فإن نكس يقدم لك الأدوات اللازمة لتحقيق ذلك.
نكس يسمح بتثبيت عدة نسخ مختلفة من نفس البرنامج دون تعارض، كما يمكنك تجربة تحديثات النظام أو الحزم والعودة بسهولة إلى الحالة السابقة إذا لزم الأمر.
بالإضافة إلى ذلك، يقدم نكس مفاهيم متقدمة مثل بناء الأنظمة من ملف ضبط، مما يجعله مثاليًا للبيئات التي تتطلب دقة وثباتًا عاليًا، مثل الخوادم وبيئات الإنتاج.
سواء كنت تبحث عن تحسين أمان نظامك، أو تسهيل إدارة الحزم، و إنشاء بيئات تطوير موثوقة. نكس يقدم حلاً متكاملًا وجذابًا لهذه الاحتياجات.
مجموعة حزم نكس
مجموعة حزم نيكس (بالإنكلزية: The Nix Packages collection) (اختصارا بـNixpkgs)، هي عبارة عن مجموعة من آلاف الحزم الجاهزة للإستخدام لمدير الحزم نيكس، المكتوبة بوصفات بناء بلغة نكس، الصادرة بموجب رخصة MIT المتساهل، وهو المستودع الرسمي لمدير الحزم نكس.
مجموعة حزم نكس ليس مجرد مستودع للحزم، بل هو مشروع حي يتطور باستمرار بواسطة مجتمع عالمي من المطورين. يمكن للمستخدمين المساهمة فيه بإضافة حزم جديدة، تحديث الحزم المتوفرة، وتحسين عملية البناء.
كما توفر مجموعة حزم نكس نُسخًا متعددة من بعض الحزم، وإمكانيات مدمجة لتخصيص البناء بما يتناسب مع احتياجات المستخدمين، عبر مفاهيم مثل الإطباق (بالإنكلزية: overlays).
تُوزَّع الحزم في مجموعة حزم نكس عبر قنوات مستقرة وتجريبية، مما يسمح للمستخدمين بالاختيار بين الحزم الأكثر إستقرارًا والحزم الأكثر تحديثًا.
تُعد مجموعة حزم نكس قلب بيئة نكس، حيث لا يقتصر دوره على توفير البرامج، بل يشمل أيضًا وصفات بناء أدوات النظام، المكتبات، بيئات التطوير، وحتى توزيعة لينكس كاملة اسمها نظام التشغيل نكس (بالإنكلزية: NixOS).
نظام التشغيل نكس
نظام التشغيل نكس (بالإنكليزية: NixOS) هو نظام تشغيل مبني حول مدير الحزم نكس، ويعتمد بالكامل على مفاهيم البناء التصريحية وإدارة الحزم الآمنة. في نظام التشغيل، لا تُدار الحزم بشكل منفصل فحسب، بل يُعَدُّ ضبط النظام بالكامل باستخدام ملفات ضبط مكتوبة بلغة البرمجة نكس.
وكل جزء من النظام — من تثبيت الحزم، ضبط الشبكة، تكوين المستخدمين، وحتى ضبط خدمات النظام —موصوف برمجيًا في ملف ضبط وقابل لإعادة البناء بشكل كامل.
هذا النهج يجعل نظام التشغيل نكس قابل لإعادة الإنشاء الكُلِّي من خلال ملف ضبط واحد، حيث إعادة تثبيت النظام أو نقله إلى جهاز آخر ببساطة عن طريق نسخ ملف الضبط وإعادة تفعيله.
كذلك، يوفر نظام التشغيل نكس ميزة التراجع (بالإنكلزية: Rollback) ليس فقط للحزم، بل لإعدادات النظام بأكملها، مما يمنح مستوى إضافيًا من الأمان والاستقرار.
بفضل هذه الخصائص، يُعَدُّ نظام التشغيل نكس مثاليًا للمطورين، ومديري الأنظمة، ولكل من يبحث عن نظام تشغيل قابل للتحكم الكامل، ومستقر، وقابل للتكرار.
ردّ عبر البريد الإلكترونيّ تبرّع