اذهب إلى المحتوى

Heidi Melhem

الأعضاء
  • المساهمات

    26
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Heidi Melhem

  1. تعد مشاركة الشيفرة البرمجية في المشاريع مفتوحة المصدر مساهمةً شائعةً من قبل المبرمجين، ولكن ماذا لو أراد شخص ما تقديم مساهمة في هذه المشاريع ولكنه لا يمتلك مهارة وخبرة البرمجة؟ يساعدك هذا المقال في الإجابة على السؤال بتقديم عشر طرق يمكن من خلالها المساهمة في المشاريع مفتوحة المصدر دون الاضطرار إلى كتابة شيفرات برمجية. يجب في البداية الانتباه للنقطتين التاليتين حول المشاريع مفتوحة المصدر: لا يتعلق المصدر المفتوح فقط بالمساهمة عن طريق عرض الشيفرة الخاصة بالمشروع للجميع، بل يتعلق أيضًا بالمساهمة مرة أخرى، فعندما بدأت مسيرتي المهنية مفتوحة المصدر -يقول كاتب المقال- كنت أستفيد من برامج مثل INN، بعد ذلك أصبح من الطبيعي بالنسبة لي نشر التعديلات والإضافات التي استفدت منها كرد للجميل. يعتمد مجتمع المشاريع مفتوحة المصدر على مبدأ الجدارة، فعندما تبدأ العمل على مشروع لأول مرة ولا أحد يعرف من أنت وما هي مهاراتك ومساهماتك فمن المهم أن تقوم بالتواصل، وابدأ بما تحتاجه لتنطلق أو لتخطي مشكلة ما تواجهها وإلا قد يتم تجاهلك، وإذا كنت تملك مساهمة سابقة في مشروع فقد تحصل على ميزة جديدة مطبقة لأن هناك ثقة من المجتمع تمنحك المزيد من الحقوق والأذونات للوصول إلى الشيفرة البرمجية ومختلف الملفات. تحوّلك في المجتمع الخاص بمشروع مفتوح المصدر من متفرج خارجي إلى فرد مساهم في المشاريع ومساعد للآخرين وصحيح أن المساهمة تجب على أي فرد من أفراد المجتمع ولكنها تعد سمة مميزة ومقدَّرة لمجتمع المشاريع مفتوحة المصدر. قد لا تتلقى ردودًا خلال الفترة الأولى ولكن يجب ألا يخيب أملك بل استمر في المساهمة والمشاركة والسعي وسوف تنجح. طرق المساهمة في المشاريع مفتوحة المصدر إليك الطرق المختلفة التي يمكن عبرها المساهمة في المشاريع مفتوحة المصدر. 1. تقديم تقارير تتضمن هذه التقارير تفاصيل حول ما أعجبك وما لم يعجبك وتقارير الأخطاء، بالإضافة إلى تفاصيل التواصل الفعال مع الأشخاص المناسبين، و تقارير حول معلومات الطريقة التي ساعد بها المشروع مستخدميه، فمثلًا تقدم مكتبة ما حلًا برمجيًا لبناء عنصر ما بسهولة في ريآكت React أو أنجلور Angular، فيجري التأكد من أن الحل المطبق ساعد المستخدمين، وما إن كان يحتاج إلى تحديث أو تعديل. 2. إنشاء طلبات تتعلق بميزة feature تصف هذه الطلبات حالة الاستخدام الخاصة بك، فهي تشرح سبب الفائدة وكيف يمكن للآخرين الاستفادة منها، وتتطلب الطريقة جهدًا في عملية الشرح لأن عدم وجود شيفرة سيصعّب من إدخال هذه الميزة فيها. قد تبدو هذه الطريقة ذات أثر مساهمة محدود ولكن بعد المساهمة ستكتشف أن الغالبية كانوا بحاجتها وسيقوم العديد من المستخدمين بتطبيق هذه الميزة الجديدة. 3. اختبار الشيفرة البرمجية يعمل المشروع على مجموعة من العتاد والبرامج بالإضافة إلى عناصر أخرى خاصة ببيئة المشروع التي لم يختبرها فريق المشروع بعد والتي في الواقع لا يمكن اختبار جميعها، وبغض النظر عن عدد الاختبارات المؤتمتة الموجودة فيمكن اختبار الشيفرة أثناء تطوير المشروع عن طريق أخذ أحدث نسخة من المشروع بصورة يومية أو أسبوعية وتثبيتها وتقديم الملاحظات. وكمثال على ذلك كنت أعمل على مشروع وكان أحد أعضاء المجتمع يقدم ملاحظات شبه يومية حول تجربته من أحدث التعليمات البرمجية مما ساعد كثيرًا في إصلاحات وتحسينات أجريناها وكانت مساهمته آنذاك معتبرة. 4. كتابة التوثيق documentation يساعد التوثيق على تنفيذ المشروع مفتوح المصدر وتطويره، ولكن غالبًا ما تكون الكثير من الوثائق رديئة وبالكاد يمكن قراءتها وتحتاج إلى تدقيق لغوي لتصحيح تركيب الجمل والأخطاء الخاصة بالتهجئة والنحو، وأحيانًا تصف الوثائق التفاصيل التقنية ولكنها تفتقر إلى أي معلومات للمبتدئين، وكل ذلك بسبب أن العديد من المساهمين في المشاريع هم مبرمجون جيدون لكن ليسوا كتّابًا جيدين. يشمل التوثيق الجيد الحالات الخارجية والحلول البديلة وأفضل الممارسات، وقد تتكرر الإجابة على نفس السؤال، يمكن حينها كتابة أو تحديث توثيق الأسئلة الشائعة FAQ بحيث تكون الإجابات متاحة بسهولة للرجوع إليها مستقبلًا. 5. ترجمة واجهة المستخدم والتوثيق يفهم غالبية المستخدمين اللغة الإنجليزية ولكنهم يفضلون توثيقًا مكتوبًا بلغتهم الأم لأنهم يركزون أكثر على المحتوى التقني دون التشتت الذي يحدث عند القراءة بلغة أجنبية، وهذا ما حدث بعد كتابة أول كتاب ألماني عن خادم التطبيق JBoss حيث قال العديد أنهم قرأوا جميع التوثيقات المتاحة باللغة الإنجليزية لكنهم ما زالوا يستفيدون من الكتاب بلغتهم الأصلية أكثر. كما يمكن ترجمة المحتوى الأجنبي إلى اللغة العربية كون مجتمع المطورين في تنامٍ مستمر ووجود بيئة واجهات وتوثيقات باللغة العربية تريحهم وتحثهم على مزيد من العمل. 6. الإجابة عن أسئلة المستخدمين يطرح المستخدمون العديد من الأسئلة في المنتديات forums والقوائم البريدية، وعندما تحاول الإجابة على سؤال ما ستفهم المشروع بشكل أفضل وسيساعدك هذا في كتابة تقارير أخطاء وطلبات تتعلق بخاصية وتوثيق أفضل، كما أن المستخدم الذي حصل على إجابة سيكون ممتنًا جدًا لمساعدتك وسينجذب أكثر إلى المشروع عندما يحصل على إجابات أسرع ويزداد احتمال متابعته ومساهمته في المشروع، ويمكن حينها لأعضاء المشروع الأساسيين التفرغ لكتابة الشيفرات البرمجية، بهذه الطريقة يعمل الجميع على تعزيز وإغناء المشروع ككل. 7. المساعدة في التصميم يُركّز غالبية المبرمجين على إنشاء واجهات مستخدم تقنية للغاية مهملين الناحية الجمالية مما يجعلها لا تجذب مستخدمين جدد، مع أن التصميم الجيد لا يؤثر في الفعالية ولكنه يحسن تجربة المستخدم إلى حد كبير، لذا تؤدي المساعدة في تصميم واجهة المستخدم والشعار والموقع الإلكتروني إلى تحسين المظهر المرئي للمشروع وبالتالي التأثير إيجابيًا عليه. 8. الترويج للمشروع يمكن الترويج للمشروع من خلال التحدث عنه في مجموعة المستخدمين المحلية أو كتابة منشور في مدونة أو نشر التحديثات عبر قنوات التواصل الاجتماعي، ويجب باستخدام أي وسيلة منها شرح التجربة الشخصية في المشروع مع كامل التفاصيل لأنها تُشرك الآخرين بشكل أقوى في التجربة. 9. المساهمة بتوفير العتاد إذا كان المشروع بحاجة إلى خوادم بناء أو اختبار محددة، يمكنك المساهمة باستخدام أجهزة العتاد في مركز البيانات datacenter بشكل مباشر للمطورين أو بشكل غير مباشر عن طريق القيام بالتكامل المستمر والذي يشمل دمج التغييرات البرمجية المقترحة من قبل عدة مساهمين، أو إجراء عمليات الاختبار ثم تقديم النتائج مرة أخرى إلى المشروع. 10. شكر المجتمع يمكن المساهمة أيضًا من خلال شكر المجتمع الداعم على عملهم ومساهماتهم في الموضوع الذي تعمل فيه والأهداف التي تعمل من أجلها، فكما يُقال، كلمة طيبة صدقة، ومن طابت كلمته وجبت محبته. يمكن اختيار أي طريقة من الطرق السابقة والبدء بها والمساهمة في المشاريع مفتوحة المصدر لتكوين مسيرة مهنية رائعة ومليئة بالتعاون منذ البداية. ترجمة -وبتصرف- للمقال ‎10 ways to contribute to an open source project without writing code لصاحبه Heiko W. Rupp. اقرأ أيضًا تراخيص البرامج مفتوحة المصدر متلازمة المحتال: عن مساهمتي الأولى في البرمجيات مفتوحة المصدر كيف تختار رخصة مفتوحة المصدر لبرامجك كيف تجعل الوصول إلى مشروعك مفتوح المصدر أسهل
  2. محركات قوالب بايثون templating engine هي أدوات قوية للغاية تساعد المطورين على بناء تطبيقات ويب وأنظمة إدارة محتوى كاملة وإنشاء تقارير ورسوم بيانية من مجموعة بيانات، ولا ينحصر استخدامها في مشاريع معقدة بل يمكن الاستفادة منها في مشاريع بسيطة أيضًا، لذا إن كنت تعمل على مشروع بايثون Python يحتاج إلى محرك قوالب لإنشاء صفحات HTML تلقائيًا، سيساعدك هذا المقال ببساطة على اختيار المكتبة الأنسب لك. نُشر استبيان يتضمن السؤال التالي: وصلت الإجابات إلى 1644 إجابة وتظهر التفاصيل كما يلي: وأشار شخص ما إلى تجربته مع مكتبات قوالب بايثون بتوفير وقت كبير بأتمتة بعض أعماله التي كانت تتطلب قضاء الكثير من الوقت بالاعتماد على النسخ واللصق من عدة مصادر وعرضها في في صفحة واحدة بنموذج موحد وهذه العملية كما ذكر تأخذ وقتًا كبيرًا ومعرضة للخطأ. أهمية القوالب ومحرك القوالب templating engine سنوضح فكرة القوالب من خلال الاستعانة بمثال لشخص يرغب بإنشاء صفحة صغيرة تتضمن جميع مقالات بايثون التي كتب عنها مؤخرًا والشيفرة كالتالي: <html> <head> <title>My Python articles</title> </head> <body> <p>These are some of the things I have written about Python:</p> <ul> <li>Python GUIs</li> <li>Python IDEs</li> <li>Python web scrapers</li> </ul> </body> </html> تعتبر هذه الشيفرة كافية لعدد محدود من المقالات، ولكن عندما يرغب الكاتب بإجراء تعديل مثل إضافة مقال آخر أو عدد كبير من المقالات الإضافية سيحتاج لكتابة شيفرة هذه الصفحة يدويًا والذي يعد نشاطًا مُرهقًا ومضيعة للوقت. يمكن بدلًا من ذلك إنشاؤها من ملف CSV أو ملف بيانات آخر يحتوي على قائمة بجميع الصفحات التي يرغب بإضافتها، ثم إنشاء نسخ مكررة من هذا بسهولة مع إمكانية إجراء تغييرات عديدة مثل عنوان الملف أو عنوان الصفحة أو أجزاء من النص أو النص بالكامل، وتتم كل هذه العمليات برمجيًا وذلك باستخدام محرك القوالب. محركات القوالب المستخدمة في بايثون تتوفر خيارات عديدة وتختلف كل أداة من أدوات القوالب قليلًا عن الأخرى وينبغي قراءة التوثيق لفهم الاستخدام الدقيق لها، وسنذكر ثلاثة منها دون تفضيل إحداها عن الأخرى وهي: Mako Jinja2 Genshi أداة Mako تتميز أداة القوالب Mako بالقوة والبساطة وسهولة الاستخدام حيث تتيح تصميم القوالب باستخدام عدد قليل فقط من التعليمات البرمجية. تعتبر غنية بالميزات مثل وجود المرشحات filters والوراثة والكتل القابلة للاستدعاء ونظام التخزين المؤقت المدمج، ويمكن تضمين جميع هذه الميزات في مشاريع الويب الضخمة أو المعقدة، ولها توثيق جيد، كما أنها تتميز بسرعة أدائها على عكس Jinja2. تعد Mako لغة القوالب الافتراضية لأطر الويب مثل Pyramid و Pylons واستخدمت في موقع Reddit لعرض صفحات الويب الخاصة به، وتدعم كلاً من الإصدار 2 والإصدار 3 من بايثون، وتم إصدارها بموجب ترخيص MIT. Jinja2 يعد Jinja2 خيارًا آخر سريع وغني بالميزات، فهو متاح لكل من الإصدار 2 والإصدار 3 من بايثون بموجب ترخيص BSD، ويستخدمه كل من Mozilla و SourceForge و NPR و Instagram وغيرها لامتلاكه مزايا عديدة. من مزاياه خاصية تهريب وسوم HTML ووضع الحماية sandboxing ووراثة القالب والقدرة على تطبيق وضع الحماية على أجزاء فقط من القوالب، بالإضافة إلى تجميع القوالب الخاصة بالمستخدم إلى شيفرة محمولة bytecode، كما يمتلك توثيقًا قويًا. يستخدم Jinja2 تركيب الجملة الخاص به على عكس Mako الذي يجعل القوالب الخاصة بك تستخدم منطق لغة بايثون البرمجي، ومع ذلك يتشابه Jinja2 مع Mako بالكثير من المزايا، أما تفضيل أحدهما على الآخر يكون تبعًا لنمط التنسيق الذي يفضله المستخدم. Genshi يعتبر Genshi أداة XML ذات محرك قوالب قوي مناسبة للعمل مع بيانات بتنسيق XML أو HTML (والذي هو نوع من XML أصلًا)، كما تتيح العمل بتنسيقات مغايرة لتنسيق صفحة الويب، يتوفر Genshi بموجب ترخيص BSD ويدعم الإصدار 2 والإصدار 3 من بايثون. مثال على استخدام مكتبة قوالب لنعيد صياغة المثال السابق، فبدلًا من تحديث ملف HTML في كل مرة يكتب فيها عن موضوع جديد يمكن تحديثه برمجيًا، ويكون النموذج كالتالي: <html> <head> <title>My Python articles</title> </head> <body> <p>These are some of the things I have written about Python:</p> <ul> %for topic in topics: <li>${topic}</li> %endfor </ul> </body> </html> وبعد ذلك يمكن تكرار كل موضوع من خلال مكتبة القوالب المستخدمة وهي Mako في هذا المثال: from mako.template import Template mytemplate = Template(filename='template.txt') print(mytemplate.render(topics=("Python GUIs","Python IDEs","Python web scrapers"))) وبالطبع لا يتم في الواقع سرد المحتويات يدويًا في متغير بل يتم سحبها من مصدر بيانات خارجي مثل قاعدة بيانات أو واجهة برمجة تطبيقات. يوجد الكثير من خيارات محركات قوالب بايثون المُساعدة على إنشاء النماذج في مختلف أنواع المشاريع، لذا يمكن الاطلاع على القائمة الكاملة من توثيق Python wiki الرسمي واختيار المناسب منها ولكن عمومًا فقد ذكرنا لك أشهر مكتبات القوالب استخدامًا والتي سيكون اختيارك غالبًا محصورًا ضمنها. ترجمة -وبتصرف- للمقال 3 Python template libraries compared لصاحبه Jason Baker. اقرأ أيضًا المرجع الشامل إلى تعلم لغة بايثون أهم 8 مكتبات بلغة البايثون تستخدم في المشاريع الصغيرة النسخة الكاملة من كتاب البرمجة بلغة بايثون
  3. أردوينو Arduino عبارة عن لوحة إلكترونية مُصغَّرة قابلة للبرمجة مطورة على مبدأ العتاد مفتوح المصدر open hardware وهو العتاد الذي يتيح الاطلاع على العناصر المكون منها وفحصها وتعديلها وتطويرها ثم إعادة توزيعها مرة أخرى، أي الأمر مشابه تمامًا للبرمجيات مفتوحة المصدر ولكن مع العتاد. تستهدف أردوينو شريحة كبيرة من المستخدمين منهم عمال الصيانة والهواة والصانعين لتصميم وبناء الأجهزة الإلكترونية القابلة للبرمجة التي تخدم أغراض محددة، ويشير مصطلح أردوينو إلى تصميم معين للوحة حاسوبية وقد يشير أيضًا إلى شركة تنتج تنفيذًا محددًا لهذه اللوحات وعادةً ما يُستخدم أيضًا لوصف المجتمع الخاص باللوحات التي يصنعها أشخاص أو شركات أخرى بطريقة مماثلة. استخدامات لوحة أردوينو تستخدم لوحة أردوينو في بناء المشاريع الإلكترونية بمختلف مستوياتها سواءً المشاريع الإلكترونية البسيطة مثل مقياس حراري أو مقياس رطوبة وعرض النتائج على شاشة بسيطة وحتى المشاريع المعقدة مثل الروبوتات والسيارات المتحركة الذكية وحتى أجهزة إنترنت الأشياء IoT وإدارة المنازل الذكية. الغرض الأساسي من لوحة أردوينو هو تسهيل وصل العناصر الإلكترونية مع بعضها وبرمجتها لتؤدي الغرض المطلوب دون الحاجة إلى خبرة مسبقة بمجال الكهرباء والإلكترونيات وحتى بمجال البرمجة، ويمكن بذلك لأعمار صغيرة -وهي أهم فئة مستهدفة- استخدام اللوحة وتعلم برمجتها بسهولة تبدأ من عمر 8 سنوات وما فوق. مكونات لوحة أردوينو تحتوي لوحات أردوينو على عدد من العناصر والأجزاء الإلكترونية المختلفة المرتبطة معًا بمخطط محدد تشكل معًا دارة إلكترونية قابلة للبرمجة، وقد تعرض تصميم اللوحة ومخططها على مر السنين لتغييرات، لكن تبقى القطع التالية من مكونات اللوحة الأساسية. مقابس pins تُستخدم للاتصال مع المكونات المختلفة التي قد ترتبط مع اللوحة، وتأتي هذه المقابس في نوعين: مقابس رقمية Digital: يمكنها قراءة وكتابة حالة واحدة أي إشارة أو لا إشارة أو المكون يعمل أو لا يعمل on/off، وتحتوي معظم اللوحات على 14 مقبس إدخال/إخراج رقمي. المقابس التشابهية Analog: يمكنها قراءة مجموعة من القيم وهي مفيدة لتحكم دقيق بالأجهزة والعناصر الإلكترونية وتحتوي معظم اللوحات على ستة منها. تُرتب هذه المقابس بنمط معين ليسل تركيب أي لوحة إضافية عليها وتسمى عادةً تلك اللوحات الإضافية "الدرع shield". موصل طاقة power connector يوفر الطاقة للوحة نفسها والعناصر المرتبطة بها، إذ يوفر جهدًا منخفضًا يمكنه تشغيل المكونات المتصلة باللوحة مثل مصابيح ضوئية ليد LED وأجهزة الاستشعار وحساسات مختلفة، بشرط أن تكون احتياجات الطاقة الخاصة بها منخفضة وضمن إمكانية مزود الطاقة وقدرته، ويمكن توصيل موصل الطاقة إما بمحول تيار تماثلي أو بطارية صغيرة. متحكم صغري microcontroller هو الشريحة الأساسية التي تسمح لك ببرمجة لوحة أردوينو Arduino حتى تتمكن من تنفيذ الأوامر واتخاذ القرارات بناءً على المدخلات المختلفة. يختلف المتحكم الصغري أو المتحكم الدقيق اعتمادًا على نوع لوحة أردوينو وإصدارها المُستخدم، لكنها تكون عمومًا متحكمات من نوع أتميل Atmel وعادةً ما تكون ATmega8 أو ATmega168 أو ATmega328 أو ATmega1280 أو ATmega2560 والتي تختلف عن بعضها بحجم الذاكرة المدمجة. موصل تسلسلي serial connector يكون هنالك موصل تسلسلي وهو في معظم اللوحات الحديثة منفذ يو إس بي USB معياري، ويتيح هذا الموصل الاتصال باللوحة عبر جهاز حاسوب والتواصل معها بتحميل برامج جديدة عليها وبرمجتها وغيرها من الإجراءات، كما يمكن تشغيل لوحة أردوينو من خلال منفذ USB مما يلغي الحاجة إلى موصل طاقة منفصل. عناصر إلكترونية إضافية تختلف العناصر الإلكترونية المضافة على اللوحة باختلاف إصدارها منها مولد الذبذبات oscillator ومنظم الجهد وغيرها التي توفر إمكانات مهمة للوحة ولكن لا يتعامل معها المستخدم بشكل مباشر. كيفية برمجة لوحة أردوينو يبدأ المستخدم الجديد عادة باستخدام بيئة التطوير المتكاملة الرسمية لأردوينو Arduino IDE وهو برنامج مفتوح المصدر مكتوب بلغة Java ويعمل على مجموعة متنوعة من الأنظمة الأساسية مثل ويندوز Windows وماك Mac ولينكس Linux. تسمح هذه البيئة للمستخدم بكتابة التعليمات البرمجية في بيئة خاصة مع التركيز على التركيب النحوي والقواعدي للشيفرة البرمجية، وغيرها لميزات الأخرى التي تجعل كتابة الشيفرة البرمجية أسهل كما تمكنه بعد ذلك من تحميل هذه الشيفرة بسهولة على لوحة أردوينو عبر منفذ USB بنقرة زر بسيطة لبرمجتها وتنفيذ الشيفرة عليها. اللغة المستعملة في برمجة أردوينو هي لغة أردوينو وهي مجرد مجموعة من دوال ++C/C أي مشتقة بشكل رئيسي من لغة C و ++C ومن إطار العمل وايرينغ Wiring الذي يعتمد على لغة البرمجة Processing. ترجمة -وبتصرف- للمقال What is an Arduino?‎. اقرأ أيضًا تثبيت أردوينو IDE ورفع الشيفرات على لوحة أردوينو ما هو حاسوب راسبيري باي Raspberry Pi؟
  4. تعد لغة البرمجة بايثون Python من أكثر اللغات انتشارًا لسهولة تعلمها ولدعمها الكثير من المشاريع مثل مواقع الويب وأدوات سطح المكتب والبرمجيات الخاصة بالمؤسسات وحتى السكربتات الصغيرة المُساعدة على أتمتة المهام الدورية، واستُخدمَت بايثون لكتابة جميع مشاريع البرامج الشهيرة أو أجزاء منها مثل dnf/yum و OpenStack و OpenShot و Blender و Caliber وحتى وكيل BitTorrent الأصلي. تطوير تطبيقات بايثون يكون عبر محررات وبيئات تطوير متكاملة وهي كثيرة للغاية، إذ يفضل البعض استخدام محرر نصي بسيط مثل إيماكس Emacs أو Vim أو Gedit، وجميع هذه المحررات قابلة لتوسيع إمكانياتها مثل ميزة إبراز صيغة الجملة syntax highlighting والإكمال التلقائي، أما بالنسبة للمستخدم المحترف الذي يعمل في مشاريع كبيرة معقدة فيفضّل استخدام بيئة تطوير متكاملة IDE بدلًا من الجمع بين استخدام محرر نصي بسيط وسطر الأوامر terminal. تعد بيئة التطوير المتكاملة عبارة عن محرر نصوص مدعّم بميزات إضافية وتتخصص أحيانًا بلغة برمجة واحدة أو لغتين فقط وتساعد المبرمج على تتبع المشروع ككل حيث تقوم معظم هذه البيئات بالاحتفاظ بذاكرة تخزين مؤقت لأسماء الأصناف والتوابع والمتغيرات بحيث يمكن إكمالها تلقائيًا بسرعة وتمتلك بعضها أدوات اكتشاف الأخطاء وتصحيحها وتكون مدعمة بتصحيح المنطق الفوري instant logic الذي يساهم في تسريع أداء المواقع والتطبيقات وزيادة الأمان. نُشر استبيان يتضمن السؤال التالي: عدد الإجابات وصل إلى 40095 إجابة وتظهر التفاصيل كما يلي: يذكر المقال خمس بيئات ويشرح تفاصيلها لمساعدتك على اختيار الأنسب لك، وجميع هذه الخيارات متعددة المنصات cross-platform لذا يمكن استخدامها على نظام التشغيل الذي تختاره. بيئة PyCharm يعتبر PyCharm محرر بايثون بسيط وصغير الحجم نسبيًا وشائع الاستخدام، يتوفر منه إصدارين أحدهما مجاني ومفتوح المصدر وهو الإصدار المجتمعي المتاح بموجب ترخيص Apache 2.0 والآخر مدفوع. يمتلك pycharm جميع خصائص بيئة التطوير المتكاملة وهي: فحص الشيفرة البرمجية أدوات تغيير هيكلية الشيفرة البرمجية منظومة اختبار وحدات مدمجة integrated unit testing نظام تحكم بالإصدار مدمج integrated version control أدوات المراقبة والتحكم بالمشروع إبراز صيغة الجملة والإكمال التلقائي أما قصور PyCharm تتمثل في احتكار العديد من المزايا المتقدمة للإصدار مغلق المصدر وعدم توفيرها في الإصدار مفتوح المصدر، بالإضافة إلى نموذج النواة المفتوح Open core الذي يعتمده. بيئة Eric إريك Eric بيئة تطوير متكاملة لتحرير شيفرات بايثون، وسُميّت باسم الممثل Eric Idle في برنامج Monty Python. كُتبَت إريك بلغة بايثون باستخدام إطار العمل Qt، ومتاحة بموجب الإصدار الثالث من GPL. تستخدم بيئة إريك Scintilla وهو مكوِّن لتحرير الشيفرة المصدرية يُستخدم في العديد من برامج تحرير النصوص والعديد من بيئات التطوير المتكاملة، وهو متاح أيضًا كمحرر SciTE مستقل. تتميز بيئة إريك بما يلي: صغيرة الحجم إبراز الأقواس المتقابلة إكمال الشيفرة متصفح الصنف class browser اختبار الوحدة المدمجة دالة مدمجة مع بيئة التطوير لقائمة المهام دالة لمعاينة نموذج Qt: تُساعد المستخدم عند تطوير واجهة رسومية بالاعتماد على Qt لتطبيق ما جميع هذه الميزات تجعلها خيارًا مفضلًا للكثيرين ومع ذلك تبقى بيئة صعبة التعلم بالنسبة للمبتدئين في مجال بيئات التطوير المتكاملة وتحتاج إلى وقت كبير لإتقانها ولكن هذا الوقت يستحق العناء خاصةً أن استخدامها يُحسّن من جودة التعليمات البرمجية، وإن ألِفَ المستخدم استعمالها فلن يصعب عليه الانتقال إلى بيئات أخرى لما فيها من تشابه في الاستخدام مع بعضها. بيئة Pyzo يُعدّ Pyzo محرر بايثون يمتلك العديد من المزايا مثل سجل ومصحح أخطاء ومتعقب مسافة بادئة ومتتبع للتعليمات البرمجية، كما أنه مزود بمستعرض ملفات مدمج ومستعرض للمشروع project overview. يعتمد Pyzo على Qt مما يكسب بيئة العمل الخاصة به مرونة كبيرة حيث يسمح بإجراء الكثير من التعديلات حسب تفضيلات المستخدم مثل نقل اللوحات panels لتناسب سير العمل أو لمحاكاة تصميم بيئة تطوير متكاملة أخرى، كما يمكن إظهار وإخفاء لوحات الأدوات بناءً على المعلومات ذات الاستخدام المتكرر مما يساعد المستخدم على التركيز، بالإضافة إلى إمكانية تعيين مجموعة مفاتيح معينة لكل إجراء. لا يعد pyzo بيئة تطوير متكاملة مثل اكلبس Eclipse لعدم امتلاكه بنية مزودة بالملحقات plugin architecture ولكن يعده البعض بديلاً لماتلاب MATLAB كونه يناسب مشاريع الحوسبة العلمية مثل الرياضيات والعلوم المتقدمة، ويعد باختصار بيئة تطوير متكاملة بسيطة ومفتوح المصدر وبالتالي قابل للتخصيص بطبيعته مما يجعله مناسبًا لأي مشروع بايثون. بيئة Spyder تتشابه بيئة Spyder مع Pyzo في الجمهور المستهدف فهو موجّه لعلماء البيانات ولكن يختلف مع المحرر Pyzo بكونه بيئة متكاملة. تتصف Spyder بالتعقيد لكونها بيئة كبيرة وغنية بالميزات وتمتلك لوحات لعرض البيانات المُدخلة وخرج الشيفرة البرمجية والسجلات والتأريخ history وغير ذلك الكثير. يمكن تنزيلها لوحده أو كجزء من حزمة مع توزيعة أناكوندا Anaconda وهي مجموعة أدوات برمجة شائعة يستخدمها مبرمجو لغتي بايثون Python و R. Eclipse مع PyDev غالبًا ما يتبادر Eclipse إلى الذهن عند ذِكر بيئات التطوير المتكاملة مفتوحة المصدر، إذ يقف خلفه مجتمع ضخم من المطورين وعدد لا يحصى من الملحقات المتاحة مما يمكن المستخدم من تخصيصه لتلبية جميع احتياجاته، ولكن تعد هذه الوفرة في حد ذاتها سلبية لبعض المستخدمين فهو يبدو لهم ذو إمكانيات فائضة عن الحاجة مما يجعله معقدًا. يناسب Eclipse المبتدئين لأن تعلم أداة واحدة سيمكّنهم من تنفيذ معظم المشاريع وبكثير من لغات البرمجة، كما يناسب مبرمجي بايثون الجدد الذين يمتلكون خبرة سابقة في البرمجة وخاصة لغة جافا Java حيث ستكون بيئة التطوير المتكاملة مألوفة بالنسبة لهم. يضيف PyDev عددًا كبيرًا من الميزات إلى إيكلبس Eclipse مثل تلوين الجملة بناءً على لغة البرمجة المستخدمة وإكمال الشيفرة البرمجية ويدمج مصحح أخطاء بايثون بالإضافة إلى أدوات إعادة هيكلة للشيفرة وغيرها الكثير. يمكن الاستفادة من PyDev عند استخدام إطار عمل الويب جانغو Django بلغة بايثون الشهير لإنشاء مشاريع جانغو جديدة وتنفيذ إجراءات جانغو باستخدام مفاتيح الاختصار hotkeys واستخدام تكوين تشغيل منفصل خاص بجانغو. يتوفر كل من Eclipse و PyDev بموجب ترخيص Eclipse العام. خيارات أخرى يتوفر الكثير من خيارات برامج تحرير شيفرات بايثون مفتوحة المصدر وبيئات التطوير المتكاملة، وفيما يلي البعض منها: أدوات بايثون Python Tool Kit والتي تعرف اختصارًا باسم PTK و PyScripter و LeoEditor وهي أدوات لتحرير شيفرة بايثون، ويوجد IDLE وهو بيئة تطوير IDE لبايثون. برامج تحرير شيفرات بايثون البرمجية للأغراض العامة مع دعم بايثون من خلال الملحقات مثل Geany و Atom و Brackets. بيئات تطوير متكاملة مفتوحة المصدر للأغراض العامة يمكن تحويلها كما في Eclipse إلى برامج تحرير بايثون باستخدام ملحقات محددة وبعض التوسعات، ومن الأمثلة عليها: Netbeans و VS Code أو النسخة الحرة منه VS Codium. قد تمتلك معظم برامج تحرير التعليمات البرمجية القابلة للتوسيع دعم بايثون، فمثلًا يمكن تحويل محرر النصوص إيماكس Emacs إلى بيئة تطوير بايثون متكاملة Python IDE باستخدام بعض الحزم وإعدادات الضبط التي يجب استخدامها، كما يحتوي محرر KDE Kate على مزايا مثل إبراز صيغة الجملة والتحكم بإظهار أو إخفاء الشيفرة البرمجية code collapsing ودعم قراءة كافة ملفات المشروع بمجرد فتح مجلد المشروع الرئيسي، بالإضافة إلى امتدادات أخرى مُساعدة. يمكن الاطلاع على قائمة أشمل مما ذُكر في هذا المقال حول خيارات تحرير شيفرات بايثون من خلال صفحة بيئات التطوير المتكاملة وصفحة المحررات من توثيق بايثون الرسمي. خاتمة يجب الانتباه إلى أنه لا يمكن قول أن محرر أو بيئة تطوير محددة أفضل من غيرها لتطوير مشاريع بايثون، حيث أن الخيارات كثيرة بكثر حاجات المستخدمين المختلفة، ويجب أن يكون التركيز منصبًا حول الخيار الذي يحل المشكلة التي يواجهها المستخدم أو اختيار المناسب لخبرته، فبالنسبة للمبتدئين يعتبر اختيار بيئة تطوير متكاملة أو محرر نصوص بسيط صغير الحجم أفضل، أما إذا رغب المستخدم بمحرر يساعده على كتابة شيفرة أكثر وضوحًا مع أخطاء أقل فسيساعده اختيار محرر متقدم غني بالميزات على تحقيق مراده. ترجمة -وبتصرف- للمقال Top 5 open source Python IDEs لصاحبه Jason Baker. اقرأ أيضًا مدخل إلى بيئة التطوير المتكاملة IDE المرجع الشامل إلى تعلم لغة بايثون
  5. لا تقل واجهة المستخدم الرسومية GUI أهميةً عن أي مكون آخر في التطبيق فهي النافذة التي يتفاعل عبرها المستخدم مع التطبيق بسهولة ويسر، وتعد لغة بايثون من أشهر اللغات المستخدمة في بناء تطبيقات بواجهة رسومية حديثة جذابة التصميم بخطوات بسيطة وغير معقدة إذ يجري ذلك بالاعتماد على أطر عمل Frameworks مفتوحة المصدر وهذا ما المقال مخصص لمناقشة تلك الأطر المتاحة لهذه العملية. نُشر استبيان يتضمن السؤال التالي: وصل عدد الإجابات إلى 42447 إجابة وتظهر التفاصيل كما يلي: ولكن قبل اعتماد تصميم واجهة رسومية لتطبيق، ألم تتساءل إن كان التطبيق بحاجة ماسّة لها أم يمكن الاعتماد فقط على واجهة سطر الأوامر؟ عمومًا الواجهة الرسومية ضرورية في الحالات التي يحتاج فيها مستخدم التطبيق إلى التفاعل مع التطبيق عبر الفأرة أي تلك التطبيقات التي ينزلها المستخدم على حاسوبه المحلي ويستخدمها في حياته اليومية، أما التطبيقات التي تكون فيها السرعة وقابلية الاستخدام والتحكم فهنا يمكن الاستغناء عن الواجهة الرسومية واعتماد واجهة سطر الأوامر. يمكن إضافة مظهر جمالي بسيط لواجهة سطر الأوامر من خلال العديد من المكتبات مثل Click و Cement و Cliff التي تسهل البدء بهذه التصاميم. وقد تكون واجهة الويب حتى بالنسبة لبرنامج يفترض تشغيله محليًا خيارًا يستحق النظر خاصة إذا رغب المستخدم باستضافة البرنامج عن بُعد، وتوضح المشاريع التالية هذا الأمر: جانغو Django أو فلاسك Flask أو بايراميد Pyramid. يمكن استخدام مكتبة مثل pywebview لتحويل واجهة ويب إلى واجهة رسومية تشبه الواجهات الأصيلة، ويمكن بدلًا من ذلك استخدام أطر العمل مثل Pyforms لبناء تجربة متسقة عبر الويب وسطر الأوامر وسطح المكتب وكل ذلك باستخدام شيفرة أساسية واحدة. تصميم الواجهة الرسومية في بايثون توفر بايثون للمبرمجين عدة خيارات لبناء واجهات رسومية وبرمجتها كلها تمر عبر ما يُعرف باسم الارتباطات Bindings أو مكتبات رابطة وهي عبارة عن واجهة برمجية API تتيح تضمين مكتبة خاصة بتصميم الواجهات الرسومية من منصات ومكتبات عديدة وربطها مع تطبيقك لبناء واجهة رسومية بتلك المنصات والمكتبات بالإضافة إلى الارتباطات الخاصة بأنظمة التشغيل المختلفة مثل لينكس Linux وويندوز Windows وماك Mac ويعمل العديد منها عبر الأنظمة الثلاثة أي بناء واجهة رسومية واجهة لأنظمة التشغيل تلك. مكتبات PyQt و PySide و Qt لبايثون PyQt هو عبارة عن ارتباط Binding أو مكتبة ربط في بايثون يقوم بتضمين مكتبة Qt الشهيرة لتصميم الواجهات الرسومية التي تمتلك الكثير من الأدوات بالإضافة لمجتمع داعم كبير، لذا إن سبق لك استعمال مكتبة Qt بلغة برمجة مغايرة لبايثون مثل تطوير تطبيقات كي دي KDE أو أي بيئة سطح مكتب أخرى قائمة على Qt، وهذا يعني أن Qt مألوفة بالنسبة لك مما يجعل PyQt خيارًا مناسبًا لك. يمكن استخدام QtCreator عند إنشاء تطبيقات بايثون باستخدام Qt، وهو عبارة عن بيئة تطوير متكاملة IDE تتميز بتوفير وضع المصمم designer mode لإنشاء شيفرة من عملية تصميم الواجهة رسوميًا. هنالك خيار آخر لاستخدام مكتبة Qt مع بايثون وهو Qt لبايثون المعروف باسم PySide2. Tkinter مكتبة Tkinter هي مجموعة أدوات لبناء واجهة المستخدم الرسومية مبنية على مكتبة Tcl/Tk، حيث Tcl هي لغة برمجة أما Tk هي مجموعة أدوات واجهة المستخدم الرسومية، كما تتميز بكونها أول إطار عمل قدَّم مفهوم الزوج اللغوي language pair في أوائل التسعينيات والذي هو عبارة عن مُعرّف يصف مزيجًا من لغتين كما في عملية الترجمة ويحدد المتغيرات المحددة لكل من لغة المصدر واللغة الهدف. ننصح بمتابعة سلسلة بناء واجهة رسومية عبر مكتبة Tkinter التي تشرح أساسيات المكتبة. WxPython تعمل المكتبة WxPython الرابطة على تضمين مكتبة wxWidgets الخاصة بلغة ++C في بايثون، وهي مكتبة واجهة المستخدم الرسومية الخاصة بالأنظمة متعددة المنصات. الواجهات المصممة عبر WxPython تكون متناسقة أكثر مع مختلف أنظمة التشغيل التي تعمل عليها، عكس إطار العمل Tkinter لأنه يستخدم عناصر واجهة مستخدم النظام المضيف لإنشاء واجهة مستخدم رسومية، ويمتلك WxPython مجتمع مطورين متنامٍ ومن السهل البدء باستخدامه، ولكن قد تحتاج إلى تضمين wxPython مع تطبيقاتك أو تطلب من المستخدم تثبيته بنفسه لأنه لا يُثبت تلقائيًا مع بايثون. Python GTK+3 يُعرف مشروع Python GTK+ 3 سابقًا باسم PyGTK ويوفر ارتباطات لبايثون بكائنات GTK وهي مجموعة من عناصر النوافذ وعناصر واجهة المستخدم المستخدمة في بناء واجهة المستخدم. يعتمد Python GTK+3 على +GTK وهو واسع الاستخدام حيث يعد كأساس لسطح مكتب جنوم GNOME، كما يُستخدم في التطبيقات المستقلة على لينكس وويندوز وماك، وبالتالي فإن استخدام Python GTK+3 يوفر نفس الإطار وأدوات التطوير لمشاريع بايثون الخاصة بك، ومن أبرزها Glade وهو مُصمِّم واجهات رسومية لتطبيقات +GTK. يحفظ Glade الواجهات المصممة من خلاله بتنسيق XML ويمكنك استخدامها بواسطة كائن GtkBuilder في شيفرة تطبيقك، ويستخدم ميزة السحب والإفلات drag-and-drop مما يسهل إنشاء واجهة مستخدم ديناميكية وسريعة الاستجابة دون الحاجة إلى صياغة ما ترغب بتصميمه ضمن شيفرة التصميم. Kivy Kivy هو مجموعة أدوات لأنظمة لينكس Linux (بما في ذلك راسبيري باي Raspberry Pi) وويندوز Windows وماك Mac وأندرويد Android. صُمِّمَ مع مراعاة التطور السريع والأجهزة الحديثة لذا يركز على واجهات المستخدم المبتكرة، واُستخدِمَ لتصميم تطبيقات الوسائط المتعددة مثل تطبيقات التحكم في الموسيقى للهواتف وتطبيقات السبورة البيضاء whiteboarding المستخدمة في غرف الاجتماعات. لا يمتلك Kivy برنامج تصميم مرئي مثل QtCreator و Glade ولكنه يستخدم لغة التصميم الخاصة به التي تساعد المستخدم على ربط تصميم واجهة المستخدم بكائنات التعليمات البرمجية مما يسهل تقسيم الأصناف والتوابع ضمن شيفرة التطبيق. يستضيف Kivy مستودع Kivy Garden الخاص بعناصر واجهة المستخدم والإضافات التي أنشأها المستخدم لذلك إذا كنت تفكر في إنشاء شيء لا يوفره Kivy فربما يكون موجودًا ضمن المستودع. خاتمة تطول القائمة لذكر أدوات تصميم الواجهات الرسومية في بايثون ولا يحتويها مقال واحد، لذا لمزيد من الخيارات يمكن التحقق من صفحة "برمجة واجهة المستخدم الرسومية في Python" من توثيق بايثون الرسمي والذي يسرد العشرات من الأدوات الأخرى. تتوفر الكثير من الحلول لربط بايثون بالعديد من مكتبات عناصر واجهة المستخدم المختلفة وأدوات واجهة المستخدم الرسومية مثل FLTK و FOX وخيارات أخرى تستحق النظر مثل مثل pygame وpyglet وPanda3d وغيرها الكثير، ولكن من المحتمل أن يتجنب المبتدئين المشاريع التي تقدم تطبيقات جزئية فقط أو التي لم تعد تتم صيانتها إلا أن هناك الكثير من الأدوات الجيدة التي تناسب الكثير من حالات الاستخدام. ترجمة -وبتصرف- للمقال ‎‎5 open source Python GUI frameworks لصاحبه Jason Baker. اقرأ أيضًا واجهات المستخدم الرسومية في بايثون باستخدام TKinter مدخل إلى عناصر واجهات المستخدم الرسومية Widgets في بايثون مربعات الاختيار وأزرار الانتقاء والقوائم في واجهة المستخدم الرسومية في بايثون
  6. قد تواجه عند العمل في مشاريع مفتوحة المصدر مصطلح "الحقوق المتروكة" copyleft وهو مصطلح شائع الاستخدام لكنه غامض بعض الشيء، لذا يقدم هذا المقال شرحًا لمفهوم الحقوق المتروكة ولكن قبل البدء به يجب التطرق إلى عدة مفاهيم مثل حقوق النشر copyright والمصدر المفتوح open source والتراخيص المتساهلة permissive كونها مفاهيم مترابطة، وللعلم أكثر ما تُستخدم هذه التراخيص في البرمجة وتطوير البرمجات لذا سنركز في هذا السياق. حقوق النشر copyright يختلف التعريف الدقيق لحقوق النشر بناءً على سياقه القضائي، لكن الفكرة العامة له تدور حول امتلاك مؤلف العمل عمله واحتكاره احتكارًا محدودًا وليس مطلقًا لنسخ أو تعديل العمل واستعماله وما إلى ذلك، ومن هنا جاء مصطلح حقوق النشر التي تضمن عدم السماح لأي شخص بإعادة نشر أو تعديل عمل دون إذن من مؤلفه والذي يعتبر ترخيص license وقد يأتي مع شروط معينة مرفقة. تقترن حقوق النشر في هذه الأيام بالعمل دومًا حتى دون الافصاح بذلك، أي الحالة الافتراضية أن العمل محفوظ الحقوق لصاحبه حتى لو لم يُذكر ذلك، وهذا خلاف ما مضى إذ كان يتطلب التصريح عن الحقوق إن كانت محفوظة وذكر ذلك صراحةً. يكلّف الدستور الكونغرس Congress في الولايات المتحدة صراحةً بوضع قوانين حقوق النشر من أجل تعزيز تقدم العلوم والفنون المفيدة. المصدر المفتوح open source تسمح جميع تراخيص المصدر المفتوح open source حسب تعريف Open Source Initiation في سياق البرمجيات بتوزيع الشيفرة المصدرية للتطبيق ويحق لأي شخص يستخدم برنامجًا مفتوح المصدر الاطلاع على الشيفرة البرمجية وفحصها وتعديلها. ولا يتعلق هذا الترخيص بسياق البرمجة وبرمجة التطبيقات فقط بل يمتد إلى أي أعمال أخرى يُنشر مصدرها للعامة مثل الكتب والسلاسل التعليمة التي يُتاح مصدرها للعامة للتعديل عليها وتطويرها ولكن أكثر ما يُستخدم هذا المصطلح كما ذكرنا في مجال البرمجة. التراخيص المتساهلة permissive توفر التراخيص المتساهلة permissive أقصى قدر من الحرية للمطورين النهائيين downstream developers بما في ذلك القدرة على استخدام شيفرة مفتوحة المصدر في مشروع مغلق المصدر، وتعديل ومشاركة هذه الشيفرة، بالإضافة إلى تعديل بعض شروط وأحكام إعادة النشر في الأعمال المشتقة فمثلًا إذا اعتمد البرنامج الأصلي على ترخيص متساهل، يحق لصاحب البرنامج اختيار مشاركة عمله المشتق وفق شروط مختلفة عن شروط ترخيص العمل الأصلي. الحقوق المتروكة copyleft تعد رخصة جنو العمومية (GPL) بإصداراتها المختلفة من أكثر رخص الحقوق المتروكة استخدامًا، لذا يعد التعريف الذي يقدمه مشروع جنو GNU للحقوق المتروكة تعريفًا أساسيًا والذي ينص على ما يلي: وهنا يكمن اختلاف الحقوق المتروكة عن التراخيص المتساهلة حيث تتطلب تضمين حقوق العمل الأصلي في أي أعمال مشتقة عنه، وبهذا تضمن حصول المستخدمين على نفس الحقوق والتصريحات عند استخدام الأعمال المُشتقة من البرنامج الأصلي. الحقوق المتروكة Copyleft في البرمجيات كما هو موضح في شرح مفهوم الحقوق المتروكة أن المشاريع النهائية downstream projects لا يمكنها إدراج قيود إضافية على استخدام البرنامج، وسنوضحه بالمثال التالي. إذا كتبت برنامجًا وليكن باسم "برنامجي اللطيف" ووزعته بموجب ترخيص حقوق متروكة فستكون لدى الآخرين حرية استخدامه وتعديله ويمكنهم توزيع إصدارات خاصة بتعديلات إضافية ولكن يجب أن يمنح هؤلاء المطورين نفس الحريات التي منحتها لهم، ولست مضطرًا للمساهمة بتعديلات إضافية على التطبيق مثلًا مرة أخرى لكن يفضل ذلك خاصةً عندما تكون التغييرات عبارة عن إصلاحات للأخطاء. أما إذا أصدرته وفق ترخيص متساهل فستكون حرًا بدمجه في مشروع برمجي مغلق المصدر ولا يتعين عليك استخدام نفس الترخيص الذي استخدمته بالضبط طالما أن الشروط متوافقة مع أن المشاريع النهائية تستخدم غالبًا نفس الترخيص من أجل البساطة. توجد تراخيص أخرى غير ترخيص GPL للحقوق المتروكة مثل رخصة Mozilla العامة ورخصة Eclipse العامة التي تحظى كل منهما بشعبية كبيرة، وتوجد العديد من التراخيص الأُخرى للحقوق المتروكة الأقل استخدامًا. الحقوق المتروكة خارج عالم البرمجيات non-software على الرغم من أن فكرة الحقوق المتروكة وُلدت في عالم البرمجيات إلا أنها توسعت لخارجه أيضًا، فمثلًا فكرة "افعل ما تريد طالما أنك تحتفظ بحق الآخرين في فعل الشيء نفسه" هي السمة المميزة لترخيص المشاع الإبداعي نَسب المُصنَّف - الترخيص بالمثل المستخدم للأعمال المكتوبة والفنون البصرية وما إلى ذلك، وتعد رخصة التوثيق المجاني في جنو GNU مثالًا آخرًا على ترخيص الحقوق المتروكة لغير البرمجيات، ولكن يُنصح عمومًا بعدم استخدام تراخيص البرامج للعمل في مشاريع خارج البرمجيات. هل يجب أن أختار رخصة الحقوق المتروكة؟ يطول الحديث حول نوع الترخيص الذي يجب استخدامه لمشروع ما، لذا يُنصح بتضييق قائمة التراخيص أولًا بحيث تتطابق مع فلسفة وأهداف صاحب المشروع منه وتكامل تطبيقات المشروع. تستخدِم المشاريع التي تدور حول لغة أو تقنية معينة نفس التراخيص أو تراخيص مماثلة غالبًا، إذا أردت أن يمتلك مشروعك قدرة تنافسية كبيرة فيجب التأكد من اختيار ترخيص مناسب. وللمساعدة يعتبر مشروع choosealicense.com من جيت هاب GitHub طريقة جيدة للعثور على ترخيص يناسب احتياجاتك، ويمتلك موقع tl;drLegal شروحات بلغة واضحة للعديد من تراخيص البرامج الشائعة وغير الشائعة. لمزيد من المعلومات حول ترخيص الحقوق المتروكة يمكن مراجعة مشروع دليل الحقوق المتروكة. ترجمة -وبتصرف- للمقال What is copyleft?‎ لصاحبه Ben Cotton. اقرأ أيضًا ما المقصود بمصطلح مفتوح المصدر (open source)؟ تراخيص البرامج مفتوحة المصدر
  7. في السبعينيات، كانت تُعالج الملفات النصية بطريقة بدائية جدًا لا تشبه أي شكل من أشكال محررات النصوص اليوم مثل تطبيقات ليبر أوفيس وذلك باستخدام أوامر مثل ed التي تبحث على سطر معين وتدرج بعده نصًا آخر أو تزله بشكل مشابه لقائمة البحث والاستبدال حاليًا ولكن بأسلوب أقرب إلى آلة كاتبة متطورة قليلًا، إلى أن جاء بيل جوي Bill Joy وصمم أول محرر مرئي عُرف باسم Vi اختصارًا لعبارة visual editor الذي اكتسب شهرةً واسعةً لكونه تطبيقًا مريحًا جدًا أتاح عرض الملفات بالكامل على الشاشة وتحريرها مباشرة. طُوِّرَت لاحقًا نسخة من Vi باسم Vim اختصارًا لعبارة Vi Improved أي تطبيق Vi المُحسَّن، ولهذا السبب يُعرف فيم Vim باسم Vi أيضًا، وقد بقيت الأوامر الخاصة بفيم في بعض أنظمة بوزيكس POSIX تحمل اسم vi، ويعتبر فيم شائع الاستخدام أكثر من في Vi. محرر النصوص فيم Vim فيم Vim هو محرر نصوص خاص بنظام التشغيل يونيكس Unix ومضمّن في كل من أنظمة التشغيل لينكس Linux وماك mac ونظام BSD، يشتهر بالسرعة والكفاءة في الأداء لكونه تطبيقًا صغيرًا يمكن تشغيله من خلال سطر الأوامر أو مع واجهة رسومية، ولكن الخيار الأول هو الغالب لأنه يسمح بالتحكم الكامل به بواسطة لوحة المفاتيح دون الحاجة إلى القوائم أو الفأرة، فمثلًا لإدراج نص في ملف تضغط على المحرف I وتكتب المطلوب، أما للتنقل أو إصدار أوامر مثل حفظ Save وحذف محرف Backspace والانتقال إلى بداية الجملة Home والانتقال إلى نهاية الجملة End وغيرها العديد من الأوامر تضغط على Esc في لوحة المفاتيح ثم تضغط على أي مفتاح أو مجموعة مفاتيح تتوافق مع الإجراء الذي تريد تنفيذه. تختلف طريقة استخدام المحرر فيم عن استخدام المحررات الحديثة، ولكنها الطريقة التي يستخدمها مديري أنظمة يونيكس Unix في جميع أنحاء العالم لتحرير ملفات ضبط إعدادات النظام وسجلات التغييرات changelogs والسكربتات. تثبيت فيم Vim تأتي بعض الأنظمة مزودة مسبقًا بمحرر Vi ويتوجب عليك تثبيت Vim بشكل منفصل، وللتحقق مما إذا كان Vim مثبتًا لديك استخدم الأمر التالي: which vim إذا لم تحصل على أي شيء فلن يكون Vim مثبتًا ويمكنك تثبيته من الصفحة الرئيسية للموقع الخاص به. تقدم العديد من التوزيعات بعض البُنى المختلفة لفيم مما يعني وجود بنية توفر الحد الأدنى من الإمكانيات التي تحاكي Vi القديم مع تضمين ما يكفي من ميزات وبنية محسّنة توفر تجربة استخدام جيدة وحديثة. أفضل طريقة لتحديد ما هو متاح هو البحث في مدير الحزم الخاص بك عن أي حزمة تحتوي على السلسلة "vim" ثم تثبيت الحزمة التي تحتوي على معظم الميزات مثل حزمة vim-Enhanced على فيدورا Fedora. حالات استخدام المحرر فيم Vim فيم هو المحرر الاحتياطي الافتراضي في جميع أنظمة بوزيكس POSIX، سواء كنت قد قمت للتو بتثبيت نظام تشغيل جديد أو قمت بالإقلاع في بيئة ذات حد أدنى من الإمكانيات بهدف إصلاح نظام أو إجراء شيء ما وحينها إن لم تتمكن من استخدام أي محرر آخر فمن المؤكد أن فيم سيكون أفضل خيار للاستخدام آنذاك، وطبعًا يمكن في جميع هذه الحالات استخدام برامج تحرير صغيرة أخرى مثل جنو نانو GNU Nano أو Jove إلا أن فيم Vim يعتبر محررًا مناسبًا لأي نظام حاسوب مهما كان. تمتد فعالية المحرر فيم لتشمل تجربة الاستخدام أيضًا وليس فقط الأداء، حيث لا تعتمد واجهة فيم المحلية القائمة على سطر الأوامر على القوائم أو الأجهزة الطرفية الممتازة أو حتى المفاتيح الإضافية مثل Ctrl أو Alt بل يستخدم فيم المفاتيح الشائعة لأي لوحة مفاتيح بغض النظر عن اللغة أو النُسق أو الجهاز، كما يمكن إعادة تعيين تلك غير الشائعة بسهولة تامة. كيفية استخدام فيم يمكن استخدام محرر النصوص فيم في كل من الأجهزة المحمولة وأجهزة الحواسيب. استخدام فيم في الأجهزة المحمولة إذا شغلت سطر أوامر على هاتفك المحمول فيعد فيم خيارًا رائعًا للتحرير باستثناء مشكلة واحدة وهي عدم وجود مفتاح Esc وآنذاك يتوفر حلين: تنزيل لوحات مفاتيح بديلة متاحة ولكنها ستضيف مفاتيح إضافية على حساب حجم لوحة المفاتيح. ضبط فيم ليعين تسلسل مفاتيح يقابل الضغط عليها الضغط على مفتاح Esc، ولتحقيق ذلك أضف أمر imap التالي إلى ملف الضبط vimrc. الخاص ببيئتك، فيستخدم المثال التالي فاصلتين كتسلسل يقابل المفتاح Esc، ولكن يمكنك استخدام أي شيء لا تستخدمه عادةً في الكتابة كتتابع سريع، مثل qq أو yy: imap ,, <Esc> استخدام فيم في أجهزة الحاسوب على الرغم من امتلاك المحرر فيم الكثير من الإمكانيات إلا أنه لا يوجد سوى عدد قليل من عناصر التحكم التي يجب معرفتها من أجل استخدام فيم، لذا قام مطوروه بإنشاء شرح مخصص vimtutor وهو عبارة عن جولة بسيطة وتفاعلية تعلمك أساسيات استخدام فيم، ومنها: لتشغيل فيم: إما من خلال سطر الأوامر بكتابة vim أو على سطح المكتب عن طريق تشغيل gvim وهو برنامج فيم المزود بواجهة رسومية. للدخول في وضع إدراج النص اكتب على I، وفي هذا الوضع لا توجد أوامر بل يمكن فقط كتابة نص في المستند. للدخول إلى الوضع العادي الذي تُستخدم فيه الأوامر اضغط على Esc. يمكن في الوضع العادي تحريك المؤشر باستخدام h لليسار و j لأسفل و k لأعلى و l لليمين، قد يكون من المفيد تذكر أن j تحرك المؤشر للأسفل من خلال مساواتها بصريًا بالسهم. للخروج من Vim، اكتب wq: إذا كنت تريد حفظ عملك أو !q: لتجاهل التغييرات غير المحفوظة. يمكن الاطلاع على أوامر فيم الأخرى غير المذكورة وهي ليست أساسية ولكن تساعد على زيادة فعالية العمل وراحة المستخدم. عندما تشغل فيم لأول مرة تقوم بإنشاء وفتح ملف نصي مؤقت وفارغ تمامًا كما تفعل عند فتح أي محرر نصوص آخر، ولكن على عكس برامج تحرير النصوص الأخرى لا يمكنك كتابة أي شيء في الملف في البداية لأنك في الوضع العادي normal mode والذي يستخدم لإصدار أوامر لفيم، أما للدخول في وضع الكتابة فيجب الضغط على الحرف I في وضع الأوامر أو الوضع العادي الذي يعني الدخول في وضع الكتابة أو الإدراج وحينها يمكنك الكتابة وإدراج النصوص. تعتبر هذه الأوضاع أدوات تبديل يتم تشغيلها أو إيقاف تشغيلها لتغيير حالة بعض الإجراءات، فمثلًا عندما تريد إرجاع كلمة تضغط على المفتاح Esc للدخول إلى الوضع العادي ثم تضغط على الحرف b لتحريك المؤشر إلى اليسار بمقدار كلمة واحدة. يعد هذا التنقل المستمر بين الوضع العادي ووضع الإدراج سلبية فيم الوحيدة وخاصةً بالنسبة للمستخدمين الجدد ولكنها مع ذلك غير معقدة إذ يتطلب استخدامه فترة من الوقت للاعتياد عليه، فهو يشبه إلى حد ما الضغط على مفتاح Caps Lock بدلاً من مفتاح Shift للحصول على سلسلة من الأحرف الكبيرة أو الضغط مع الاستمرار على لوحة مفاتيح الهاتف للحصول على محرف بديل للمحرف الظاهر على الزر. ملحقات فيم Vim plugins من أبرز ميزات فيم هي قابليته للتوسيع أي يمكن إضافة ميزات إليه من خلال الملحقات مثل أنظمة الألوان البسيطة ومديري الملفات file managers وغيرها وهذه الملحقات كثيرة ويمكن اختيار المفيدة منها أو جميعها من خلال موقع Vim Awesome المخصص لملحقات فيم، وبعد اختيار الملحقات المطلوبة يمكن تثبيتها يدويًا أو باستخدام مدير حزم Vim مثل Vim-plug. تعد الملحقات عامل جذب يجذب المستخدمين الجدد لاستخدام المحرر فيم حيث تساعدهم على استخدام فيم بالشكل المطلوب تمامًا وبسهولة استخدام كبيرة دون تعقيد. تعلم فيم واحترف استخدامه ستشعر في الفترة الأولى من استخدام فيم وكأن شخصًا ما أعاد ترتيب مفاتيح لوحة المفاتيح بدون علمك وسرق منك الفأرة، بالإضافة لبعض الضغط نتيجة التركيز على حفظ وتذكر الأوامر المهمة ولهذا السبب توجد بعض المصادر التي تساعدك على البدء وتكوين أساس متين مثل سلسلة "مدخل إلى محرر Vim" المكونة من ثلاث مقالات وهي: تعرف على أساسيات Vim - الجزء الأول تعرف على أساسيات Vim - الجزء الثاني إدارة إضافات vim كما تتوفر مقالات أخرى مثل مقال مميزات محرر النصوص Vim لرفع إنتاجية العمل ومقال مقارنة بين محرر النصوص فيم Vim ونانو Nano ننصحك بالرجوع إليها. يتطلب تعلم فيم واحترافه بعض التدريب وبعد فترة بسيطة سيصبح استخدامه سهلًا للغاية وستلاحظ أنك شارد الذهن وتستخدم زر Esc في جميع تطبيقاتك المفضلة دون انتباه. ترجمة -وبتصرف- للمقال What is Vim?‎.
  8. صُمِّم محرر النصوص إيماكس Emacs لأنظمة تشغيل بوزيكس POSIX وهو متاح لكل من لينكس Linux وماك mac وويندوز Windows ونظام بي إس دي BSD، تتباين الآراء حوله فهو المحرر المفضل للكثيرين بسبب امتلاكه أوامر فعالة تطورت باستمرار لمدة 40 عامًا والتي تكسبه العديد من المزايا مثل إضافة الملحقات وتعديل إعدادات الضبط وتنفيذ الإجراءات الشائعة والمعقدة، بينما يعتبره آخرون محرر نصوص معقّد وغامض لأنه محرر قديم جرى تطويره قبل وجود مصطلحات الحاسوب الحديثة فهو يستخدم مصطلحات مثل "زُر visit" بدلًا من "افتح opening" ومصطلح "اكتب write" بدلًا من "احفظ save". لا يمكن اتخاذ قرار حوله بهذه السرعة، لذا يساعدك هذا المقال بالاطلاع على كل تفاصيله وخصائصه. مشروع جنو إيماكس GNU Emacs في الفترة الأولى للحوسبة لم تكن معالجات الكلمات موجودة على الإطلاق وكانت محررات النصوص بالكاد موجودة، حيث أن محرر النصوص هو في الأساس معالج كلمات بدون أي مزايا مثل تنسيق وتصميم الصفحة أو تغيير نوع الخط وكانت بدائية لدرجة أنها لا تفتح حتى مستند نصي كامل مرة واحدة. كان محرر النصوص عبارة عن أمر برمجي يؤدي وظائف محددة مثل توليد كلمات وإضافتها إلى ملف نصي أو البحث عن كلمات معينة في الملف واستبدالها بكلمات أخرى أو إزالة أسطر من ملف، أي يلزم وقت طويل لتنفيذ عدة أوامر وبذلك يصبح تحرير المستندات الكبيرة عملية مملة، لذلك بدأ الأشخاص في تطوير ماكرو macros وهي تعليمة جامعة لأداء المهام الشائعة ذات الصلة، حيث أصدر د. ريتشارد ستالمان Richard Stallman في عام 1983 مجموعة من الماكرو الخاصة به تحت اسم ماكرو التحرير أو emacs للاختصار. عندما بدأ د. ستالمان مشروع جنو أصبح Emacs أحد أكثر تطبيقاته نجاحًا وامتلك إيماكس عدة إصدارات ولكن GNU Emacs هي النسخة الأكثر شيوعًا. خصائص المحرر Emacs يمتلك إيماكس العديد من الخصائص التي تجعله خيارًا مفضلَا للكثيرين من مختلف التخصصات والاهتمامات، من أهمها أنه مجاني وغيرها من الخصائص نذكرها تاليًا. قلة استهلاك موارد النظام إيماكس صغير الحجم بالمقارنة مع محررات البرمجة الحديثة التي تستخدم محركات متصفح الويب وخوادم جافا سكريبت كواجهة خلفية لها، ويعد محرر بسيط مكتوب بلغتي سي C وليسب Lisp لذا لا يكاد يستهلك شيئًا من موارد النظام مع أنه يفعل أكثر بكثير من مجرد تحرير النص مما يجعله أداة مهمة. الاعتماد على مجموعات لوحة المفاتيح يستخدم إيماكس مجموعات لوحة مفاتيح تختلف اختلافًا جوهريًا عن الطريقة التي تستخدمها المحررات الحديثة، وهذا لأنه مصمم ليكون مرنًا في كيفية استخدامه وخاصةً ضمن الأجهزة التي لا تحتوي على لوحات المفاتيح التقليدية وعبر الشبكات التي قد لا تنقل مفاتيح التعديل مثل Ctrl و Alt بشكل صحيح. تعتمد هذه المجموعات على مفتاحي Ctrl و Alt، يتم تمثيل مفتاح Ctrl في التوثيق على أنه C ومفتاح Alt على أنه M (لأنه قبل أن يسمى Alt كان يطلق عليه اسم "Meta"). لاستخدام مفتاح آخر مع مفتاح Ctrl، تُكتب التعليمة بالصيغة C-x (بمعنى Ctrl + X) أو بالصيغة C-c (بمعنى Ctrl + C)، وينطبق الأمر نفسه على مفتاح Alt فإن التعليمة M-xتعني الضغط على مفتاحي Alt-X. تكون بعض مجموعات لوحة المفاتيح عبارة عن تسلسل من مجموعات أبسط، فمثلًا لفتح ملف نكتب C-x للدخول إلى وضع الأوامر ثم C-f للعثور على الملف المطلوب فتحه، ولتقسيم نافذة التحرير أفقيًا (تسمى المخزن المؤقت buffer في Emacs)، نضغط على C-x ثم الرقم 2. يرتبط كل إجراء تقريبًا في إيماكس بدالة في Lisp تنفذّ هذه الإجراء، وإذا كان هناك تابع تريد استدعائه ولم يتم ربطه بعد فيمكنك فقط كتابة اسم التابع في مخزن الأوامر المؤقت command buffer تمامًا كما تفعل مع تشغيل تطبيق في سطر أوامر لينكس، على سبيل المثال لتنشيط وضع بايثون Python تضغط على ما يلي: M-x ثم تختار python-mode ثم تضغط Return. إذا لم يمتلك جهازك مفتاح Alt فيمكنك استبداله بمفتاح Esc لكنه سيعمل بشكل مختلف عنه حيث يجب الضغط على Esc وتحريره ثم الضغط على المفتاح المرتبط به وتحريره، فمثلًا لكتابة الاختصار M-x يجب أولًا الضغط على Esc وتحريره ثم الضغط على X وتحريره، وحتى إذا لم يمتلك جهازك مفتاح Alt أو Esc فيمكنك إعادة تعيين مفاتيح أخرى حسب الحاجة. تبعد خاصية مجموعات لوحات المفاتيح بعض المستخدمين عن إيماكس، لأن كل عملية فيه هي دالة إجرائية يمكن استدعائها بمزيج من اختصارات لوحة المفاتيح بالتالي يحتاج المستخدم دومًا إلى تذكر هذه الاختصارات مما يجعله صعب التعلم فحتى عند تذكر الجزء الأول من مجموعة لوحة المفاتيح لا يزال هناك الجزء الثاني الذي يجب تذكره وهو ما يشبه إلى حد ما تعلم العزف على البيانو، من ناحية التركيز على المفاتيح وحركات اليد والأصابع، أي يتطلب إتقان إيماكس بعض التدريب وبمجرد التعود عليها تتداخل أوامر المحرر مع عملية نقل الأفكار إلى كلمات ويصبح التفاعل سلسًا ويرتبط إنشاء المحتوى بتحريره سواء كان المحتوى تعليمات برمجية أو مستندات إبداعية وشخصية. المرونة وقابلية التخصيص يمتلك إيماكس خيارين للتشغيل تبعًا لرغبة المستخدم، حيث يمكن تشغيله في واجهة المستخدم الرسومية وهو ما يُسهّل تعلم البرنامج، أو داخل نافذة سطر الأوامر وهو الخيار الأنسب لمديري الأنظمة ومطوري الويب أو أي شخص يحتاج إلى تحرير النص عن بُعد، كما يمكن استخدام إيماكس كَوكيل client أي يمكن تشغيله في الخلفية ثم الاتصال به من نافذة أخرى أو من جهاز آخر. قابلية للنقل يُكتب إيماكس بشيفرة قائمة على الوحدات modular code لذا يُبنى في صيغة مبسطة مع عدد قليل من الاعتماديات وهذا ما يجعل نقله إلى أنظمة أخرى سهلًا وبالتالي لا يوجد نظام حاسوب سواء كان قديمًا أو جديدًا، شائعًا أو متخصصًا إلا ويمكنه تشغيل إيماكس أو على الأقل نسخة منه ذات الحد الأدنى من الإمكانيات، حيث أن جميع إصدارات إيماكس قابلة للنقل بسهولة ولا تتطلب أكثر من مكتبة C وواجهة سطر الأوامر. متعدد الأوضاع modes يمتلك إيماكس مجموعة من الأوضاع وهي عبارة عن ملحقات plugins تغيّر أداء إيماكس حسب عمل المستخدم فيه، ومن هذه الأوضاع: وضع Org لتنظيم الأمور اليومية وإدارة المفكرة وضع Deft لتدوين الملاحظات وضع Fountain لكتابة النصوص السينمائية وضع Muse لكتابة الأوراق والمقالات العلمية وضع SES لجداول البيانات وضع Python لكتابة شيفرات برمجية بلغة بايثون وضع سكربت صدفة Shell يرمز له Sh، لتحرير Bash وضع nXML لتحرير XML بالإضافة إلى الأوضاع، هناك تطبيقات مخصصة لإيماكس مثل: صدفة لتشغيل الأوامر على النظام الذي يشغل إيماكس مدير ملفات قائم على النصوص لتصفح الملفات عارض صور ومشغل وسائط متعددة واجهة رسوم توضيحية بدائية للمساعدة في رسم مخططات انسيابية flowcharts واجهة Git وكيل بريد إلكتروني لذا مهما كانت حاجة المستخدم سيجد وضع أو تطبيق أو حزمة لتلبيتها، كما يوفر لعبة Tetris لتمضية وقت الملل. مفتوح المصدر أكثر التطبيقات القابلة للبرمجة اليوم هي جداول البيانات المكتبية office spreadsheets كونها لا تتطلب خبرة في البرمجة على الإطلاق بل تعتمد على الصيغ والماكرو مما يساعد الكثير من الأشخاص على تصميم تطبيقات معقدة وفعالة، وبالطبع هناك حدود لإمكانيات جداول البيانات لذا إن كانت فكرة تطبيقك لا تتناسب تمامًا مع بنية الجداول فقد تعمل بشكل أفضل كنص عادي، وهذا ما حدث مع إيماكس فهو محرر نصوص عن طريق الخطأ فقط. بدأ إيماكس كمجموعة من الماكرو المفيدة التي تهدف إلى تحرير النص، إلا أن بنية التطبيق بدأت بشيفرة برمجية بلغة سي C التي تنتج مترجم Lisp، مما يجعل إيماكس طريقة عزل لحماية شيفرة ليسب Lisp أي إذا تعلمت Elisp وهو اختصار Emacs Lisp، يمكنك تعديل التطبيق الذي تقوم بتشغيله أثناء تشغيله ولا يتطلب تنزيل الشيفرة المصدرية أو تصريفها بعد كل تغيير، ويمكن إنشاء أي بيئة على الفور حسب رغبة المستخدم بمهارة ودقة. يتيح إيماكس الاطلاع على الشيفرة التي تؤثر على بيئة العمل وتعديلها أو تغييرها وتكون الشيفرة موثقة، والبناء فوق العمل الذي أنشأه الآخرون، والتحكم في الأدوات وتخصيصها. ابدأ باستخدام إيماكس تختلف مصادر تثبيت إيماكس تبعًا لنظام التشغيل المُستخدَم، لتثبيته على نظام لينكس Linux أو نظام بي إس دي BSD يجب الذهاب إلى مستودع التوزيع عبر مدير الحزم وتنزيله منها، أما على أنظمة ماك Mac وويندوز Windows، يمكن تنزيله وتثبيته من موقع GNU Emacs. نجد أن إيماكس كغيره من المحررات يمتلك إيجابيات وبعض السلبيات، وحتى مع وجود هذه السلبيات وبمجرد تعلم أساسياته ستمتلك محررًا قويًا وفعالًا وقابلًا للتعديل وتوسيع إمكانياته بشكل كبير دومًا، لذا نرى أنه خيار يستحق النظر والتجربة. ترجمة -وبتصرف- للمقال What is Emacs?‎. اقرأ أيضًا مدخل إلى كتابة سكربتات الصدفة Shell Scripts مميزات محرر النصوص Vim لرفع إنتاجية العمل الأدوات المستخدمة في بناء مواقع ويب مدخل إلى صدفة باش Bash
  9. على الرغم من امتلاك نظام لينكس ميزات كثيرة إلا أن ويندوز لا يزال النظام الأكثر شيوعًا من ناحية الاستخدام، لذا نقدم في هذا المقال عشر خيارات لتجريب نظام لينكس ويتيح كل منها استكشاف النظام والتعرف عليه ومعرفة مزاياه، يمكن للمستخدم اختيار أي طريقة حسب رغبته. 1. تجربة صدفة لينكس Free shell يقوم العديد من مديري الأنظمة بإعادة استخدام أجهزة الحاسوب المهملة عن طريق إنشاء حسابات صدفة مجانية والتي تتيح استخدام طرفية لينكس في تعلم الأوامر وأساسيات تطوير الويب ولغة بايثون Python بالإضافة إلى كتابة سكربت لينفذ في الصدفة، جميع هذه الميزات مجانية وتختصر وقت عمل المستخدم، وفيما يلي قائمة ببعض الخيارات: الخيار الأول Freeshell.de وهو نظام لينكس متاح بشكل عام ويعمل منذ عام 2002 ويسمح للمستخدم بالحصول على وصول إلى الصدفة الآمنة عبر SSH أو IPv6 و OpenSSL لتجريبها في صدفة لينكس بالإضافة إلى إمكانية طلب قاعدة بيانات MySQL. الخيار الثاني Blinkenshell يعمل هذا النظام منذ عام 2006 ويوفر صدفة لينكس لتعلم يونكس Unix واستخدام الدردشة عبر الإنترنت IRC وتأمين استضافة لمواقع ويب بسيطة ومشاركة ملفات. الخيار الثالث نظام الوصول العام في يونكس SDF تم تأسيسه عام 1987 لتقديم حسابات NetBSD مجانية حيث أن NetBSD لا يعد لينكس ولكنه يونكس مفتوح المصدر لذا يقدم تجربة مماثلة، كما أنه يمتلك العديد من التطبيقات يمكن تنزيلها بواسطة مدير الحزم homebrew مما يجعله الفاصل بين النهج القديم BBS والصدفة القديمة المجانية. غالبًا ما يُساء استخدام حسابات صدفة المجانية لذا يتوجب على مستخدمي هذه الحسابات إظهار الوفاء والاستعداد للمشاركة في نشاطات المجموعة ومن خلال طلب خاص أو تبرع صغير لإثبات حسن النية، يمكن حينها الوصول إلى المُصرّفات ولغات البرمجة المتقدمة بالإضافة إلى مشغّلات قواعد البيانات وطلب تثبيت برامج ومكتبات إضافية والتي تساعد على تحسين تجربته وتتم الموافقة على الطلب من قبل المدير المسؤول. على الرغم من أن هذه الطريقة تعد رائعة لتجريب نظام لينكس حقيقي ولكن لا يحصل المستخدم فيها على صلاحيات المستخدم الجذر root لذلك عليه تعلم إدارة البرامج المحلية دون الدخول في التفاصيل. 2. استخدام لينكس على ويندوز بواسطة WSL 2 بدأت شركة مايكروسوفت منذ حزيران عام 2019 بإصدار لينكس مع ويندوز مما يتيح تشغيل تطبيقات لينكس من ويندوز باعتباره التكرار الثاني لنظام ويندوز الفرعي لنظام لينكس وهو اسم الطريقة WSL 2 أي Windows Subsystem for Linux والرقم 2 يرمز إلى التكرار الثاني. تستهدف هذه الطريقة بشكل أساسي المطورين وسيجد مستخدمو ويندوز أن WSL 2 هي بيئة لينكس من سطح مكتب مريح ومألوف بدون طرق وهمية تستهلك موارد إضافية. تعتبر WSL أداة تطويرية وتعليمية وسهلة التعلم ويحصل المستخدم فيها على صلاحيات مدير النظام ويتمكن من تشغيل توزيعات لينكس وتطبيقاته لكنها لاتزال في مراحلها الأولى والعمل عليها مستمر لذا فهي عرضة للتغيير وقد يواجه المستخدم أخطاء أثناء العمل عند استخدامها في أمور معقدة، كما لا تمتلك مسارًا واضحًا للاستخدام حتى الآن ولا تغطي جميع تفاصيل التجربة الواقعية مما يجعلها تجربة غير مثالية وتناسب فقط المستخدم الذي يرغب فقط بتجريب لينكس، وتتطلب منه تعلم بعض الأوامر الأساسية في لينكس لتساعده على إنجاز الأعمال البسيطة في هذه البيئة. 3. تحميل لينكس على محرك أقراص عبر منفذ USB يحصل المستخدم في هذه الطريقة على نظام لينكس محمول، يمكن الاحتفاظ به وتشغيله على أي جهاز حاسوب في أي مكان مع عدم تأثر بيانات الجهاز المُضيف أو بيانات نظام لينكس أبدًا مما يجعلها طريقة مناسبة لأجهزة الحاسوب العامة في المدارس والمكتبات ومراكز الأعمال التجارية في الفنادق، كما يمكن استخدامها كمنصة حوسبة أساسية في رحلات السفر الخاصة بالعمل، ويمكن اعتبارها نسخة احتياطية لحالات المشاكل والأعطال التي تواجه نظام تشغيل الحاسوب، أو حتى بهدف استخدام نظام لينكس من فترة لأخرى. توفر هذه الطريقة توزيعة لينكس كاملة ومستقرة وموثوقة ومزودة ببيئة سطح مكتب قابلة للتخصيص وتتيح الوصول إلى جميع البرمجيات، كما تكون مشابهة تمامًا لبيئة لينكس الواقعية إلا أنه يوجد القليل من التفاصيل لا يمكن القيام بها على نظام التشغيل المحمول. تخزين البيانات فيها مستمر ولكنه يتم بشكل مختلف قليلًا، حيث يتم حفظ البيانات في نظام ملفات مضغوط والذي يتم تطبيقه بعد ذلك كتراكب على النظام عند الإقلاع، تتيح هذه المرونة خيارات في الإقلاع فإما يتم الإقلاع في الوضع الدائم، أو حفظ جميع البيانات مرة أخرى على قرص التخزين، أو الإقلاع في الوضع المؤقت والذي يختفي فيه كل ما تم تنفيذه بمجرد إيقاف التشغيل، أي استخدامه كنظام آمن ومحدود النطاق على حاسوب غير موثوق أو كنظام تشغيل محمول على أجهزة الحاسوب الموثوقة. يوجد العديد من التوزيعات المماثلة التي يمكن تجربتها يحتوي بعضها على الحد الأدنى من بيئات سطح المكتب لحواسيب منخفضة الطاقة والبعض الآخر مزود بسطح مكتب كامل، منها Porteus Linux وهي نظام تشغيل لينكس متكامل ومحسن ليتم تشغليه بهذا الشكل، ولإنشاء نسخة من التوزيعة على محرك أقراص مصغر قابل للإقلاع يجب تنزيل Fedora Media Writer مثلًا سواء على نظام ماك أو ويندوز. 4. التجول في لينكس والتعرف عليه بعيون الآخرين مشاهدة التجربة جزء من التجربة، ومن ذلك يمكنك البحث عبر الإنترنت ومشاهدة الفيديوهات التعريفية والشروحات عن لينكس وتجربته وكل ما يتعلق به وبها تأخذ فكرة أوسع عن النظام وواجهته والتعامل معه من الآخرين وكأنك استعرت أعينهم لتنظر عبرها. تناسب هذه الطريقة مستخدمي لينكس الجدد وتعطيهم شعور الألفة مع النظام وتزودهم بنظرة عامة حول بيئته والتطبيقات المتاحة وشكل سطح مكتب لينكس وغير ذلك بناءً على خبرة وتجربة الآخرين لذا فهي مجرد جولة استطلاعية فعليًا قبل البدء بالتجربة العملية. 5. تشغيل لينكس في المتصفح بواسطة جافا سكربت JavaScript منذ وقت ليس بعيد كانت الأنظمة الوهمية مكلفة من ناحية الحوسبة ومتاحة فقط للمستخدمين الذين يمتلكون أجهزة متميزة، أما الآن تم تحسينها لدرجة أنه يمكن تنفيذها بواسطة محرك جافا سكربت وذلك بفضل فابريس بيلارد Fabrice Bellard وهو مبتكر المحاكي الممتاز والمفتوح المصدر QEMU. بدأ بيلارد Bellard أيضًا مشروع JSLinux الذي يسمح بتشغيل لينكس وأنظمة التشغيل الأخرى في المتصفح ولا يزال مشروعًا تجريبيًا لكنه سيكون أعجوبة تقنية. تتيح هذه الطريقة تشغيل لينكس على نظام أساسي بدلًا من تشغيله على حاسوب قديم عديم المزايا، وتتطلب فتح متصفح الويب على صفحة JSLinux فقط ثم يمكن للمستخدم تشغيل صدفة لينكس أو نظام لينكس مزود بواجهة رسومية مبسطة، كما يمكنه تحميل وتنزيل الملفات إلى مضيف JSLinux الخاص بالمستخدم أو (نظريًا) إرسال الملفات إلى موقع نسخ احتياطي للشبكة لأن JSLinux لديه إمكانية الوصول إلى الإنترنت من خلال مقبس VPN (على الرغم من السرعات المحددة إلا أنها تعتمد على خدمة VPN). 6. القراءة عنه هذه هي الطريقة الأقل تقليدية لتجربة لينكس وتناسب المستخدم الذي يفضل ترك مسافة أمان بينه وبين كل شيء جديد عنه ويفضل المراقبة والبحث والاستفسار قبل البدء بالتجربة الفعلية، كما تناسب من لا يملك فكرة واضحة حول ما يشمله لينكس. يتوفر الكثير من المعلومات حول كيفية عمل لينكس وطريقة تشغيله واستخدامه وما يحدث في عالم لينكس، وكلما تعمق المستخدم أكثر في معرفة عالم الأنظمة والبرامج مفتوحة المصادر أصبح من السهل عليه فهم لينكس والحصول على معلومات أكثر دقة بدلًا من المعلومات الشائعة والكلام العام. يوجد الكثير من الكتب لهذا الهدف لكن يُنصح بكتاب سحر لينكس The Charm of Linux للكاتب Hazel Russman، وكتاب دليل خوادم أوبنتو وكتاب سطر أوامر لينُكس، بالإضافة إلى العديد من المقالات المتوفرة على أكاديمية حسوب. 7. بواسطة راسبيري باي Raspberry Pi راسبيري باي مُصمّم ليكون حاسوبًا ذا تكلفة منخفضة (أقل من 100 دولار) وذو استهلاك منخفض للطاقة لذا لا يدعم إمكانية تعدد المهام كما في طرق أخرى بل يناسب الأعمال محدودة المهام. استخدامه يعني تشغيل لينكس ويمكن الاستعانة بدليل إرشادي عن طريق موقع الويب الخاص به للحصول على معلومات حول جميع إمكانيات راسبيري باي ولينكس. تمنح هذه الطريقة إمكانية تعلم لينكس وجميع خياراته وتعطي صورة واضحة عن قوة الحوسبة المبسّطة صغيرة الحجم والصديقة للبيئة. 8. بالاعتماد على الحاويات يعلم الغالبية الإمكانيات المتطورة للحاويات، حيث يمكن استخدام دوكر وكوبيرنيتيس على أنظمة التشغيل ويندوز وAzure وماك ولينكس ولكن مالا يعلمه الكثير هو أن الحاويات هي نفسها لينكس، حيث تعد كل من تطبيقات الحوسبة السحابية والبنية التحتية أنظمة لينكس مصغرة تعمل جزئيًا بشكل وهمي وجزئيًا في بيئة مجردة bare metal والتي تُثبّت فيها الأجهزة الافتراضية مباشرةً على العتاد hardware بدلًا من تثبيتها في داخل نظام التشغيل المضيف. فعند تشغيل حاوية فإن ما يتم تشغيله هو توزيعة لينكس مصغرة شديدة التحديد ولكن تختلف الحاويات عن الأجهزة الافتراضية أو الخوادم الفعلية بحيث لا يتم استخدامها كنظام تشغيل للأغراض العامة، ومع ذلك يمكن لمطوري الحاويات معرفة كيفية هيكلة بنية نظام لينكس ومكان حفظ الملفات المهمة والأوامر الأكثر شيوعًا. تعتبر الحاويات مصممة لتكون خاصة بمهمة واحدة ولكن باعتبارها لينكس هذا ما يجعلها مرنة ويمكن استخدمها حسب ما هي مصممة لأجله أو استخدامها بهدف تجريب لينكس ومع أنها لا تعتبر تجربة مناسبة لحاسوب المستخدم ولكنها تجربة لينكس كاملة ويمكن تجربتها عبر الانترنت. في هذا الصدد، يمكنك الرجوع إلى مقال أبرز المفاهيم التي يجب عليك الإلمام بها عن الحاويات ومقال دليل لفهم حاويات لينكس وكيفية التعامل معها. 9. تثبيت لينكس على جهاز وهمي تعد برامج الأنظمة الوهمية أبسط وأسهل طريقة لتجريب أي نظام تشغيل ويوجد العديد من هذه البرامج أشهرها برنامج VirtualBox وهو مفتوح المصدر ويعمل على أي نظام تشغيل مُضيف مثل ويندوز وماك، انظر هنا مقال تثبيت نظام لينكس داخل نظام ويندوز في بيئة وهمية. تمتلك هذه الطريقة كل ميزات التجربة الواقعية وتتميز بالبساطة وسهولة الاستخدام حيث يمكن استخدام هذا النظام الوهمي كما لو كان مجرد تطبيق في الحاسوب، وتُستخدم إما كنسخة تجريبية لنظام لينكس أو كحالة خاصة عند الحاجة إلى بيئة لينكس مما يوفر بديلًا عن استخدام نظامي تشغيل سويًا والتي تعد معقدة وغير مرغوبة وتتطلب عملية إعادة التشغيل مع كل مرة يحتاج المستخدم فيها لتبديل النظام الحالي إلى النظام الثاني. يتميز النظام الوهمي بالانعزال فمن غير الممكن أن يتم تثبيته عن طريق الخطأ على نظام التشغيل المضيف، ويستخدم عتاد وهمي لذا فإن نظام التشغيل المضيف يقود الأجهزة الملحقة كلوحة المفاتيح والفأرة غيرها من وحدات الإدخال والإخراج. العيب الوحيد لهذه الطريقة هو حصر استخدام النظام في مهمات محدودة وضرورة العودة إلى نظام التشغيل المضيف لتنفيذ المهمات الأساسية. 10. تثبيت لينكس كنظام تشغيل أساسي في حال عدم اتخاذ القرار بشأن الطريقة الأنسب بين الطرق المذكورة سابقًا لتجريب لينكس هناك دومًا الطريقة التقليدية وهي تنزيل لينكس كنظام التشغيل الأساسي على الحاسوب. نظام لينكس مفتوح المصدر مما يعني أنه يمكن لأي شخص أن يقوم بتجميع لينكس وجميع البتات والأجزاء التي تجعله قابلاً للاستخدام في ما يسمى عادةً بالتوزيعة، إذ يوجد العديد من التوزيعات ولا يمكن تحديد أي توزيعة هي الأفضل لأن الأمر نسبي تبعًا لاحتياجات المستخدم وعمله لذا ينصح عادةً بتجريب بعض التوزيعات الشائعة قبل اختيار التوزيعة الأنسب، فمثلًا عند الحاجة إلى استخدام كاميرا الويب وأثناء تجريب توزيعة فشلت في التعرف على كاميرا الويب يجب الانتقال لتوزيعة أخرى تتعرف على كاميرا الويب، كما يمكن الاطلاع على مقال عرض موجز لأشهر توزيعات لينكس الذي يقترح مجموعة من توزيعات لينكس المناسبة مهما كانت خبرة وإمكانيات المستخدم. خطوات التثبيت سهلة ولا تتطلب خبرة سابقة وتتضمن: تنزيل التوزيعة والتي تكون عبارة عن ملف ISO، ثم تنزيل Fedora Media Writer والذي يقوم بإنشاء مثبت على قرص تخزين خارجي أو قرص DVD ومن ثم تثبيت نظام لينكس على جهاز الحاسوب، ويمكن ذلك إما عبر تثبيت لينكس مع نظام ويندوز، أو بتثبيت لينكس بمفرده كنظام تشغيل أساسي وللفائدة يمكن الاطلاع على خطوات تثبيت توزيعة أوبنتو من لينكس. بعد الاستخدام سيكتشف المستخدم ميزات لا غنى عنها على الرغم من عدم معرفته بها مسبقًا. باختيار أي طريقة مما سبق لخوض تجربة لينكس سيجد المستخدم أن التجربة تستحق عناء التعلم. ترجمة -وبتصرف- للمقال ‎10 ways to get started with Linux لصاحبه Seth Kenlon. اقرأ أيضًا دورة علوم الحاسوب ما هو نظام التشغيل لينكس؟ تثبيت نظام لينكس داخل نظام ويندوز في بيئة وهمية مرجع إلى أشهر أوامر لينكس تثبيت لينكس مع نظام ويندوز
  10. يعد Ansible أداة لأتمتة المهام التقنية البسيطة ويتميز ببنية دفع push على عكس الأدوات المشابهة له والتي تعتمد على نموذج السحب pull الشائع. يتكون Ansible من أدلة التشغيل playbooks والوحدات modules، يحتوي دليل التشغيل على تسلسل من الوحدات لتنفيذها، أما الوحدات فهي من يقوم بالعمل المطلوب. الوحدات modules هي عبارة عن برامج صغيرة تُرسل إلى العقد بعد الاتصال بها ليتم تنفيذها عن بُعد وعند انتهاء مهمتها يتم إزالتها، تحتوي هذه البرامج على إعدادات الضبط ويتم دفعها إلى خوادم بلا وكلاء. تتخصص كل وحدة بتنفيذ مهمة معينة، فمثلًا تقوم وحدة بإنشاء ملف جديد وتقوم أخرى بتثبيت برمجية ما كما تقوم أخرى بتشغيل برنامج ما وهكذا لذا يوجد عدد كبير من الوحدات والتي تُضمَّن بواسطة نموذج وحدات Ansible الشامل. تمكننا الوحدات من إدارة كل ما يمتلك واجهة برمجة تطبيقات API أو واجهة سطر الأوامر CLI أو ملف ضبط إعدادات قابل للتعديل يمكن التفاعل معه، ويشمل ذلك أجهزة الشبكة مثل موازِن الحمل والمبدل وجدار الحماية ومنسق الحاويات والحاوية نفسها وحتى نُسَخ الآلات الوهمية في مراقب Hypervisor أو في سحابة عامة cloud مثل AWS و GCE و Azure أو السحابة الخاصة مثل OpenStack و CloudStack، بالإضافة إلى أجهزة التخزين والأمان وضبط النظام. طريقة بناء الوحدات تُكتب إعدادات الضبط بشكل سكربتات صغيرة في ملفات YAML وتُرسل عبر الشبكة بواسطة SSH / WinRM أو أي ملحق اتصال آخر إلى الخوادم التي يُراد تنفيذها عليها، ويمكن الكتابة باستخدام أي لغة قادرة على إرجاع صيغة JSON على الرغم من أن معظم وحدات Ansible (باستثناء Windows PowerShell) مكتوبة بلغة بايثون Python باستخدام واجهة برمجة تطبيقات Ansible وهذا ما يسهل تطوير وحدات جديدة. الملحقات تعد الملحقات إحدى طرق توسيع قدرات Ansible ويمكن للبدائل الأخرى مثل الملحقات والقوائم الديناميكية أن تزيد أيضًا من قوة وفعالية Ansible وتنقسم الملحقات إلى عدة فئات ذات أهداف مختلفة لكل فئة ومن الملحقات الأكثر شيوعًا: ملحقات الاتصال Connection: تنفذ هذه الملحقات طريقة للتواصل مع الخوادم الموجودة في قائمة الخوادم، أي كيفية نقل شيفرة التشغيل الآلي عبر الشبكة ليتم تنفيذها مثل: SSH و WinRM و Telnet. ملحقات المرشحات Filters: تسمح للمستخدم بمعالجة البيانات داخل دليل التشغيل الخاص به، وهذه ميزة Jinja2 وتستخدم لحل مشاكل عملية IaC وهي اختصار infrastructure-as-code أي بنية تحتية كشيفرة والتي يتم فيها إدارة وتوفير البنية التحتية من خلال الشيفرة البرمجية بدلًا من العمليات اليدوية. ملحقات البحث Lookup: تجلب البيانات من مصدر خارجي مثل ملف أو قاعدة بيانات أو ملفات بيئة env، أو نظام البحث هيرا Hiera أو أداة تخزين واسترجاع البيانات السرية فاولت Vault من شركة HashiCorp أو غيرها. يوجد أمثلة أخرى للملحقات وهي Action و Cache و Callback و Vars، ويمكن الاستعانة بتوثيق Ansible الرسمي لتطوير الملحقات. تطوير الوحدات على الرغم من امتلاك Ansible لمئات الوحدات إلا أنه قد يوجد مشكلة ما لم تتم تغطيتها بعد أو أنها شيء محدد للغاية كحل محلي في مؤسسة معينة، عندها يمكن تطوير وحدة جديدة تناسب الاحتياجات ولكن يجب التحقق بدايةً من وجود هذه الوحدة مسبقًا أو أنها قد التطوير حاليًا، وذلك من خلال التواصل مع المطورين في قناة (IRC/Freenode) في ansible-devel# أو البحث في قائمة التطوير أو مجموعات العمل الحالية. قد تتساءل متى يجب تطوير وحدة جديدة؟ الحالات التالية تدل على أنك بحاجة إلى تطوير وحدة جديدة بدلًا من الاعتماد على وحدة حالية موجودة بالفعل: طرق إدارة الضبط التقليدية لا تحل مشكلة ما بشكل صحيح مثل القوالب والملف وتعديل سطر محدد في ملف الحصول على محدِّد الموارد المُوحَّد get_url لتحقيق الهدف المطلوب يلزم استخدام مجموعة معقدة من الأوامر وبيئات سطر الأوامر والمرشحات ومعالجة النصوص باستخدام magic regexes واستدعاءات واجهة برمجة التطبيقات API باستخدام curl. أدلة التشغيل الخاصة بالمستخدم ضرورية ولكنها معقدة وغير مستقرة وتعطي نتائج مختلفة مع كل تنفيذ. تحتوي الأداة أو الخدمة في الحالة المثالية على واجهة برمجة تطبيقات أو واجهة سطر الأوامر CLI للإدارة وتقوم بإرجاع نوع من البيانات المُهيكلة مثل JSON أو XML أو YAML. التأكد من فعالية دليل التشغيل تعد أدلة التشغيل مهمة بنفس أهمية الوحدات حيث يؤثر دليل التشغيل السيء سلبًا على عملية الأتمتة فبدلًا من من تسخير أدوات إدارة الضبط لزيادة السرعة، تجعلنا نواجه نفس المشكلات مثل نهج التشغيل الآلي الأساسي القائم على السكربتات وتنفيذ الأوامر، ويصبح الأمر عبارة عن استخدام Ansible كوسيلة لتسليم السكربتات القديمة ونسخ ما هو موجود مسبقًا إلى ملفات YAML، وفيما يلي مثال على دليل تشغيل سيء: - name: Read a remote resource command: "curl -v http://xpto/resource/abc" register: resource changed_when: False - name: Create a resource in case it does not exist command: "curl -X POST http://xpto/resource/abc -d '{ config:{ client: xyz, url: http://beta, pattern: *.* } }'" when: "resource.stdout | 404" # Leave it here in case I need to remove it hehehe #- name: Remove resource # command: "curl -X DELETE http://xpto/resource/abc" # when: resource.stdout == 1 يعد هذا الدليل سيء لأنه ضعيف ويتطلب شيفرة إضافية ليكون مستقرًا ولا يستطيع تحديث المورد عندما تتغير حالته. لا تحقق أدلة التشغيل المكتوبة بهذه الطريقة العديد من معايير نهج IaC حيث يصعب على المطور قراءتها وإعادة استخدامها وتحديد متغيراتها ولا تلتزم بالنموذج التصريحي المُتبع من قبل معظم أدوات إدارة الضبط، كما تعد غير مستقرة ولا تتقارب مع الحالة المعلنة. أما كتابة دليل التشغيل وفق معايير نهج IaC تجعله يتصف بما يلي: يسهل على المطور قراءته يسهل تحديد المتغيرات أو إعادة استخدامه تصريحي يتم تمثيل الموارد بشكل صحيح في YAML مستقر يتقارب من الحالة المعلنة إلى الحالة الحالية لذا سنعيد كتابة المثال السابق لاتباع معايير نهج IaC كما يلي: - name: XPTO xpto: name: abc state: present config: client: xyz url: http://beta pattern: "*.*" تنفيذ وحدة مخصصة سنستخدم WildFly وهو خادم تطبيق جافا مفتوح المصدر كمثال لتقديم وحدة مخصصة لدليل التشغيل غير الجيد: - name: Read datasource command: "jboss-cli.sh -c '/subsystem=datasources/data-source=DemoDS:read-resource()' " register: datasource - name: Create datasource command: "jboss-cli.sh -c '/subsystem=datasources/data-source=DemoDS:add(driver-name=h2, user-name=sa, password=sa, min-pool-size=20, max-pool-size=40, connection-url=.jdbc:h2:mem:demo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE..)' " when: 'datasource.stdout | outcome => failed' المشكلات: غير تصريحي يقوم JBoss-CLI بإظهار نص عادي كخرج بصيغة مشابهة لصيغة JSON وهو ما يضعف هذا النهج لأننا بحاجة إلى محلل لغوي لهذه الصياغة، حتى المحلل اللغوي الذي يبدو بسيطًا يمكن أن يكون معقدًا للغاية لمعالجة العديد من الاستثناءات. يعتبر JBoss-CLI واجهة فقط لإرسال الطلبات إلى واجهة برمجة تطبيقات الإدارة عبر المنفذ 9990. يعد إرسال طلب HTTP أكثر فاعلية من فتح جلسة JBoss-CLI جديدة والاتصال وإرسال أمر لا تتقارب مع الحالة المرغوبة بل يقوم فقط بإنشاء المورد عندما لا يكون موجودًا لجعل الدليل تصريحيًا ومستقرًا وسهل القراءة ويتقارب مع الحالة المرغوبة بغض النظر عن الحالة الحالية، قد تبدو الوحدة المخصصة لذلك كما يلي: - name: Configure datasource jboss_resource: name: "/subsystem=datasources/data-source=DemoDS" state: present attributes: driver-name: h2 connection-url: "jdbc:h2:mem:demo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" jndi-name: "java:jboss/datasources/DemoDS" user-name: sa password: sa min-pool-size: 20 max-pool-size: 40 أهمية تعلم بناء وحدات مخصصة يوجد العديد من الأهداف التي يستلزم تحقيقها إنشاء وحدات مخصصة وهي: تحسين الوحدات الموجودة تحسين أدلة التشغيل السيئة تجنب وجود أدلة تشغيل سيئة زيادة الإنتاجية بسبب تحسين قدرة المستخدم على تصحيح المشكلات في أدلة التشغيل وحدات Ansible المخصصة تتصف بما يلي: يمكن كتابتها بأي لغة لكن عادةً ما تكون لغة بايثون Python هي الخيار الأفضل أو ثاني أفضل خيار معظم الوحدات التي يتم تسليمها باستخدام Ansible ‏(lib/ansible/modules) مكتوبة بلغة بايثون Python ويجب أن تدعم الإصدارات المتوافقة يكون الخرج المعيار بصيغة JSON طريقة Ansible يجب كتابة الأمر التالي: git clone https://github.com/ansible/ansible.git ثم اتباع المسار ‎/lib/ansible/modules ثم قراءة شيفرة الوحدة الحالية. تكون الأدوات المتاحة هي: Git و Python و virtualenv و pdb وهو مصحح الأخطاء في بايثون، ويمكن الحصول على تعليمات شاملة من خلال الاستعانة بالتوثيق الرسمي. يوجد بديل وهو وضع الوحدة في مجلد library، ويمكن استخدام تصميم المجلد هذا لتعديل أو تصحيح الوحدات الموجودة وهو مناسب للوحدات التي ستُستخدم داخليًا وأسهل في البداية ولا يتطلب أي شيء سوى Ansible وبيئة التطوير المتكاملة IDE ومحرر نصوص، وذلك بالشكل التالي: library/ # تُوضع الوحدات المخصصة هنا في حال وجودها (الأمر اختياري) module_utils/ # تُوضع الأدوات المُساعدة للوحدات المخصصة في حال وجودها هنا filter_plugins/ # تُوضع ملحقات المرشحات المخصصة في حال وجودها هنا، الأمر اختياري site.yml # دليل التشغيل الرئيسي webservers.yml # دليل التشغيل الخاص بطبقة خادم الويب dbservers.yml # دليل التشغيل الخاص بطبقة خادم قاعدة البيانات roles/ common/ # تمثل هذه الهرمية دورًا library/ # يمكن أن تتضمن الأدوار أيضًا وحدات مخصصة module_utils/ # يمكن أن تتضمن الأدوار أيضًا أدوات وحدات مخصصة lookup_plugins/ # أو تتضمن أنواع أخرى من الملحقات، مثل ملحقات البحث في هذا المثال الحل البديل لطريقة Ansible يمكن القيام بذلك بأي أسلوب وحتى باستخدام لغة أخرى، أو يمكن استخدام الصنف AnsibleModule لأنه من الأسهل تمرير صيغة JSON إلى الخرج المعياري (()exit_json(), fail_json) بالطريقة التي يتوقعها Ansible وهي (msg, meta, has_changed, result)، ومن الأسهل أيضًا معالجة المدخلات ([]params) وتسجيل تنفيذها (()log(), debug). def main(): arguments = dict(name=dict(required=True, type='str'), state=dict(choices=['present', 'absent'], default='present'), config=dict(required=False, type='dict')) module = AnsibleModule(argument_spec=arguments, supports_check_mode=True) try: if module.check_mode: # لا ينفذ أي شيء، بل يتحقق فقط من الحالة الحالية ويبلغ عنها module.exit_json(changed=has_changed, meta=result, msg='Fez alguma coisa ou não...') if module.params['state'] == 'present': # يتحقق من وجود مورد # ‫يتحقق من مطابقة الحالة المطلوبة module.params['param_name']‎ مع الحالة الحالية module.exit_json(changed=has_changed, meta=result) if module.params['state'] == 'absent': # يزيل المصدر في حال وجوده module.exit_json(changed=has_changed, meta=result) except Error as err: module.fail_json(msg=str(err)) يسمح وضع التحقق "dry run" بتنفيذ دليل التشغيل أو التحقق فقط مما إذا كانت التغييرات مطلوبة ولا يتم تنفيذها، ويمكن استخدام مجلد module_utils للشيفرة البرمجية المشتركة بين الوحدات المختلفة. للحصول على مثال Wildfly الكامل، يمكن الاطلاع على طلب السحب هذا. إجراء الاختبارات هنالك طريقتان لإجراء الاختبارات، الأولى وفق طريقة Ansible والثانية طريقة بديلة. في طريقة Ansible، يتم اختبار شيفرة Ansible الأساسية بصعوبة حيث تؤدي كل عملية تنفيذ إلى إنشاء بناء في خادم التكامل المستمر CI، و Shippable والذي يتضمن الفحص واختبارات الوحدة واختبارات التكامل، أما بالنسبة لاختبارات التكامل فإنه يستخدم الحاويات و Ansible نفسه لأداء مرحلة الإعداد والتحقق. فيما يلي حالة اختبار مكتوبة في Ansible لنموذج شيفرة الوحدة المخصصة لدينا: - name: Configure datasource jboss_resource: name: "/subsystem=datasources/data-source=DemoDS" state: present attributes: connection-url: "jdbc:h2:mem:demo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" ... register: result - name: assert output message that datasource was created assert: that: - "result.changed == true" - "'Added /subsystem=datasources/data-source=DemoDS' in result.msg" يوجد بديل وهي الطريقة الثانية وذلك عبر تجميع وحدة اعتمادًا على صلاحيات ودور المستخدم، وتوفر قدرًا أكبر من المرونة لاختيار ما يلي: إعداد مبسط كيفية تطوير البنية التحتية الخاصة بالمستخدم: Vagrant و Docker و OpenStack و EC2 كيفية التحقق من اختبارات البنية التحتية: Testinfra و Goss ولكن تتطلب هذه الطريقة كتابة الاختبارات باستخدام إطار العمل pytest بواسطة Testinfra أو Goss بدلًا من Ansible العادي، وفيما يلي مثال كامل داخل دور بسيط: Molecule + Vagrant + pytest: molecule init (داخل roles/). ترجمة -وبتصرف- للمقال What you need to know about Ansible modules لصاحبه Jairo da Silva Junior. اقرأ أيضًا كيف تساعد Ansible على أتمتة مهام بسيطة لإدارة حواسيب المنزل كيف تؤتمت تثبيت ووردبريس على أوبنتو باستخدام Ansible كيفية تثبيت وإعداد Ansible لأتمتة إدارة الإعدادات ونشر التطبيقات على خادوم Ubuntu
  11. أثناء قراءة التعليمات الإرشادية لتثبيت تطبيق ما ستصادف غالبًا مصطلحات مثل فلات باك Flatpak وسناب Snap وآب إيماج AppImage، وربما تكون قد استخدمت أحدها على لينكس بدون أن تعلم، فما هي هذه المصطلحات؟ يُعَد كل من فلات باك وسناب وآب إيماج نظامًا شاملًا للتحزيم packaging، وسنخص بالذكر في هذا المقال نظام فلات باك. المشكلات قبل فلات باك يُعَد تثبيت وإدارة البرمجيات أحد أهم جوانب إدارة نظام لينكس، والتي تزداد صعوبتها بسبب وجود العديد من توزيعات لينكس. وعند استخدام الأنظمة التقليدية لإدارة الحزم بتنسيقات تقليدية deb/rpm، كانت تتواجد المشكلات التالية أثناء محاولة تشغيل برنامج ما في النظام: البحث عن المكتبات اللازمة لعمل البرنامج. الاعتماديات، والتي تعني اعتماد البرنامج في عمله على حزم أخرى. الحاجة لتحقيق التوافق مع مدير الحزم الجديد عند التبديل من توزيعة لينكس الأخرى. لا توفر أمانًا كبيرًا لعمليات تثبيت وإدارة البرمجيات. يمكن لمستخدمي لينكس المحترفين إيجاد أفضل طريقة للتغلب على الصعوبات، ولكن بالنسبة للمبتدئين أو المستخدمين الذين لا يمتلكون وقتًا لتعلم إدارة الحزم أو يجدون صعوبةً بتعلمها أو الخبرة بالبحث عن كل خلل وإصلاحه؛ يكون الأمر صعبًا جدًا، وهنا يأتي دور فلات باك. ما هو فلات باك Flatpak بالتفصيل؟ أسّس ألكسندر لارسون Alexander Larsson فلات باك مفتوح المصدر في صيف عام 2007 ليكون نظامًا مُساعدًا لإدارة الحزم ويتيح نشر البرمجيات وتثبيتها وإدارتها، ويتم تثبيت البرمجيات بلا أي مشكلات ودون الحاجة إلى القلق بشأن الاعتماديات أو زمن التنفيذ أو المكتبات التي يحتاجها البرنامج في عمله أو توزيعة لينكس المستخدمة سواءً كانت التوزيعة تعتمد على ديبيان أو آرتش لذلك يوُصف بالنظام الشامل الذي وفر حلولًا لمعظم مشكلات الأنظمة التقليدية. آلية عمل فلات باك تعمل تطبيقات فلات باك في بيئة معزولة sandbox تحتوي على عدة أمور لتلبية متطلبات تشغيل برنامج محدد مثل زمن التنفيذ والمكتبات المجمعة. وبسبب خاصية العزل، لا يمكن لتطبيقات فلات باك أن تجري أي تغييرات على النظام دون إذن من المستخدم، مما يُحسّن أمان النظام. من أين يمكن الحصول على تطبيقات فلات باك؟ لا يمكن استخدام حزم فلات باك بدون أن توفر توزيعة لينكس المستخدمة خاصية دعم فلات باك، وتتوفر هذه الخاصية افتراضيًا في توزيعات معينة مثل فيدورا Fedora وسولس Solus، بينما تحتاج بعض التوزيعات مثل أوبنتو Ubuntu إلى تثبيت خاصية الدعم يدويًا. لا يقيّد فلات باك المستخدم بمصدر واحد للحصول على البرامج، حيث توجد العديد من مستودعات فلات باك وأشهرها المستودع الخارجي فلات هاب Flathub وهو مركز تطبيقات وبرامج أنشأه فريق فلات باك ويمكن من خلاله نشر البرمجيات وإدارتها، وتوضح الصورة التالية الصفحة الرئيسية لموقع فلات هاب: مزايا وعيوب فلات باك يمتلك فلات باك العديد من المزايا والعيوب كغيره من الأنظمة، سنناقش تاليًا العديد من هذه المزايا والعيوب: مزايا استخدام فلات باك يمكن تشغيل تطبيقات فلات باك على أي توزيعة لينكس. يوفر توافقيةً مستقبليةً أي أنه يلغي مشكلة عدم عمل بعض التطبيقات عند ترقية إصدار توزيعة لينكس (فقد لا تدعم بعض التطبيقات التوزيعات الجديدة). يحل مشكلة الاعتماديات. يوفر في بعض الحالات أحدث وأهم إصدار من برنامج ما. لا يقيد المستخدمين بمورد واحد بسبب عدم اعتماد التوزيع على خادم مركزي. يُحسّن أمان النظام بسبب خاصية التطبيقات المعزولة sandboxed applications. يحقق تكامل مريح مع مركز البرمجيات الموجود على توزيعة لينكس. عيوب استخدام فلات باك لا يدعم نسخة الخادم، أي لا تتوفر منه نسخة للخادم، وهو متاح فقط لأجهزة الحاسوب المكتبي بنظام التشغيل لينكس. امتلاء أسرع لمساحة التخزين، حيث تشغل تطبيقات فلات باك مساحة أكبر على القرص مما تشغله عادةً ملفات deb/rpm، مما يوجب إيجاد طريقة لتفريغ مساحة التخزين. تفقد بعض البرمجيات فعاليتها بسبب خاصية العمل في بيئة معزولة، فقد لا تدعم تطبيقات فلات باك مثلًا سمة GTK المخصصة حسب المستخدم. تثبيت فلات باك يكون فلات باك مثبتًا على بعض توزيعات لينكس مثل توزيعات فيدورا ولا يكون مثبتًا على توزيعات أخرى مثل أوبنتو، لذا سنشرح كيفية تثبيته وضبطه على تلك التوزيعة، أما إن كانت توزيعتك التي تستخدمها مختلفة، فاختر من صفحة التثبيت الرسمية لفلات باك توزيعتك وطبق الأوامر. نفذ الأمر التالي في سطر الأوامر لتثبيت فلات باك على توزيعة أوبنتو لديك: sudo apt install flatpak يجب أن يكون إصدار التوزيعة 18.10 وما بعد ليعمل الأمر بنجاح، أو نفذ الأوامر الثلاثة التالية: sudo add-apt-repository ppa:flatpak/stable sudo apt update sudo apt install flatpak نزل إضافة باسم Software Flatpak حتى تتاح إمكانية تثبيت التطبيقات دون الحاجة إلى سطر الأوامر، وذلك بتنفيذ الأمر التالي: sudo apt install gnome-software-plugin-flatpak أضف المستودع Flathub الذي أشرنا إليه سابقًا حتى تتمكن من الوصول إلى التطبيقات وتثبيتها منه: flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo أعد تشغيل الحاسوب حتى تكتمل عملية التثبيت، وبعدها يمكنك تثبيت التطبيقات، تصفحها من واجهة التطبيق أو جرب تصفح قائمة apps في الموقع الرسمي وثبت التطبيق الذي تريد. استخدام فلات باك عبر سطر الأوامر عمومًا، توفر واجهة فلات باك الرسومية كل ما تريده في عملية إدارة التطبيقات من تثبيت وتحديث وإزالة مثلًا، وهي سهلة ولا تحتاج إلى تفصيل وشرح ونتركك للتعرف عليها بنفسك، ولكن هنالك طريقة أخرى لاستخدام فلات باك وهي عبر واجهة سطر الأوامر وهذا الاستخدام قد يهم بعض المستخدمين خصوصًا من يحبون استعمال سطر الأوامر وليس لعموم المستخدمين كما أشرنا. يعد الأمر flatpak الأمر الأساسي المستخدم ثم تلحق به كافة الأوامر، مثلًا أمر التثبيت يكون flatpak install وأمر الإزالة يكون flatpak uninstall وهكذا. البحث عن تطبيق يمكنك البحث ضمن التطبيقات باستعمال الأمر search، فمثلًا، إن أردت البحث عن تطبيق الرسم GIMP نفذ الأمر التالي: flatpak search gimp سيعيد الأمر أي نتيجة تطابق عبارة البحث، وتمثل تلك النتيجة معرّف التطبيق والمستودع الموجود فيه وهي تفاصيل مهمة لاستعمالها في عملية التثبيت كما يلي. تثبيت تطبيق إن أردت تثبيت تطبيق ما وليكن تطبيق الرسم GIMP الذي بحثنا عنه في الأمر السابق، فاستعمل الأمر التالي: flatpak install flathub org.gimp.GIMP يشير flathub في الأمر إلى المستودع الذي سيثبّت التطبيق منه والجملة التي في آخره org.gimp.GIMP إلى معرف التطبيق وهو GIMP المراد تثبيته، ويتكون المعرف ذاك من 3 أجزاء كما هو واضح آخرها اسم التطبيق. تثبيت أي تطبيق آخر مشابه للعملية ولكن يختلف جزء معرِّف التطبيق أو أحيانًا المستودع المراد تثبيت التطبيق منه أيضًا، وعمومًا وبدءًا من الإصدار 1.2 من فلات باك، أصبح بإمكانك اختصار الأمر السابق بذكر اسم التطبيق فقط كما يلي: flatpak install gimp ستظهر لك رسالة باسم المستودع ومعرف التطبيق لتؤكدها قبل بدء تثبيت التطبيق. أضف إلى ذلك، توفر معلومات التطبيقات المراد تثبيتها عبر ملف ‎.flatpakref والذي يمكن استعماله في عملية التثبيت أيضًا، سواءً بتحديده محليًا إن كان على الحاسوب أو تحديده عبر رابط ويب، مثلًا يمكن تثبيت تطبيق GIMP السابق بهذه الطريقة عبر الأمر التالي: flatpak install https://flathub.org/repo/appstream/org.gimp.GIMP.flatpakref تشغيل تطبيق يمكنك تشغيل التطبيق بمجرد تثبيته كما وضحنا آنفًا باستعمال الأمر run مع معرّف التطبيق كما يلي: flatpak run org.gimp.GIMP تحديث التطبيقات يمكنك تحديث جميع التطبيقات المثبتة عبر فلات باك باستعمال الأمر التالي: flatpak update عرض التطبيقات المثبتة استعمل الأمر التالي لعرض كافة التطبيقات المثبتة: flatpak list --app حذف تطبيق استعمل الأمر التالي لحذف تطبيق مثبّت بتحديد معرّفه: flatpak uninstall org.gimp.GIMP عرضنا إلى هنا الأوامر شائعة الاستخدام ويمكنك الرجوع إلى الموقع الرسمي لمزيد من التفاصيل إن احتجت لها. ترجمة -وبتصرف- للمقال What is Flatpak?‎ لصاحبه Ankush Das. اقرأ أيضًا عرض موجز لأشهر توزيعات لينكس مدخل إلى مستودعات أوبنتو تثبيت نظام لينكس داخل نظام ويندوز في بيئة وهمية عشرون أمرا في لينكس يفترض أن يعرفها كل مدير نظم
  12. يعد Ansible أداة لأتمتة المهام التقنية البسيطة، وسنتناول في هذا المقال كيفية الاستفادة منه لإعادة استخدام الحواسيب المحمولة القديمة وإدارتها. المهمة تمتلك طفلة ذات سبع سنوات جهاز Dell Mini 9 مزود بنظام أوبنتو وعندما أمضت عليه الكثير من الوقت في اللعب وسماع الأغاني واكتشاف برامج جديدة مسلية ومفيدة، رغبت أختها الصغرى ذات الست سنوات بالحصول على جهاز مشابه، فاستعان الأب بأداة Ansible لإنشاء نسخة مطابقة تمامًا من حيث إعدادات الضبط والأداء والمظهر على جهاز Dell D620 قديم، مع توثيق خطوات العمل لإتاحة إمكانية تكرارها بسهولة في حال الحاجة لها مستقبلًا عند توقف الجهاز عن العمل أو عبث الطفلة بإعدادات الجهاز أو أي خطأ من هذا النوع. آلية العمل قسّم بدايًة منهج Ansible إلى ثلاثة أجزاء: التمهيد bootstrap وإعداد الحساب وتثبيت البرنامج، كان بالإمكان وضع كل شيء في سكربت واحد عملاق لكن فصل هذه المهام يسمح بمزجها ومطابقتها مع مشاريع أخرى وتكراراها وتحسينها بشكل فردي بمرور الوقت. تساعد قابلية قراءة ملف YAML من Ansible على توضيح الأمور أثناء عملية تحسين الأنظمة. مرحلة التمهيد bootstrap استخدم توزيعة Debian بنظام 32 بت كنقطة انطلاق كونها توزيعة مناسبة لأجهزة الحاسوب القديمة، كما يمكن اختيار توزيعة مغايرة ولمعرفة التوزيعات الأنسب لهذه الحالة يمكن الاطلاع على مقال الدليل النهائي لاختيار توزيعة لينكس. يعتمد سكربت bootstrap المكتوب بلغة YAML على حساب مستخدم آخر غير حساب الجذر ليكون متاحًا عبر SSH ويقوم بتثبيت الحد الأدنى من حزم نظام التشغيل وهذا غير كافي بالنسبة إلى Ansible مما يستوجب تحسينها لتحقق بعض المعايير وذلك باستخدام ما يلي لتحقيق التوافق مع مضيف واحد وتسجيل الدخول الفوري مع تصعيد الصلاحيات: $ ansible-playbook bootstrap.yml -i '192.168.0.100,' -u jfarrell -Kk يستخدم السكربت وحدة Ansible الأولية لتعيين بعض المتطلبات الأساسية حيث يضمن توفر Python ويقوم بترقية نظام التشغيل وإنشاء حساب Ansible للتحكم ونقل مفاتيح SSH ويضبط تصعيد صلاحيات مدير النظام sudo، أي يجب أن يكون كل شيء جاهزًا عند اكتمال التمهيد حتى تشارك هذه العقدة بشكل كامل في قائمة Ansible. مرحلة إعداد الحسابات يتم استخدام سكربت YAML لإعداد حسابات جميع المستخدمين أو إعادة تعيينها، كما يمكن استخدامها لإصلاح الحسابات المقفلة، ويحافظ على ثبات واتساق معرّفات هوية المستخدم UID ومعرّفات المجموعة GID ضمن العدد الصغير من الأجهزة التي لدينا، ولا حاجة لإعداد خدمة معلومات الشبكة أو استيثاق LDAP كون عدد الحسابات صغير جدًا، وفيما يلي قسم إعداد الحسابات في السكربت: --- - name: Set user accounts hosts: all gather_facts: false become: yes vars_prompt: - name: passwd prompt: "Enter the desired ansible password:" private: yes tasks: - name: Add child 1 account user: state: present name: child1 password: "{{ passwd | password_hash('sha512') }}" comment: Child One uid: 888 group: users shell: /bin/bash generate_ssh_key: yes ssh_key_bits: 2048 update_password: always create_home: yes يطلب قسم vars_prompt كلمة مرور ويتم وضعها في تحويل Jinja2 لإنتاج تعمية كلمة المرور المطلوبة، هذا يعني عدم الحاجة إلى توفير القيمة الخاصة بكلمات المرور في الشيفرة في ملف YAML ويمكن تشغيله لتغيير كلمات المرور حسب الحاجة. مرحلة تثبيت البرنامج لا يزال ملف YAML الخاص بتثبيت البرنامج قيد التطوير ويحتوي على مجموعة أدوات أساسية تساعد مدير النظام والأمور التي يحتاجها المستخدمون. يقوم بالتأكد من تثبيت نفس واجهة المستخدم الرسومية GUI وجميع البرامج والألعاب وملفات الوسائط نفسها على كل جهاز، وفي ما يلي مقتطف صغير من البرنامج: - name: Install kids software apt: name: "{{ packages }}" state: present vars: packages: - lxde - childsplay - tuxpaint - tuxtype - pysycache - pysiogame - lmemory - bouncy الخلاصة كتب الأب سكربتات Ansible الثلاثة السابقة بواسطة جهاز وهمي واختبرها على الجهاز الأول D620 ثم حولها بسهولة إلى الجهاز الثاني Mini 9 ليحقق التماثل في كلا النظامين، وكان أداء النظامين متشابه لفترة من الوقت ولكن بعدها اكتشفت الطفلة الكبرى ضعف أداء جهازها لذا قام الأب باستبداله بجهاز D620 آخر قديم فقام بتحسينه عن طريق استبدال بطارية BIOS وإضافة SSD جديد وترقية ذاكرة الوصول العشوائي. وعند البدء بإعدادات التمهيد والحساب والبرامج تم الاستعانة بسكربتات Ansible التي تم إنشاؤها سابقًا وكانت جميع الإعدادات موثقة بوضوح وجاهزة للاستخدام. كما ساعدت أتمتة Ansible على تسريع عملية التثبيت الجديدة حيث استغرقت عملية تثبيت الحد الأدنى من حزم نظام التشغيل ديبيان عبر منفذ يو اس بي USB stick حوالي 15 دقيقة واستغرق الشكل اللاحق للنظام باستخدام Ansible لنشر المستخدم النهائي تسع دقائق أخرى فقط. النتيجة تظهر هذه التجربة البسيطة القيمة الحقيقية لقدرات الأتمتة والتوثيق باستخدام Ansible، فتخصيص بعض الوقت في تعلم وممارسة Ansible يوفر الكثير من الوقت لاحقًا عند الحاجة لتوفير جهاز جديد أو إعادة استخدام جهاز ما، كما أن ملف YAML واضح وسهل الاختبار والتحسين. ترجمة -وبتصرف- للمقال How Ansible brought peace to my home لصاحبه James Farrell.
  13. يعتقد البعض أن تثبيت التطبيقات البرمجية في لينكس عملية صعبة لا يفهمها سوى المطورون، هذا الاعتقاد خاطئ وسنوضح في هذا المقال جميع التفاصيل اللازم معرفتها لمساعدة مستخدمي لينكس في الحصول على برامج جيدة لحواسيبهم. تتعدد المصادر التي يمكن من خلالها الحصول على التطبيقات حتى يكاد يكون من المستحيل إحصاء عددها وذلك بسبب تنوع طرق توزيع التطبيقات التي تستخدمها فِرق التطوير، من أبرز هذه الطرق هي المستودعات. المستودعات المستودع repository هو خادم عام يستضيف حزم برامج قابلة للتثبيت، وقد استخدم لينكس المستودعات لتوزيع البرمجيات لمدة تزيد عن عقد من الزمن وما تزال تعد المستودعات الطريقة الأساسية لتثبيت التطبيقات على نظام لينكس لذا فإن المستودعات خيار البحث الأول عن أي تطبيق مطلوب. توفر كل توزيعة لينكس أمرًا برمجيًا لعملية التثبيت وغالبًا ما يُزوّد هذا الأمر بواجهة رسومية، إذ يجلب الأمر البرنامج من الخادم ويثبته على حاسوب المستخدم، ويُعد هذا المفهوم بسيطًا لدرجة أنه يُعدّ نموذجًا معياريًا لجميع أنظمة التشغيل الرئيسية الخاصة بالهواتف المحمولة، وأصبح أيضًا النموذج المُستخدم من قبل متاجر التطبيقات الخاصة بأنظمة تشغيل أجهزة الحاسوب الرئيسية غير مفتوحة المصدر. يُثبّت تطبيق إنكسكيب inkscape من المستودع الموجود فيه باستخدام الأمر التالي: $ sudo dnf install inkscape الأمر الموجود في السطر السابق هو dnf لأن التوزيعة المستخدمة هي فيدورا Fedora ويتغير هذا الأمر من توزيعة لأخرى، إذ تستخدم توزيعة OpenSUSE الأمر zypper، وتستخدم كل من ديبيان Debian وأوبنتو Ubuntu الأمر apt، وتستخدم توزيعة Slackware الأمر sbopkg، وتستخدم توزيعة FreeBSD الأمر pkg_add، أما بالنسبة لتوزيعة OpenIndiana القائمة على Illumos فتستخدم الأمر pkg. لفهم الآلية بشكل أعمق، تتضمن العملية السابقة البحث عن الاسم الصحيح لما هو مطلوب تثبيته فقد يكون الاسم المعروف لبرنامج ما ليس الاسم الرسمي له أو قد لا يتفرد بهذا الاسم أي يشترك به مع تطبيق آخر، لذا يمكن في البداية البحث عنه كما في المثال التالي: $ sudo dnf search pyqt PyQt.x86_64 : Python bindings for Qt3 PyQt4.x86_64 : Python bindings for Qt4 python-qt5.x86_64 : PyQt5 is Python bindings for Qt5 فعند البحث عن المجموعة pyqt تبين وجود ثلاثة خيارات، يجب عندها تحديد اسم الحزمة المراد تثبيتها ثم استخدام أمر التثبيت dnf install لإجراء التنزيل الفعلي والتثبيت التلقائي بالشكل التالي: $ sudo dnf install python-qt5 يمكن الحصول على تفاصيل حول تثبيت تطبيق ما من مستودع البرامج من خلال مراجعة توثيق التوزيعة المستخدمة، ولتسهيل عملية التنزيل يمكن الاعتماد على الواجهة الرسومية بدلًا من كتابة الأوامر البرمجية وفي هذه الحالة وبطريقة مشابهة لأمر التثبيت، يختلف اسم المثبت الرسومي باختلاف التوزيعة المستخدمة كما يمكن التبديل إلى مثبت آخر إذا كان لا يناسب المستخدم. تتميز هذه الطريقة بالاستخدام السلس والسهل إذ نكتب ببساطة اسم التطبيق المطلوب في حقل البحث ثم نبحث عنه ونثبته، وتوضح الصورة التالية عملية البحث عن نفس المجموعة pyqt المستخدمة في المثال السابق: نلاحظ وجود عدة نتائج لعملية البحث وما يهمنا فقط هو التطبيق ذي الصلة بالبرنامج أو الحزمة التي بحثنا عنها، ونستطيع معرفة هذا التطبيق عادةً عن طريق وسوم يمكن العثور عليها في المشغل أو القائمة. مستودعات إضافية تمتلك كل توزيعة لينكس غالبًا بالإضافة إلى المستودع المعياري مستودعات إضافية عامة، فمثلًا يخدم مستودع EPEL كل من مشروع Red Hat وCentOS، بينما يخدم مستودع RPMFusion توزيعة فيدورا، ويمتلك أوبنتو عدة مستودعات بالإضافة إلى شبكة أرشيف الحزم الشخصية Personal Package Archive network والتي يرمز لها اختصارًا PPA، ويوفر مدير الحزم Packman برامج إضافية لتوزيعة OpenSUSE، ويوفر SlackBuilds.org سكربت لمستودعات توزيعة Slackware بهدف تخديم مستخدمي مجتمع هذه التوزيعة. يبحث لينكس افتراضيًا في مستودعاته الرسمية فقط لتثبيت تطبيق ما، أما المستودعات الإضافية تُضاف يدويًا وتسهّل الوصول إلى مجموعة من البرامج، تتم عملية الإضافة بسهولة وبطريقة مشابهة لتثبيت حزمة برامج وذلك بالاستعانة بمدير ضبط الحزم ليضيف بيانات المستودع إلى ملف الضبط، أو يمكن تثبيت المستودع عبر سطر الأوامر، انظر الأمر التالي مثلًا (يختلف باختلاف التوزيعة): $ sudo dnf config-manager --add-repo=http://example.com/pub/centos/7 عندما تُثبَّت برامج معينة مثل تطبيق المحادثة بالفيديو GNU Ring، ومتصفح الويب Vivaldi، ومتصفح غوغل كروم Google Chrome، والعديد من البرامج الأخرى فإن ما يتم تثبيته في الواقع هو الوصول إلى مستودعاتهم الخاصة، والتي يتم من خلالها تثبيت أحدث إصدار من التطبيق المطلوب على حاسوب المستخدم. تثبيت التطبيقات من خارج المستودعات شاع استخدام المستودع لعدة أسباب، فهو يوفر رابطًا بين المستخدم (أنت) والمطور، ويسهل عمل المستخدم خاصةً بما يتعلق بالتحديثات المهمة والجديدة على النظام، إذ يمكن أن تتم من خلال مستودع واحد، وعلى الرغم من هذه المزايا يمكن توفير الحزم دون أن تكون تابعة لمستودع وتأتي الحزم في عدة نماذج. حزم لينكس يقوم المطور أحيانًا بتوزيع البرامج بصيغ حزم لينكس الشائعة مثل RPM أو DEB، أو الصيغ الأحدث مثل FlatPak أو Snap، ولا تسمح هذه الصيغ للمستخدم بالوصول إلى المستودع وإنما يحصل على الحزمة فقط، ولا تحتاج إلى عملية تثبيت معقدة بل تتم بآلية مشابهة لتثبيتها من أحد المستودعات، ويمكن الاستعانة بمُثبِّت مزود بواجهة رسومية ليوجّه المستخدم خلال عملية التثبيت، وذلك عن طريق النقر على الحزمة نقرًا مزدوجًا بعد تنزيلها، ويمكن بدلًا من ذلك العودة إلى الطريقة التقليدية والتثبيت من خلال سطر الأوامر كما يلي: $ sudo dnf install ~/Downloads/lwks-14.0.0-amd64.rpm يُثبّت ملف الحزمة المعزول محليًّا مما يعني أن برنامج إدارة الحزم لا يحتاج إلى تنزيله لتثبيته ويعالج معظم مديري الحزم هذا الأمر بشفافية، فمثلًا يوفر محرر الفيديو Lightworks ملفًا ذو امتداد deb. لمستخدمي APT وملف ذو امتداد rpm. لمستخدمي RPM وعندما يريد المستخدم التحديث عليه العودة إلى موقع الويب وتنزيل أحدث ملف مناسب وإعادة تثبيته يدويًا. التثبيت بواسطة سكربت شامل يصدر المطور الحزم بإحدى النماذج العامة وتشمل الإمتدادات الشائعة run. و sh. ويقدم المطور وسائل تُساعد المستخدم على إتمام عملية التثبيت، وتتنوع أدوات التثبيت إذ يكون بعضها أدوات رسومية بينما يعمل البعض الآخر في سطر الأوامر ويمكن البدء بعملية التثبيت مباشرةً من سطر الأوامر كما يلي: $ sh ./game/gog_warsow_x.y.z.sh ويتوفر خيار آخر وهو البدء بعملية التثبيت من سطح المكتب مباشرةً وذلك وفق عمليات بسيطة وهي: النقر بزر الفأرة الأيمن على أيقونته والتوجه إلى خصائص ثم تفعيل خاصية قابلية التنفيذ Is executable، وتوضحها الصورة التالية: يلي ذلك خطوة بسيطة وهي النقر نقرًا مزدوجًا فوق الأيقونة لبدء التثبيت، وبالنسبة لبقية المراحل فهي بسيطة وتتطلب فقط اتباع التعليمات التي تظهر على الشاشة. تستخدم هذه الطريقة في تثبيت مشغل بطاقة الرسوميات نفيديا NVIDIA وحزم FX المرئية مثل Nuke وMari من شركة Foundry، بالإضافة إلى العديد من الألعاب من منصة GOG الخالية من الحقوق الرقمية. التطبيقات المحمولة بصيغة AppImage تعد صيغة AppImage جديدة نسبيًا في لينكس، على الرغم من أن مفهومها يعتمد على كل من NeXT و Rox وفكرته بسيطة، إذ يوضع كل ما هو مطلوب لتشغيل التطبيق في مجلد واحد ثم يتم التعامل مع هذا المجلد على أنه تطبيق ثم تشغيله ببساطة عن طريق النقر نقرًا مزدوجًا على الأيقونة الخاصة به فيبدأ التشغيل ولا يتم تثبيت التطبيق بالمعنى التقليدي بل إنه يعمل من أي مكان موجود فيه على محرك الأقراص الثابتة. على الرغم من قدرته على العمل كتطبيق قائم بذاته، يقترح نموذج AppImage عادةً تنفيذ بعض الإجراءات البسيطة مثل إضافة أيقونة واسم التطبيق لقائمة التطبيقات المثبتة على الحاسوب، ويظهر الاقتراح كما هو موضح في الصورة التالية: عند قبول الاقتراح سيثبت ملف ضبط صغير الحجم محلي بامتداد desktop. في المجلد الرئيسي الخاص بسطح المكتب وتستخدمه قائمة التطبيقات ونظام mimetype لسطح مكتب لينكس، يكون التثبيت وهمي وليس فعليًا ولكن يحصل المستخدم على جميع مزايا التثبيت الفعلي والتشغيل المحلي لتطبيق ما باعتباره تطبيق محمول. مجلد التطبيق يجمع المطور أحيانًا تطبيقًا ما وينشر النتيجة كتنزيل فقط بدون سكربت خاص بالتثبيت أو حزم، وهذا ما يتطلب من المستخدم تنزيل ملف مضغوط TAR مثلًا واستخراج محتواه ثم النقر نقرًا مزدوجًا فوق الملف القابل للتشغيل، ويكون الملف المطلوب عادةً هو الملف الذي يحمل اسم البرنامج الذي تم تنزيله. تأتي التنزيلات غالبًا في مجلدات بأسماء ذات رقم إصدار، مثل twine_2.13 أو pcgen-v6.07.04 ، نظرًا لوجود احتمال كبير لتحديث التطبيق في وقت ما، فمن الجيد إما إزالة رقم الإصدار أو إنشاء وصلة رمزية symlink للمجلد، يمكن بهذه الطريقة أن يظل المشغل الذي تم إنشاؤه للتطبيق كما هو على الرغم من تحديث التطبيق نفسه. يمكن في هذا النمط ترك المجلد حيث تم تنزيله وتشغيله يدويًا عند الحاجة، أو إجراء تثبيت سريع ومُعَدَّل والذي يتضمن خطوتين بسيطتين: حفظ المجلد في موقع معياري ثم تشغيله يدويًا عند الحاجة. حفظ المجلد في موقع معياري وإنشاء ملف بامتداد desktop. لدمجه في النظام. يتغير مكان تخزين التطبيق حسب حالات الاستخدام، فعند استخدام التطبيقات شخصيًا يُحفظ مجلد bin وهو اختصار لثنائي binary في المجلد الرئيسي كموقع تخزين لأي تطبيق أو سكربت مثبت محليًا، أما عند وجود مستخدمين آخرين على النظام ويحتاجون الوصول إلى هذه التطبيقات، فمن المعتاد وضع التطبيق في مجلد opt/. لإنشاء ملف مشغل بامتداد desktop. يجب فتح محرر نصوص وإنشاء ملف يسمى twine.desktop ، يتم تحديد مواصفات إدخال ملف desktop. مثل تسمية الملف والتنسيق الأساسي له وأنواع القيم الممكنة بواسطة FreeDesktop.org، وللتوضيح فيما يلي مشغل بسيط لبيئة تطوير متكاملة IDE تسمى Twine لتطوير لعبة، تم تثبيته في المجلد opt/ على مستوى النظام: [Desktop Entry] Encoding=UTF-8 Name=Twine GenericName=Twine Comment=Twine Exec=/opt/twine/Twine Icon=/usr/share/icons/oxygen/64x64/categories/applications-games.png Terminal=false Type=Application Categories=Development;IDE; يجب أن يحتوي السطر Exec على أمر فعال لبدء التطبيق، يكون عادةً هذا المسار الكامل إلى ما تم تنزيله ولكن يكون الأمر أكثر تعقيدًا في بعض الحالات فمثلًا قد يلزم تشغيل تطبيق جافا كوسيط لجافا نفسها: Exec=java -jar /path/to/foo.jar يتضمن المشروع أحيانًا سكربت مُغلِّف يمكن تشغيله بدلًا من البحث عن الأمر الصحيح: Exec=/opt/foo/foo-launcher.sh لا توجد أيقونة مرفقة مع التنزيل في مثال Twine لذا فإن ملف desktop. الخاص بالمثال يعين أيقونة ألعاب عامة يتم إرفاقها مع بيئة سطح المكتب KDE، وهو ما يعتبر حلًا بديلًا ولكن يمكن للمستخدم إنشاء أيقونة خاصة به أو البحث على الإنترنت عن أيقونة مناسبة، المهم أن يكون السطر البرمجي الخاص بالأيقونة والذي يكون باسم Icon يشير إلى ملف PNG أو SVG لتُضبط هذه الصورة كأيقونة للتطبيق. كما يحدد السكربت فئة التطبيق ضمن فئة التطوير Development بشكل أساسي لذلك يظهر Twine ضمن فئة التطوير في KDE و GNOME ومعظم قوائم التطبيقات الأخرى. لكي يظهر هذا المثال في قائمة التطبيقات يجب وضع ملف twine.desktop في أحد المكانين التاليين: ضمن local/share/applications./~ لتخزين التطبيق في المجلد الرئيسي. ضمن usr/share/applications/ لتخزين التطبيق في مجلد opt/ أو أي موقع آخر على مستوى النظام ويُراد إظهاره في جميع قوائم التطبيقات الخاصة بالمستخدم. وبهذا يتم تثبيت التطبيق كما يجب أن يكون كما أنه متكامل مع بقية النظام. البناء من المصدر تعد الشيفرة المصدرية صيغة تثبيت شاملة فعلية، ويُعدّ بناء تطبيق من شيفرة مصدرية طريقة رائعة لمعرفة كيف تُنظّم التطبيقات وكيف تتفاعل مع النظام وكيف يمكن تخصيصها حسب رغبة المستخدم، ولذلك فهي ليست عملية سهلة وتتطلب بيئة بناء وتثبيت مكتبات الاعتماديات وملفات الترويسات وبعض عمليات تنقيح الأخطاء. خاتمة يمكن في النهاية شرح عملية التثبيت باختصار أنه مجرد نسخ الملفات من مكان ما إلى الأماكن المناسبة على نظام المستخدم، ومن المهم التأكد من بساطة وأمان المُثبِّت، فمثلًا عند مصادفة مُثبِّت يحاول تثبيت برامج إضافية دون موافقة أو يطلب الموافقة ولكن بأسلوب مضلل أو يُجري عمليات فحص على النظام دون سبب واضح، يجب التراجع وعدم مواصلة عملية التثبيت عند مواجهة أي حالة منها لضمان الحصول على تثبيت آمن. ترجمة -وبتصرف- للمقال How to install software applications on Linux لصاحبه Seth Kenlon. اقرأ أيضًا مدخل إلى مصطلحات ومفاهيم التخزين في لينكس الدليل النهائي لاختيار توزيعة لينكس مقدّمة إلى أدوات ضغط الملفّات على نظام لينكس
  14. تعد توزيعة آرتش إحدى توزيعات لينكس ذات الترقية المستمرة أي تحصل على التحديثات بشكل دائم خلال فترة زمنية قصيرة، وتكون موجهة للأغراض العامة وتحظى بشعبية كبيرة لدى المستخدمين الذين يفضلون الحصول على قدر كبير من التحكم وخيارات التخصيص. عند تثبيت توزيعة آرتش لينكس، لا يحصل المستخدم سوى على الحد الأدنى من حزم النظام الأساسية بشكل افتراضي ويتوجب عليه ضبط النظام يدويًا، لذلك يعتبره البعض مهمة صعبة وفي نفس الوقت يعتبره آخرون فرصة تعليمية ويمكن لكلاهما اتباع الدليل التعليمي في هذا المقال لتثبيت آرتش بخطوات بسيطة وسهلة المتابعة ولكن يجب قراءة جميع التعليمات بشكل صحيح واتباع كل خطوة بدقة لتجنب نسيان إحداها والذي سيؤدي إلى صعوبات في عملية التثبيت. طرق تثبيت توزيعة آرتش لينكس يوجد طريقتان لتثبيت آرتش: بمساعدة مثبت آرتش Archinstaller الإرشادي: وهو نظام مُعتمِد على القائمة يُعلّم المستخدم كيفية ضبط الإعدادات بسهولة لإكمال عملية التثبيت، قدمته آرتش في عام 2021. من دون المثبت الموجه: تتطلب هذه الطريقة ضبط الإعدادات يدويًا دون الحاجة إلى المثبت الإرشادي لذا تأخذ وقتًا أطول من الطريقة السابقة، وهي التي سنعتمدها في هذا المقال. متطلبات تثبيت آرتش لينكس جهاز متوافق مع معمارية x86_64 أي 64 بت. ذاكرة وصول عشوائي لا تقل عن 512 ميجابايت ويُفضل أن تكون 2 جيجابايت. مساحة خالية على القرص تبلغ 2 جيجابايت على الأقل ويُوصى باستخدام 20 جيجابايت للاستخدام الأساسي مع بيئة سطح المكتب. اتصال إنترنت نشط. قرص تخزين خارجي عبر منفذ يو اس بي USB بسعة تخزين لا تقل عن 2 جيجابايت. معرفة بطريقة استخدام سطر الأوامر في لينكس. بمجرد التأكد من وجود جميع المتطلبات يمكن البدء بالخطوة الأولى من عملية التثبيت خطوات تثبيت آرتش لينكس تختلف بعض خطوات التثبيت بين نظام UEFI ونظام بيوس BIOS قديم، تأتي جميع الأنظمة الجديدة مع UEFI لذا تم التركيز في هذا المقال عليه لكن سُتذكر أيضًا الخطوات المختلفة لنظام بيوس القديم. يجب الانتباه قبل البدء بعملية التثبيت أنها قد تمحو نظام (أو أنظمة) التشغيل الحالي من الحاسوب وتُثبِّت آرتش عليه لذا يجب نسخ الملفات احتياطيًا وإلا ستُفقد جميعها. الخطوة الأولى: تنزيل ملف ISO يمكنك تنزيل ملف ISO من موقع آرتش الرسمي الذي يوفر كل من روابط التنزيل المباشر والتورنت. الخطوة الثانية: إنشاء نسخة يو اس بي نستخدم ملف ISO الذي تم تنزيله في الخطوة السابقة لإنشاء نسخة من آرتش على يو اس بي قابل للإقلاع المباشر، يمكن الاستعانة بأداة Etcher المزودة بواجهة رسومية لتنفيذ ذلك، وهذه الأداة متاحة لويندوز ولينكس ومناسبة للمستخدمين الذين يفضلون الواجهة الرسومية وتظهر كما يلي: يتوفر لمستخدمي لينكس بديلًا عن أداة Etcher لتحقيق هذه الخطوة، وذلك من خلال الأمر dd. يجب استبدال path/to/archlinux.iso/ بالمسار الخاص بملف ISO، واستبدال dev/sdx/ بمشغل يو اس بي USB في المثال التالي مع أخذ كامل الحيطة والحذر قبل تنفيذه والتأكد من استخدام القرص الصحيح: dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync يمكن الحصول على معلومات حول محرك الأقراص باستخدام الأمر lsblk. عند الانتهاء من هذه الخطوة يجب إغلاق الحاسوب ثم توصيل اليو اس بي ثم تشغيل الحاسوب. الخطوة الثالثة: الإقلاع من نسخة يو اس بي USB بعد تشغيل الحاسوب يجب الإقلاع من نسخة يو اس بي والذي قد لا يتحقق أحيانًا بسبب تفعيل وضع الإقلاع الآمن secure boot لذا يجب تعطيله. نضغط أثناء التشغيل على مفتاح F2 أو F10 أو F12 (حسب نوع حاسوب المستخدم) بشكل مستمر للانتقال إلى إعدادات الإقلاع ونختار الإقلاع من يو اس بي أو قرص قابل للإزالة "boot from USB or removable disk" وبمجرد بدء تشغيل النظام سيظهر التالي: نختار خيار الإقلاع Arch Linux install medium (x86_64, BIOS)‎ وبعد التحقق سيقوم آرتش بالإقلاع إلى تسجيل دخول فوري كمستخدم جذر root. تتضمن الخطوات التالية تقسيم القرص وإنشاء نظام الملفات ووصله بنظام التشغيل. ملاحظة: نسق لوحة المفاتيح الافتراضي هو الولايات المتحدة لذا تعمل معظم لوحات المفاتيح باللغة الإنجليزية بشكل جيد ولكن لا يتم ذلك تلقائيًا بالنسبة للوحات المفاتيح الفرنسية والألمانية والعربية وغيرها، فعند مواجهة صعوبة يمكن تغيير النسق إن كان ذلك ضروريًا، يجب بدايةً عرض كل نسق لوحة المفاتيح المدعومة للاختيار منها كما يلي: ls /usr/share/kbd/keymaps/**/*.map.gz ثم استخدام الأمر loadkeys لتغيير النسق، فمثلًا يتم الحصول على لوحة مفاتيح ألمانية كما يلي: loadkeys de-latin1 الخطوة الرابعة: تجزئة الأقراص نستخدم لهذه العملية مدير الأقراص fdisk المعتمد على سطر الأوامر، وبدايةً يجب عرض جميع الأقراص والأقسام في النظام بشكل قائمة باستخدام الأمر التالي: fdisk -l يجب أن يكون القرص الصلب باسم dev/nvme0n1/ أو dev/sda/ وهو الأكثر شيوعًا، نحدد القرص المراد تهيئته وتقسيمه كما يلي: fdisk /dev/sda يُقترح حذف أي أقسام موجودة على القرص باستخدام الأمر d لإفراغ مساحة القرص بالكامل ثم إنشاء أقسام جديدة باستخدام الأمر n. إنشاء قسم ESP: خطوة خاصة بأنظمة UEFI فقط يجب بدايةً التحقق من تفعيل وضع UEFI باستخدام الأمر التالي: ls /sys/firmware/efi/efivars عدم وجود هذا المجلد يعني امتلاك نظام non-UEFI وإلا فالنظام هو UEFI وعليه يجب القيام بما يلي: إنشاء قسم ESP يجب إنشاء قسم EFI في بداية القرص، بعد إدخال n سيطلب اختيار رقم القرص، ندخل 1، نحافظ على حجم الكتلة الافتراضي، وعندما يطلب حجم القسم ندخل 512M+. تتمثل إحدى الخطوات المهمة في تغيير نوع قسم EFI إلى نظام EFI بدلاً من نظام لينكس، وذلك بإدخال t لتغيير النوع، ثم إدخال L لمشاهدة جميع أنواع الأقسام المتاحة، ثم إدخال الرقم المقابل لها في نظام EFI. إنشاء قسم الجذر ملاحظة: هذه الخطوة مطلوبة لأنظمة UEFI والأنظمة القديمة legacy. تتضمن عملية التقسيم الشائعة إنشاء قسم الجذر root وقسم المبادلة swap والقسم الرئيسي home بشكل منفصل، ولكن سنقوم بإنشاء قسم جذر واحد وإنشاء ملف swap وقسم رئيسي ضمن مجلد الجذر نفسه أي سيكون لدينا قسم جذر واحد من دون قسم مبادلة أو قسم رئيسي. أثناء استخدام الأمر fdisk ندخل n لإنشاء قسم جديد، سيعطيه تلقائيًا رقم القسم 2 ثم يجب الاستمرار بالضغط على زر الإدخال enter لتخصيص مساحة القرص المتبقية بالكامل لقسم الجذر. بعد الانتهاء من تقسيم القرص يجب إدخال الأمر w لحفظ التغييرات إلى القرص والخروج من أمر fdisk. الخطوة الخامسة: إنشاء نظام ملفات الآن بعد أن أصبحت أقسام القرص جاهزة يجب إنشاء نظام ملفات عليها وتختلف طريقة تطبيق هذه الخطوة باختلاف النظام. إنشاء نظام ملفات لنظام UEFI يمتلك هذا النظام قسمين على القرص، الأول من نوع EFI والذي سيأخذ نظام ملفات FAT32 باستخدام أمر mkfs التالي: mkfs.fat -F32 /dev/sda1 ونهيئ قسم الجذر بنظام ملفات Ext4 كما يلي: mkfs.ext4 /dev/sda2 إنشاء نظام ملفات لنظام non-UEFI يمتلك هذا النظام قسم جذر واحد فقط سنجعله ext4 كما يلي: mkfs.ext4 /dev/sda1 الخطوة السادسة: الاتصال بشبكة واي فاي WiFi يمكن استخدام الأداة iwctl للاتصال بشبكة WiFi بشكل تفاعلي وبسهولة وتتطلب فقط إدخال هذا الأمر واتباع التعليمات التي تظهر على الشاشة: iwctl ثم عرض جميع البطاقات والأجهزة اللاسلكية المتصلة في قائمة باستخدام الأمر: device list ثم تحديد البطاقة اللاسلكية المفضلة ثم البحث عن الشبكة المتاحة باستخدام الأمر أدناه: station wlan0 scan لن يتمكن المستخدم من رؤية أسماء الشبكات أثناء البحث عن الشبكة، لذا لمشاهدة الاتصالات المتاحة يمكن كتابة: station wlan0 get-networks يمكن الاتصال بشبكة واي فاي محددة من بين الشبكات المدرجة بإضافة اسمها باستخدام الأمر: station wlan0 connect "Name of Network/WiFi" إذا كانت الشبكة محمية بكلمة مرور فسيُطلب إدخالها وبعد ذلك يتصل المستخدم بالشبكة، وللتأكد من الاتصال وإمكانية استخدام الإنترنت يمكن التحقق من خلال الأمر ping كما يلي: ping google.com يصل رد الأمر ping بشكل بايتات وبذلك يكون الاتصال محقق، ويستمر وصول البايتات لذا لإيقافها يجب استخدام Ctrl + C، ثم يجب الخروج من موجه الشبكة باستخدام Ctrl + D. الخطوة السابعة: اختيار مرآة مناسبة لمستودع الحزم غالبًا ما يواجه المستخدم عند تنزيل آرتش مشكلة بطئ التنزيلات وحتى فشله أحيانًا وذلك بسبب قائمة مرايا حزم المستودعات الموجودة في etc/pacman.d/mirrorlist/ والتي تحوي عددًا كبيرًا من المرايا ولكن ليس بترتيب جيد حيث يتم اختيار المرآة الأعلى تلقائيًا وقد لا تكون دومًا الخيار الأفضل، ويمكن الحل في الخطوات التالية: مزامنة مستودع pacman لتنزيل البرنامج وتثبيته: pacman -Syy عرض قائمة مرايا مستودعات الحزم الجديدة والسريعة الموجودة في بلد المستخدم ويكون البلد الافتراضي الولايات المتحدة ويمكن تغييره، وذلك بواسطة تثبيت reflector: pacman -S reflector إنشاء مرآة مستودع حزم من قائمة المرايا: cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak حفظ قائمة مرايا مستودع الحزم الجيدة مع reflector في القائمة الموجودة مسبقًا: reflector -c "US" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist الخطوة الثامنة: تثبيت آرتش أصبح الآن كل شيء مُهيئًا لتثبيت آرتش، وسنقوم بتثبيته في مجلد الجذر ونحتاج لوصله أولًا باستخدام اسمه كما يلي: mount /dev/sda2 /mnt هذا لأنظمة UEFI بينما في أنظمة non-UEFI نستخدم المسار dev/sda1/. يجب بعد وصل الجذر استخدام سكربت pacstrap الرائع لتثبيت جميع الحزم الضرورية كالتالي: pacstrap /mnt base linux linux-firmware vim nano سيستغرق تنزيل هذه الحزم وتثبيتها بعض الوقت وفي حال توقف التنزيلات يمكن كتابة الأمر السابق مرة أخرى وسيستأنف عملية التنزيل. نلاحظ في الأمر السابق أنه تم إضافة محرر نصوص فيم Vim ونانو Nano إلى القائمة، لأننا سنحتاج إلى تعديل بعض الملفات بعد التثبيت، ويمكن استخدام أي منهما حسب رغبة المستخدم ولتسهيل الاختيار يمكن مراجعة مقال مقارنة بين محرر النصوص فيم Vim ونانو Nano لاستكشاف الاختلافات بينهما. الخطوة التاسعة: ضبط إعدادات النظام يجب إنشاء ملف fstab لتحديد كيفية وصل كل من أقسام القرص وبقية الأجهزة وأنظمة الملفات البعيدة في نظام الملفات. genfstab -U /mnt >> /mnt/etc/fstab ثم نستخدم arch-chroot وندخل القرص الموصول كمستخدم جذر وبذلك يمكننا بدء استخدام النظام الذي ثبتناه للتو على القرص، ويتوجب إجراء بعض التغييرات في إعدادات ضبط النظام المثبت حتى نتمكن من تشغيله بشكل صحيح عند الإقلاع من القرص. arch-chroot /mnt ضبط المنطقة الزمنية نضبط المنطقة الزمنية بعد ذلك باستخدام الأمر timedatectl، لكن يجب أولًا البحث عن المنطقة الزمنية الخاصة بالمستخدم كما يلي: timedatectl list-timezones ثم الخروج من القائمة باستخدام Ctrl+C أو q فقط، يتم بعدها الضبط كما يلي مع استبدال Europe/Paris بمنطقتك الزمنية: timedatectl set-timezone Europe/Paris ضبط المحلية locale تمثّل المحلية locale تنسيقات اللغة وشكل الأرقام وصيغة التاريخ والعملة للنظام. يحتوي الملف etc/locale.gen/ على جميع الإعدادات المحلية ولغة النظام بتنسيق تعليق أي تحتوي إشارة # في بداية كل سطر، يجب فتح الملف باستخدام محرر Vim أو Nano بواسطة الأمر التالي: nano /etc/locale.gen ويظهر الملف كما في الصورة التالية، نختار اللغة التي نريدها وفي هذا المثال اختيرت اللغة الإنجليزية en_GB.UTF-8 ثم نلغي التعليق عن طريق إزالة # من بداية سطر اللغة ثم نضغط على Ctrl + X ثم Y لحفظ التحديد والمتابعة. يجب الآن إنشاء ملف ضبط للمحلية في ملف المجلد etc/ باستخدام الأوامر التالية واحدًا تلو الآخر: locale-gen echo LANG=en_GB.UTF-8 > /etc/locale.conf export LANG=en_GB.UTF-8 يمكن تغيير إعدادات ضبط المحلية والمنطقة الزمنية لاحقًا أيضًا بعد البدء باستخدام آرتش. ضبط الشبكة يتطلب ضبط الشبكة ما يلي: إنشاء ملف etc/hostname/ وإضافة مدخل تمثل اسم المضيف إلى هذا الملف، واسم المضيف هو في الأساس اسم حاسوب المستخدم على الشبكة، يمكن اختيار الاسم حسب الرغبة وسنسميه myarch في مثالنا: echo myarch > /etc/hostname الجزء التالي هو إنشاء ملف المضيفين hosts: touch /etc/hosts ثم تحرير هذا الملف etc/hosts/ باستخدام محرر Vim أو Nano لإضافة الأسطر التالية إليه، مع ضرورة الانتباه إلى استبدال myarch باسم المضيف الذي اخترناه سابقًا: 127.0.0.1 localhost ::1 localhost 127.0.1.1 myarch تحديد كلمة سر للجذر يجب تعيين كلمة سر لحساب الجذر باستخدام الأمر passwd، وسيُطلب إدخال وإعادة كتابة كلمة المرور الخاصة بالمستخدم: passwd الخطوة العاشرة: تثبيت مُحمّل الإقلاع Grub تعتبر هذه الخطوة إحدى الخطوات الحاسمة وتختلف بين أنظمة UEFI وأنظمة non-UEFI: تثبيت محمل الإقلاع في أنظمة UEFI نتأكد من استخدام arch-chroot ثم نثبت الحزم المطلوبة: pacman -S grub efibootmgr ثم إنشاء المجلد حيث سيتم وصل قسم EFI: mkdir /boot/efi الآن نقوم بوصل قسم ESP: mount /dev/sda1 /boot/efi يتم تثبيت grub كما يلي: grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi يتبقى خطوة أخيرة: grub-mkconfig -o /boot/grub/grub.cfg تثبيت محمل الإقلاع في أنظمة غير UEFI ننزل حزمة grub أولًا: pacman -S grub ثم تثبيت grub كما يلي مع ضرورة الانتباه بعدم وضع رقم القرص sda1 بل فقط اسم القرص sda: grub-install /dev/sda الخطوة الأخيرة: grub-mkconfig -o /boot/grub/grub.cfg الخطوة الحادية عشرة: إنشاء مستخدم إضافي وتطبيق الصلاحيات تم إلى الآن إنشاء نظام يمتلك حساب جذر فقط، يمكن إقلاع النظام في هذه الحالة ولكن لا يُنصح بذلك لضمان الحصول على تجربة آمنة ومستقرة، فبهذه الطريقة سيحدث كل تغيير يقوم به المستخدم دون الحاجة إلى أي استيثاق والذي قد يؤدي إلى إفساد النظام، لذا يجب أن يوجد مستخدم إضافي يحصل على صلاحيات الجذر باستخدام sudo والذي يتطلب تثبيت حزمة sudo: pacman -S sudo ثم إنشاء مستخدم جديد ومنحه الأذونات، يمكن اختيار أي اسم للمستخدم الجديد في هذه المثال اخترنا الاسم "team": useradd -m team passwd team ثم ندخل كلمة المرور لهذا المستخدم ونأكد العملية، يجب بعد ذلك ضم هذا المستخدم الجديد إلى مجموعة من المستخدمين الذين يحصلون على أذونات محددة، في المثال سنضم المستخدم team إلى المجموعة wheel إضافةً إلى غيرها كما يلي: usermod -aG wheel,audio,video,storage team نحتاج كخطوة أخيرة إلى تعديل ملف visudo والذي سُيفتح في محرر Vi افتراضيًا ونفتحه باستخدام نانو بواسطة الأمر التالي: EDITOR=nano visudo يجب أن يكون السطر الذي يشير إلى المجموعة wheel غير مُعلّق كما هو موضح في الصورة أدناه: يجب بعد ذلك حفظ التغييرات والخروج من الملف. الخطوة الثانية عشرة: تثبيت بيئة سطح المكتب يجب بدايةً تثبيت Xorg كخادم عرض بالتعاون مع مدير الشبكة، يمكن الاستعانة بتوثيق Wayland الرسمي، ولذلك نستخدم الأمر التالي: pacman -S xorg networkmanager ثم تثبيت بيئة سطح المكتب المطلوبة على آرتش وسنستخدم بيئة جنوم: pacman -S gnome تتضمن الخطوة الأخيرة تمكين مدير العرض GDM وتمكين مدير الشبكة: systemctl enable gdm.service systemctl enable NetworkManager.service ثم الخروج من chroot باستخدام الأمر exit: exit أخيرًا نلغي وصل قسم الجذر باستخدام الأمر التالي: umount /mnt أو باستخدام الأمر التالي: umount -l /mnt ثم إغلاق النظام: shutdown now ستظهر شاشة Grub ثم شاشة تسجيل الدخول إلى جنوم إذا كانت عملية التثبيت ناجحة وتمت بلا أخطاء، ويجب الانتباه إلى إخراج USB قبل تشغيل النظام مرة أخرى. خاتمة نلاحظ في النهاية أن تثبيت آرتش ليس عملية سهلة كتثبيت أوبنتو مثلًا، بل يحتاج بعض الصبر وفي النهاية سيكون تجربة تعلم للمستخدم ويمكن خوض تجربة آرتش وإجراء الكثير من التعديلات فيه لمعرفة مدى قوته. ترجمة -وبتصرف- للمقال How to Install Arch Linux [Step by Step Guide] لصاحبه Abhishek Prakash. اقرأ أيضًا مدخل إلى مستودعات أوبنتو استخدام أوامر مدير الحزم باك مان Pacman في آرتش لينكس KDE Plasma مقابل GNOME: مقارنة بين أشهر بيئات سطح المكتب في لينكس
  15. تؤثر بيئة سطح المكتب المستخدمة في توزيعة لينكس على تجربة المستخدم الكلية من ناحية الإنتاجية وسهولة الاستخدام وبالتالي سير العمل، كما تؤثر على واجهة المستخدم الرسومية GUI كونها تُشكَّل من البيئة مع مجموعة من التطبيقات. يتوفر العديد من خيارات بيئة سطح المكتب ولكن تحظى كل من KDE Plasma و GNOME بالشعبية الأكبر ولكل واحدة ما يميزها، لذا يتناول هذا المقال الاختلافات الرئيسية بينهما لمساعدة القارئ على اتخاذ القرار. واجهة المستخدم: الفعالية مقابل الجمالية تتضمن واجهة المستخدم الرسومية بشكل عام نوع النسق والرموز والسمات وعناصر واجهة المستخدم وبعض المكونات الأخرى. يوفر سطح مكتب بلازما نسق تقليدي ومشابه لتصميم ويندوز مما يجعله مريح لمعظم مستخدمي ويندوز السابقين ومع ذلك لا يهمل الفعالية حيث يتميز بالتناسق المستمر بين العاملين حتى مع كل التحسينات التي تطرأ عليه على مر السنين، توضح الصورة التالية واجهة المستخدم في بلازما: استوحى ويندوز من KDE في الواقع بعض تحسينات واجهة المستخدم الخاصة به مثل القدرة على ضبط مستوى الصوت عن طريق تمرير رمز الصوت في شريط المهام كما يظهر: أما غنوم فيعتبر أكثر جاذبية كونه يوفر تجربة سطح مكتب فريدة بتصميم واجهة مستخدم مختلف وحديث كون الرموز والسمات والخلفيات أفضل فيما يتعلق بالمعايير الحديثة، وتوضح الصورة التالية واجهة المستخدم في غنوم: يصعب على المستخدمين المُعتادين على النسق التقليدي الشبيه بنظام ويندوز التأقلم معه، حيث لا يوجد في غنوم شريط مهام ولا زر إبدأ أو تطبيق أو قائمة، بل يجب النقر على "نظرة عامة حول النشاط" للوصول إلى مساحات العمل الخاصة بالمستخدم أو بيئة سطح المكتب الوهمية أو قائمة التطبيقات. لا تعتبر واجهة المستخدم في غنوم فعالة ووافرة بالعناصر مقارنة بواجهة KDE، فمثلًا توفر عناصر واجهة المستخدم الموجودة في قائمة الوصول السريع للنظام system tray خيارات أكثر مما توفره التطبيقات المصغرة في غنوم. لذلك فيما يتعلق بواجهة المستخدم لا تتفوق أي منهما على الأخرى بشكل واضح، ويبقى الأمر متروكًا لتفضيلات المستخدم. تكامل تطبيقات المنظومة يوفر KDE الوصول إلى عدد لا يحصى من الخدمات والتي قد تكون زائدة عن حاجة المستخدم ويبرز العديد من هذه التطبيقات المتاحة مثل كريتا Krita و Kdenlive و محرر Kate وغيرها، ويبقى مجتمع KDE بأكمله مشغول دومًا للغاية بإضافة تطبيقات وأدوات جديدة إلى المستودع. يوفر غنوم افتراضيًا العديد من التطبيقات والتي تعد كافية لمعظم المستخدمين ولكنها تبقى قليلة العدد وتحصل على تحديثات أقل مقارنةً بعدد وتحديثات تطبيقات KDE. قابلية التخصيص يتيح KDE للمستخدم حرية أكبر في التخصيص حيث يسمح بالتعديل والتحكم في تجربة المستخدم من حيث تغيير السمة واللون وتأثيرات مساحة العمل وإدارة النوافذ وغيرها دون الحاجة إلى أي تطبيق أو إضافة محددة. أما في غنوم فيمكن تخصيص التجربة إلى حد جيد ولكن من دون الكثير من عناصر التحكم الجاهزة بل يجب على المستخدم الاعتماد على تعديلات أو امتدادات (إضافات) غنوم لإجراء التغييرات، ويستمر بالتحسين في المظهر والتجربة إصدارًا بعد إصدار مثلًا جرى إضافة الوضع الليلي على مستوى النظام. يناسب KDE المستخدمين الذي يفضلون المزيد من خيارات التحكم والتخصيص أما غنوم فيناسب المستخدمين الذين لا يريدون العديد من الخيارات ويفضلون ما يقدمه غنوم. القدرات الإضافية يقدم غنوم امتدادات (إضافات) لإضافة المزيد من الفعالية إلى إعدادات الضبط الحالية، ويمكن تحقيق ذلك من خلال التوجه إلى موقع الويب الخاص بامتداد صدفة غنوم لاستكشاف الخيارات المتاحة ويظهر التالي: يتوفر جميع أنواع الإضافات التي تسهل القيام بمجموعة من الأمور مثل أتمتة مساحة العمل التي سيشغلها التطبيق الذي سيفتح تاليًا من خلال إضافة auto-move window، ومع ذلك تعتمد الإضافات على إصدار صدفة غنوم وبسبب التغييرات الجذرية من إصدار إلى آخر يمكن أن تتوقف إضافات غنوم عن العمل في الإصدارات المستقبلية. يقدم KDE حقيبة مليئة بالإضافات وعناصر واجهة المستخدم وإضافات خاصة بالتطبيقات كأدوات KDE Connect التي تصل الهاتف المحمول بجهاز الحاسوب. على عكس طريقة غنوم غير المريحة لإضافة ملحقات من متصفح (باستخدام إضافات متصفح آخر)، يمكن الوصول إلى الإمكانات الإضافية لـ KDE باستخدام مركز اكتشاف البرمجيات Discover Software مباشرة مما يسهل تجربة إضافة قدرة أو سمة دون اتباع مجموعة منفصلة من الخطوات. يمكن بشكل عام زيادة القدرات في كليهما ولكن يوفر KDE خيارات أكثر من غنوم. خيارات سهولة الاستخدام على الرغم من كفاءة عمل KDE في العوامل المذكورة سابقًا، إلا أن القدرات المتاحة لتسهيل الوصول واستخدام سطح المكتب محدودة للغاية مثل عدم وجود قارئ شاشة مع النظام والذي توضحه الصورة التالية: قد يختبر المطورون فعالية قارئ الشاشة باستخدام تطبيق Orca Screen Reader الذي يفحص بعض العناصر السمعية والبصرية لسطح المكتب ولكن مع إصدار KDE Plasma 5.24 فلا يعتبر هذا الخيار مفيدًا أو كافيًا. أما غنوم فيوفر قارئ الشاشة والتنبيهات المرئية ولوحة مفاتيح الشاشة ومفاتيح الصوت ومساعد النقر والمزيد من الخيارات لذا في حال كان المستخدم يعتمد على خيارات سهولة الوصول لاستخدام سطح المكتب فيجب اختيار غنوم. السرعة لابد لإنجاز مهام متعددة من توفر بيئة سطح مكتب تعمل بكفاءة مع موارد النظام المتاحة، لذلك يعد KDE أسرع من معظم بيئات سطح المكتب الأخرى كونه قليل الاستخدام للموارد. ولتوضيح الأمور تم إنشاء جهازين وهميين Fedora 35 إصدار المستخدم KDE Neon، تتشابه إعدادات كل منهما في ضبط الموارد والتي تتضمن تخصيص نواتين وذاكرة 8 جيجابايت. الصورة السابقة التي توضح استخدام الموارد عبارة عن توضيح للبيانات المعروضة على الشاشة مع عدم تشغيل أي شيء في الخلفية مباشرة بعد تشغيل الجهاز الوهمي. أثبتت توزيعة KDE Neon التي تدعمها KDE استهلاكها أقل من 1 جيجابايت من ذاكرة الوصول العشوائي RAM بدون أن يكون تطبيق spectacle الخاص بلقطة الشاشة يعمل في الخلفية. ولتوضيح الفكرة أكثر يوجد العديد من التقارير القديمة مثل تقرير جايسون الذي ذكر أن KDE هي بيئة سطح المكتب الأصغر حجمًا حتى أكثر من واجهة XFCE أيضًا. التوزيعات المتاحة تعتمد بعض توزيعات لينكس الشائعة مثل فيدورا وأوبنتو و Pop! _OS على غنوم كبيئة سطح المكتب الافتراضية أو حتى الوحيدة وتتوفر غنوم فيها بإصدارات مختلفة. أما بالنسبة إلى KDE فلا تتوفر كخيار افتراضي لمعظم التوزيعات السائدة ولكن يمكن تجربتها في Kubuntu مثلًا. ما هو الخيار الأفضل بينهما؟ يعتبر KDE الخيار الأنسب للمستخدم الذي يريد البساطة والأداء بالإضافة لتعدد الخيارات والأدوات، أما المستخدم الذي يريد مظهرًا حديثًا فبيئة غنوم هي الأفضل له، وعلى الرغم من عدم منح غنوم للمستخدم قدرًا كبيرًا من التحكم إلا أنه يمكنه القيام بأشياء كثيرة وتعد توزيعة Pop! _OS مثالاً على وجود غنوم كبيئة سطح مكتب مع احتوائها على إضافات تجعلها بيئة مميزة لسطح المكتب. بعض الأسئلة الشائعة 1. لماذا لا تمتلك KDE شعبية كبيرة؟ لأنها ليست الخيار الافتراضي للتوزيعات الشائعة مثل أوبنتو وفيدورا و Pop! _OS، ولكنها تعد ثاني أكثر بيئة سطح مكتب شعبية بعد غنوم. 2. هل يعتبر غنوم أكثر استقرارًا من KDE؟ تم إنشاء كل من غنوم و KDE بواسطة فريق ماهر من المطورين مع قيامهم بإصلاحات وتحسينات منتظمة، وقد خضع غنوم لتغييرات جذرية متعددة حتى الآن لذلك يعتبر KDE تجربة أكثر اتساقًا واستقرارًا. 3. من الأسرع بينهما؟ تعتمد سرعة الأداء على موارد النظام المتاحة وأنشطة المستخدم، فالنسبة لبعض المستخدمين تعتبر البيئة الأقل استهلاكًا للموارد هي الأفضل وبالنسبة لآخرين تتلاشى الاختلافات بينهما عند توفر المزيد من الموارد. 4. هل KDE أفضل من غنوم؟ لا يمكن تحديد الأفضل بينهما حسب مزايا بيئة سطح المكتب لأن القرار يختلف تبعًا لتفضيلات المستخدم، حيث تتميز KDE بمزيد من التطبيقات وخيارات التخصيص وفعالية أكبر وهو أمر جيد ومع ذلك قد يكون صعبًا على المستخدمين الجدد أو الذين لا يرغبون في هذه القدر من التحكم، أما إذا كان المستخدم يفضل تجربة مستخدم مرتبة توفر مظهر عصري فيعتبر غنوم الاختيار أفضل. ترجمة -وبتصرف- للمقال KDE vs GNOME: What’s the Ultimate Linux Desktop Choice?‎ لصاحبه Ankush Das. اقرأ أيضًا عرض موجز لأشهر توزيعات لينكس . استخدام أوامر مدير الحزم باك مان Pacman في آرتش لينكس . مدخل إلى مستودعات أوبنتو
  16. دومًا ما يتساءل مستخدمو لينكس الجدد عن التوزيعة الأنسب للبدء بتعلمها، وبعد أن يصبحوا قادرين على استخدام هذا النظام بطريقة جيدة تبدأ عملية البحث عن توزيعة ذات إمكانيات تتناسب مع القدرات الجديدة، وتظهر تساؤلات مشابهة في الشركات والمؤسسات لاختيار خادم لينكس يلبي احتياجات العمل، وسبب هذه الحيرة هو وجود عدد كبير من توزيعات لينكس حتى يكاد يكون من الصعب إحصاؤها، وقد تكون بعض التوزيعات مجرد استنساخ من توزيعات أخرى وتكون بعضها الأخرى فريدة من نوعها. يساعد هذا المقال بالتعرف على 21 توزيعة مختلفة لنظام لينكس مقسمة في فئات تبعًا لإمكانيات المستخدم وحالات الاستخدام. أشهر توزيعات لينكس للمستخدم المبتدئ نذكر في هذه الفئة التوزيعات التي يمكن استخدامها فوريًا بعد تثبيتها دون الحاجة إلى التعمق وتعلم أوامر خاصة بها. أوبنتو Ubuntu تعد توزيعة أوبنتو من أشهر توزيعات لينكس وقد يتوفر مُثبّتًا مُسبقًا على الكثير من أجهزة الحاسوب، وتتميز بواجهة مستخدم بسيطة ومظهر قابل للتخصيص بسهولة تبعًا لمتطلبات المستخدم بالإضافة لإمكانية تثبيت سمات جاهزة. كما تتميز بوقوف مجتمع داعم ضخم خلفها عبر الإنترنت لمستخدميها مما يسهل عمل أي مستخدم عن طريق التوجه إلى أي منتدى وطلب المساعدة لحل المشكلة أو التساؤل. لينكس مينت Linux Mint ترتكز هذه التوزيعة على أوبنتو مما يجعلها تمتلك كل تطبيقاته كما تتفوق عليه في بعض الأمور، وتتميز بالبساطة وسهولة الاستخدام مما يجعلها خيارًا بارزًا لمستخدمي لينكس الجدد، وتعد Linux Mint Cinnamon توزيعة ببيئة سطح مكتب مناسبة لمستخدمي لينكس الجدد وخاصةً المستخدمين القادمين من ويندوز كونها أكثر توزيعة مشابهة لنظام ويندوز Windows بسبب بيئة سطح المكتب الافتراضية فيها والتي تتشابه مع ويندوز في التصميم. elementary OS ترتكز هذه التوزيعة على أوبنتو، وتهدف إلى تأمين بيئة لينكس سهلة الاستخدام وجذابة من حيث التصميم والعناصر البصرية مع الحفاظ على الأداء الجيد، وتتميز بتطور تدريجي مستمر عبر التحديثات المستمرة. تقدم واجهة مستخدم جميلة ومشابهة لواجهة نظام التشغيل ماك Mac لذا فهي مناسبة لمستخدمي ماك السابقين أو من يفضلون استخدام نمط مشابه لماك. MX Linux ترتكز هذه التوزيعة على ديبيان وتعد توزيعة شائعة الاستخدام بسبب أدائها وبساطتها واستقرارها وتوفيرها أدوات MX مضمنة مما يوفر تجربة رائعة وخارجة عن المألوف. يعتمد MX Linux على Xfce كبيئة لسطح المكتب، وعلى مدير حزم مٌصمم بشكل مثالي لتسهيل عمليات التثبيت بنقرة واحدة، كما يتيح البحث عن حزم فلات باك Flatpak وتثبيتها فوريًا إذ يتوافر متجر فلات هب Flathub افتراضيًا في مدير الحزم كأحد المصادر. أهم ما يميز هذه التوزيعة هو امتلاكها الكثير من أدوات واجهة المستخدم الرسومية (أدوات MX) مما يسهل تجربة العمل على أي مستخدم سابق لويندوز أو ماك. Zorin OS ترتكز هذه التوزيعة على أوبنتو، وتعد تقريبًا تجربة سطح مكتب مثالية تقنيًا وجماليًا، إذ تتميز بسهولة الاستخدام وتوفر عدة إصدارات لتناسب الجميع فمثلًا يناسب الإصدار Zorin OS 16 المبتدئين. كونه لا يتيح الكثير من خيارات التخصيص إذ تكون فيه غالبية عناصر واجهة المستخدم الرسومية ثابتة ولا يمكن تعديلها، ويعد الإصدار Lite مناسبًا لأجهزة الحاسوب القديمة، كما يتوفر إصدارات أخرى مثل Core و Education و Ultimate، يمكن تثبيت الإصدار Core مجانًا أما الخيار Ultimate فهو الأنسب في حال رغب المستخدم بدعم المطورين والمساعدة في تحسين Zorin. توزيعة Pop!_OS وفرت شركة System76 توزيعة Pop!_OS المرتكزة على أوبنتو، وتعد خيارًا ممتازًا للمطورين والمحترفين والمبرمجين ولا يقتصر استخدامها على هؤلاء فقط بل هي توزيعة مناسبة لأي مستخدم يبحث عن تجربة سطح مكتب فريدة. يعتمد Pop!_OS على بيئة سطح المكتب COSMIC السهلة والسلسة، وهذه البيئة سيتم بناؤها قريبًا باستخدام لغة البرمجة Rust من الصفر، لذا يمكن للمستخدم ترقّب أحدث إصدار لها. خيارات أخرى للمبتدئين يوجد خيارات أخرى غير المذكورة سابقًا للمبتدئين مثل توزيعة Deepin ونكهات أخرى من أوبنتو مثل Kubuntu و Xubuntu، كما يمكن تجربة فيدورا بدلًا من أوبنتو لتعلم المزيد ولخوض تجربة جديدة وتحدٍ جديد أيضًا. أشهر توزيعات لينكس للخوادم يجب مراعاة عدة عوامل عند اختيار توزيعة لينكس لتعمل كخادم ويب مثلًا أو أي خادم آخر، منها الاستقرار والأداء وتوافر الدعم وطول أمده، وفي حال كان المستخدم يريد التجربة والاطلاع فيمكنه اختيار أي توزيعة. خادم أوبنتو يوفر أوبنتو خيارات مختلفة حيث يمكن للمستخدم اختيار ما يناسبه حسب المطلوب، ففي حال كان المستخدم يبحث عن حلول مخصصة لتشغيل الخادم على AWS أو Azure أو منصة غوغل Google للحوسبة السحابية فإن سحابة أوبنتو Ubuntu Cloud هي أحد الخيارات المتاحة أمامه. ومع ذلك يمكن اختيار حزم خادم أوبنتو وتثبيتها على الخادم الخاص بالمستخدم، ويُوصى دومًا بتنزيل الإصدارات طويلة الدعم من النواة LTS إلا عند وجود متطلبات محددة. ريدهات لينكس الخاص بالشركات RHEL قد لا يكون ريد هات Red Hat الخيار الأكثر شيوعًا للخوادم حسب الإحصائيات ولكنه مع ذلك نظام ممتاز من الدرجة الأولى يخدم الشركات والمؤسسات وتعتمد عليه العديد من الشركات المهمة مثل شركة لينوفو Lenovo. يرتبط ريد هات مع فيدورا تقنيًا، إذ يتم اختبار جميع الخيارات التي يدعمها ريدهات على فيدورا أولًا وقبل إتاحته على ريدهات. يجب التحقق من ملائَمة التوزيعة في حال وجود متطلبات مخصصة ويمكن ذلك من خلال التوثيق الرسمي الخاص بهم. خادم لينكس SUSE الخاص بالشركات غالبًا ما يُخطئ البعض بين هذا وبين OpenSUSE لأن كلاهما معروف باسم العلامة التجارية المشتركة "SUSE"، حيث OpenSUSE هو توزيعة مفتوحة المصدر موجهة لهدف معين ويتم صيانتها من قبل المجتمع الخاص بها أما خادم لينكس SUSE الخاص بالشركات فيُعدّ أحد الحلول الأكثر شيوعًا للخوادم المعتمدة على السحابة، ويجب على المستخدم اختيار اشتراك للحصول على أولوية الدعم والمساعدة لإدارة الحل مفتوح المصدر الخاص به. CentOS 8 سنت أو إس يرتكز سنت أو إس CentOS على نفس المصادر التي يرتكز عليها ريد هات لينكس الخاص بالشركات RHEL، لذا يُعد البديل الأفضل عنه إذ يمكن في RHEL الحصول على اشتراك مجاني يضم حتى 16 خادمًا بدون دعم فني، نظرًا لكونه إصدار موجه للشركات بينما يعد CentOS إصدارًا موجهًا للمجتمع لذا فهو مجاني بالكامل. خيارات أخرى لتوزيعة خادم لينكس يمكن أيضًا استخدام خادم فيدورا أو ديبيان كبدائل لبعض التوزيعات المذكورة أعلاه. أشهر توزيعات لينكس للحواسيب القديمة إذا رغب المستخدم بتجريب نظام لينكس ولكن حاسوبه قديم أو ليس بحاجة إلى ترقية نظامه، فيمكنه اختيار إحدى توزيعات لينكس التالية. Puppy Linux تعد هذه التوزيعة أحد أصغر التوزيعات الموجودة حجمًا ويمكن تشغيلها على إعدادات ضبط الأجهزة القديمة بسهولة، كما تقدم تجربة سريعة على جهاز حاسوب قديم وتحسنت تجربة المستخدم بمرور الوقت مع إضافة العديد من الميزات المفيدة الجديدة. Solus Budgie يعد نظام التشغيل Solus إصدارًا خاصًا بأجهزة الحواسيب ويتميز بكونه صغير الحجم ومثيرًا للإعجاب، ويقدم أفضل إصدار لبيئة سطح المكتب وهو بدجي Budgie بسبب توفيره تجربة سطح مكتب فريدة من نوعها لاحتوائه على تعديلات مثيرة للاهتمام في واجهة المستخدم الرسومية، ويعد بدجي العرض الرئيسي لنظام التشغيل ولكن يمكن اختيار بيئة سطح مكتب أخرى مثل GNOME أو MATE. Bodhi ترتكز هذه التوزيعة على أوبنتو ومع ذلك على عكس أوبنتو فهو يعمل بشكل جيد ضمن إعدادات الضبط القديمة على الأنظمة القديمة لذلك تجربة المستخدم فيه سهلة ومريحة. أهم ما يميز هذه التوزيعة هو بيئة سطح المكتب Moksha والتي تركز على بيئة سطح المكتب Enlightenment 17 لذا تعد مشابهة لها. antiX ترتكز هذه التوزيعة على ديبيان، وهي توزيعة صغيرة الحجم مصممة لأجهزة الحاسوب القديمة والجديدة، ويمكن استخدامها مباشرةً من قرص مضغوط أو ذاكرة USB دون الحاجة إلى تثبيتها، كما توفر محمل إقلاع مباشر وهو برنامج يقوم بتحميل نظام تشغيل عند تشغيل الحاسوب، لذلك على عكس بعض التوزيعات الأخرى يجب حفظ الإعدادات حتى لا تُفقد مع كل إعادة تشغيل، كما يمكن أيضًا حفظ التغييرات على المجلد الرئيسي (الجذر) من خلال ميزة المحافظة على التغييرات Live persistence. يعتمد antiX جزئيًا على MX Linux إذ أن العديد من الحزم المستخدمة في antiX منشأة أساسًا من قبل MX Linux، وواجهة المستخدم ليست مبهرة لكنها سريعة وتعمل كما هو متوقع. Sparky Linux ترتكز هذه التوزيعة على ديبيان وتوفر تجربة مستخدم سهلة وسريعة مما جعلها توزيعة مثالية للأنظمة منخفضة الأداء. تقدم العديد من الإصدارات المميزة لجميع المستخدمين، إذ توفر إصدارات ثابتة مستقرة وإصدارات متجددة خاصة بمجموعة من المستخدمين، فمثلًا إصدار Sparky Linux GameOver شائع جدًا للاعبين لاحتوائه ألعاب مثبتة مسبقًا. خيارات أخرى للحواسيب القديمة لتجريب أي توزيعة على حاسوب قديم يجب أن تكون صغيرة الحجم ومنها: Linux Lite و Lubuntu و Peppermint. أشهر توزيعة Linux للمستخدمين المحترفين يتطلب عمل المستخدمين المحترفين احتياجات محددة لا تلبيها التوزيعات المذكورة سابقًا لذا فيما يلي مجموعة من التوزيعات التي تفي بهذا الغرض. آرتش لينكس Arch Linux يعد آرتش توزيعة بسيطة بحد ذاته وقوي ومتعدد الاستخدامات، ولكنه يحتاج على عكس التوزيعات الأخرى إلى ضبط النظام وإضافة الحزم حسب الحاجة كما ينبغي اتباع مجموعة من الأوامر من دون واجهة المستخدم الرسومية عند عملية التثبيت مما يجعله صعب التعلم، ولكنه يمتلك مجتمع داعم نشط للغاية لذا عند مواجهة أي مشكلة يمكن حلها فوريًا وبسهولة. Gentoo يعد Gentoo توزيعة صغيرة الحجم، ويتطلب استخدامه معرفة سابقة كبيرة بالتقنية المطلوبة لعمله بهدف تحقيق أقصى استفادة منه وتجنب إضاعة الوقت، فإذا توفرت لدى المستخدم المعرفة حول كيفية بناء الشيفرة المصدرية فيمكنه البدء باستخدام Gentoo فوريًا وإلا يمكن الاستعانة بدليل الإرشادات الرسمي الذي يوفر الكثير من هذه المعلومات اللازمة. Slackware يعد Slackware أحد أقدم توزيعات لينكس التي لا تزال ذات أهمية وقد صدر مؤخرًت الإصدار Slackware 15. على الرغم من انخفاض عدد المستخدمين والمطورين له بشكل كبير إلا أنه لا يزال خيارًا رائعًا للمستخدمين المحترفين الذين يمتلكون المعرفة حول تصريف البرامج أو تطويرها لإعداد بيئة مثالية حسب المتطلبات. أشهر توزيعة لينكس متعددة الاستخدامات تتوفر بعض توزيعات لينكس التي يمكن استخدامها كنظام تشغيل من قبل المبتدئين والمحترفين لكل من أجهزة الحاسوب والخوادم. فيدورا Fedora يناسب فيدورا المستخدم الذي يبحث عن نظام تشغيل سريع وسهل الاستخدام لحاسوبه وعن نظام تشغيل للخادم، حيث يقدم فيدورا إصدارين منفصلين الأول خاص بأجهزة الحاسوب المكتبية والمحمولة ويدعى Fedora Workstation والآخر للخوادم ويدعى Fedora Server. Manjaro ترتكز هذه التوزيعة على آرتش ولكنها تعد توزيعة بسيطة ومناسبة للمبتدئين على عكس آرتش المخصص للمستخدمين المحترفين. يمتلك Manjaro واجهة مستخدم جيدة ويوفر مجموعة من تطبيقات واجهة المستخدم الرسومية المفيدة المضمنة فيها، يمكن اختيار بيئة سطح المكتب حسب الرغبة أثناء تنزيله مثل KDE وغيرها. ديبيان Debian ترتكز توزيعة أوبنتو على ديبيان مما يعني أن ديبيان توزيعة جيدة بحد ذاتها، وتعتبر توزيعة لينكس الأشهر وتعد خيارًا مثاليًا لكل من أجهزة الحاسوب المكتبية والخوادم، ومع أنها ليست أنسب توزيعة للمبتدئين ولكن يمكن لهم البدء به بسهولة من خلال الاطلاع على التوثيق الرسمي. يقدم الإصدار 'Debian 11 'Bullseye العديد من التغييرات والتحسينات الضرورية. هذه عمومًا هي توزيعات لينكس التي يُوصى بتجربتها، وطبعًا لا تتسع القائمة لذكر كل توزيعات لينكس المتاحة. ترجمة -وبتصرف- للمقال Best Linux Distributions For Everyone in 2022 لصاحبه Ankush Das. اقرأ أيضًا مدخل إلى خادم ويب. مدخل إلى أسماء النطاقات على شبكة الإنترنت. أساسيات تحديد الكلفة المادية الكاملة لبناء موقع ويب
  17. يُعَد مدير الحزم باك مان Pacman أهم ما يميز توزيعة آرتش عن التوزيعات الرئيسية الأخرى، مثل ريد هات Red Hat وأوبنتو Ubuntu وديبيان Debian، فهو يجمع بين صيغة حزمة ثنائية بسيطة وتصميم نظام سهل الاستخدام، كما يساعد على إدارة الحزم بسهولة إما من المستودعات الرسمية، أو من الحزم التي يبنيها المستخدم. ولتبسيط مفهوم باك مان، يمكن عدّ هذا المدير على أنه المكافئ لأوامر apt-get أو apt المستخدمة في أوبنتو أو التوزيعات القائمة على ديبيان. يُعَد تعلم استخدام أوامر باك مان خطوةً أساسيةً لمستخدمي آرتش لينكس Arch Linux الجدد، إذ تساعدهم على إدارة النظام بالكامل، وهو ما سيتم شرحه في هذه المقال. أوامر باك مان الأساسية تتشابه إمكانيات باك مان مع أي مدير حزم آخر، فهو يزامن قوائم الحزم مع مستودعات البرامج، مما يسمح للمستخدم بتنزيل الحزم وتثبيتها بواسطة أمر برمجي بسيط، والذي يقوم أيضًا بإيجاد حل لجميع الاعتماديات المطلوبة. تشمل أوامر باك مان الأساسية عدة عمليات مثل تثبيت حزم أو ترقيتها أو إزالتها أو تنظيف النظام. تثبيت حزم يمكنك تثبيت حزمة واحدة أو حزم متعددة باستخدام أوامر باك مان بهذه الطريقة: pacman -S package_name1 package_name2 ... يرمز S- في الأمر السابق يرمز للتزامن، أي أن باك مان يقوم بالمزامنة أولًا، وبعد تثبيت الحزم تقوم قاعدة بيانات باك مان بتصنيف هذه الحزم إلى مجموعتين وفقًا لسبب تثبيتها: مثبتة صراحةً explicitly-installed: الحزم التي ثُبّتت باستخدام أمر باك مان العام مع استعمال الخيار S- أو U-. الاعتماديات: الحزم التي ثُبّتت ضمنيًا لأنها مطلوبة من قِبل حزمة أخرى مثبتة صراحةً. إزالة حزم مثبتة يمكن إزالة حزمة واحدة مع ترك جميع اعتمادياتها مثبتة عن طريق الأمر التالي: pacman -R package_name أما لإزالة حزمة وجميع اعتمادياتها التي لم تَعُد مطلوبةً من قبل حزمة أخرى مُثبتة، يُستخدم الأمر التالي: pacman -Rs package_name قد نحتاج لإزالة اعتماديات لم تَعُد مطلوبةً بسبب حذف الحزمة التي كانت تتطلب هذه الاعتماديات، ويمكن ذلك عن طريق الأمر التالي: pacman -Qdtq | pacman -Rs - ترقية الحزم يوفر باك مان طريقةً سهلةً لتحديث آرتش بالكامل عن طريق تحديث جميع الحزم المثبتة باستخدام أمر واحد فقط، ولكن قد تستغرق عملية التحديث بعض الوقت ويختلف الوقت اللازم لإتمام العملية تبعًا لمدى حداثة النظام. تتم عملية التحديث باستخدام الأمر التالي: pacman -Syu نلاحظ وجود ثلاثة خيارات في أمر التحديث ودلالتها كما يلي: الخيار S يشير إلى المزامنة. الخيار y يدل على التحديث، والذي يتم على ذاكرة التخزين المؤقت المحلية. الخيار u يشير إلى تحديث النظام. يزامن الأمر السابق جدول الحزم مع المستودع المركزي والوصول إلى قاعدة بيانات الحزمة الرئيسية، ثم تحديث النسخة المحلية منها ثم تحديث جميع الحزم التي تتيح إصدار أحدث من الإصدار الموجود، ونتيجةً لذلك تٌحدّث جميع حزم النظام باستثناء الحزم المحلية، وهي الحزم غير الموجودة في المستودعات المضبوطة. عند ظهور مشكلات تخص بعض البرمجيات الأساسية مثل النواة أو xorg أو systemd أو glibc، يجب البحث قبل ترقية هذه البرمجيات عن نماذج سابقة مناسبة فتحها آخرون وأجروا تحديثات. لا تدعم التوزيعات المتدحرجة مثل آرتش وManjaro التحديثات الجزئية، مما يعني أنه عند إتاحة إصدارات جديدة من مكتبة ما في المستودعات، يجب إعادة بناء جميع الحزم الموجودة في المستودعات. على سبيل المثال، تعتمد الحزمة X والحزمة Y في عملهما على المكتبة L، بالتالي عند تحديث المكتبة L وتحديث الحزمة X فقط، فإن هذا قد يؤدي إلى تعطيل الحزمة Y التي مازالت تعتمد على الإصدار القديم من المكتبة L. البحث عن حزم عبر pacman يمكن لمدير الحزم باك مان البحث عن الحزم في قاعدة البيانات سواءً في بيانات أسماء الحزم أو في التوصيف الخاص بها. يقوم باك مان بالاستعلام عن قاعدة البيانات الخاصة بالحزمة المحلية باستخدام الخيار Q- وقاعدة بيانات الملفات باستخدام الخيار F- وقاعدة بيانات المزامنة باستخدام الخيار S-، وذلك كما يلي: pacman -Ss string1 string2 ... يُستخدم الأمر التالي للبحث عن الحزم المثبتة مسبقًا: pacman -Qs string1 string2 ... يُستخدم الأمر التالي للبحث عن أسماء ملفات الحزم في الحزم البعيدة: pacman -F string1 string2 ... ويمكن عرض شجرة الاعتماديات لحزمة ما باستخدام الأمر التالي: pactree package_naenter code hereme مسح ذاكرة التخزين المؤقت لحزمة يخزن باك مان الحزم التي نُزلت في المسار /var/cache/pacman/pkg/، ولا يقوم بإزالة أو حذف الإصدارات القديمة للحزم أو تلك التي تم إلغاء تثبيتها تلقائيًا، ويوفر هذا السلوك بعض المزايا: يسمح للمستخدم بتخفيض إصدار الحزمة دون الحاجة إلى استرداد الإصدار السابق من مصادر أخرى. يمكن التراجع بسهولة عن إلغاء تثبيت حزمة ما وإعادة تثبيتها مباشرةً من مجلد ذاكرة التخزين المؤقت cache folder. من الضروري حتى مع هذه المزايا مسح ذاكرة التخزين المؤقت دوريًا لمنع زيادة حجم المجلد وامتلاء الذاكرة. ويمكن ذلك باستخدام سكربت (8)paccache المتوفر في حزمة pacman-contrib، والذي يحذف جميع الإصدارات المخزنة مؤقتًا الخاصة بالحزم المثبتة، والحزم غير المثبتة التي نزلت باسثناء آخر 3 ملفات نزلت، وهو الإعداد الافتراضي ويمكن تغييره، ولاستخدامه يُكتب الأمر بالشكل التالي: paccache -r ويستخدم الأمر التالي لإزالة جميع الحزم المخزنة مؤقتًا وغير المثبتة حاليًا بالإضافة إلى قاعدة بيانات المزامنة غير المُستخدَمة: pacman -Sc كما يمكن استخدام إجراء أشمل يُفرّغ ذاكرة التخزين المؤقت تمامًا عن طريق إزالة جميع الملفات الموجودة فيها، وذلك بكتابة نفس الأمر السابق مع تكرار الخيار c مرتين كما يلي: pacman -Scc تثبيت حزم محلية أو خارجية يستخدم الأمر التالي لتثبيت حزمة محلية ليست من مستودع بعيد: pacman -U /path/to/package/package_name-version.pkg.tar.xz أما لتثبيت حزمة بعيدة غير مضمنة في مستودع رسمي يُستخدم الأمر التالي: pacman -U http://www.example.com/repo/example.pkg.tar.xz بعض الأخطاء الشائعة قد تحدث بعض الأخطاء عند استخدام باك مان لإدارة الحزم، مثل حدوث فشل عند بداية الإجراء أو أثناء تنفيذه، وفيما يلي بعض هذه الحالات وطريقة إصلاحها: فشل عند بدء الإجراء ينشئ باك مان عند تثبيت حزمة ما ملف قفل يمنع أي نسخة أخرى من باك مان من محاولة تعديل قاعدة بيانات الحزمة في نفس الوقت، ويتم وضع الملف في المسار var/lib/pacman/db.lck/، وهنا قد يصبح ملف القفل بلا فائدة، وذلك عندما تتم مقاطعة باك مان أثناء تغيير قاعدة البيانات، بالتالي حدوث هذا الخطأ؛ والذي يمكن إصلاحه عن طريق التحقق مما إذا كانت هناك عملية ما تحتفظ بملف القفل باستخدام الأمر lsof كما يلي: lsof /var/lib/pacman/db.lck يعطي خرج الأمر السابق رقم التعريف الخاص بالعملية الذي يحمل ملف القفل، والذي يمكن من خلاله إيقاف العملية ثم إزالة ملف القفل؛ أما إذا لم ينفذ الأمر السابق أي شيء، فيجب استخدام طريقة أخرى وهي حذف ملف القفل، ولكن قبل ذلك يجب التأكد من عدم تشغيل أي نسخ أخرى من باك مان ثم إزالة ملف القفل باستخدام الأمر التالي: rm /var/lib/pacman/db.lck فشل تنفيذ الإجراء بعد بدء الإجراء قد تحدث أخطاء أثناء تنفيذه، مثل وجود ملفات متعارضة أو أخطاء تتعلق بالحزم، حيث قد تكون الحزمة غير صالحة: ملفات متعارضة يحدث هذا الخطأ لاكتشاف باك مان وجود تعارض في الملف ولن يقوم بتعديل الملفات، وتظهر رسالة الخطأ بالشكل التالي: error: could not prepare transaction error: failed to commit transaction (conflicting files) package: /path/to/file exists in filesystem Errors occurred, no packages were upgraded. يوجد طريقة آمنة لتصحيحه وتتضمن التحقق أولًا مما إذا كانت حزمة أخرى تمتلك الملف، باستخدام الأمر التالي: pacman -Qo /path/to/file فإذا كان الملف خاصًا بحزمة أخرى، عندها يجب تقديم تقرير خطأ، وإلّا يمكن حل الخطأ عن طريق إعادة تسمية الملف الموجود في نظام الملفات، ثم إعادة تنفيذ أمر التحديث. وإذا اكتمل الأمر بنجاح، فقد تتم إزالة الملف بعد ذلك. ويمكن بدلًا من ذلك إعادة التسمية يدويًا ثم إزالة جميع الملفات التي تنتمي إلى الحزمة المعنية، ثم إجبار باك مان على تعديل الملفات التي تطابق الاسم المطلوب كما يلي: pacman -S –overwrite glob package حزمة غير صالحة أو تالفة ينتج هذا الخطأ غالبًا بسبب استخدام أمر Xfer المخصص في ملف ضبط باك مان pacman.conf، ويتعلق الأمر بملفات ذات امتداد part. وهي اختصار كلمة partially أي الحزم التي تم تنزيلها جزئيًا، حيث يجب البحث عن هذه الملفات في المسار /var/cache/pacman/pkg ثم إزالتها. نستنتج مما ذُكر في المقال أن تعلم أوامر باك مان الأساسية هي أول ما يجب فعله فوريًا بعد تثبيت توزيعة آرتش. ترجمة -وبتصرف- للمقال Getting Started With Pacman Commands in Arch-based Linux Distributions لصاحبه Dimitrios اقرأ أيضًا مدخل إلى مستودعات أوبنتو تغيير اللغة في نظام لينكس أوبنتو إلى العربية مرجع إلى أشهر أوامر لينكس
  18. المستودع Repository هو عبارة عن خادم يحتوي مجموعة من البرامج، وتُعَد هذه الطريقة في توفير البرامج في مكان واحد إحدى نقاط القوة التي تميز نظام لينكس، كونه يعتمد على المستودعات؛ كما تمتلك كل توزيعة مستودعاتها الخاصة، وسنخص في هذا المقال توزيعة أوبنتو ومستودعاتها التي تسهل على المستخدم مهامه. فائدة المستودعات تسمح المستودعات بالبحث ضمنها عن أي تطبيق ثم تثبيته دون الحاجة إلى البحث على الإنترنت عن ملف التنزيل الخاص به، ويتم ذلك في أوبنتو باستخدام الأمر apt، وهذا الأمر هو نفسه مدير الحزم APT الذي يستخدمه مركز برمجيات أوبنتو في الخلفية، لذلك كل البرامج (عدا حزم سناب Snap) المتوفرة في مركز البرمجيات هي من APT. يحصل مدير الحزم APT على معلومات المستودع من ملف ذو المسار etc/apt/sources.list/ بالإضافة إلى الملفات المتوفرة في مجلد etc/apt/sources.list.d/ وتكون عادةً معلومات المستودع بالصيغة التالية: deb http://archive.ubuntu.com/ubuntu/ jammy main تكون هيكلية المستودع منظمة بالشكل التالي: آلية العمل يحصل مدير الحزم باستخدام الأمر apt update على معلومات تشمل الحزم المتوفرة والإصدار الخاص بكل حزمة من المستودعات ويخزنها في ذاكرة مخبئيّة محلية. ويمكن الاطلاع على هذا المعلومات في مجلد var/lib/apt/lists/. يسرع الاحتفاظ بهذه المعلومات محليًّا عملية البحث لأن المستخدم لن يحتاج إلى الاتصال بالانترنت ثم البحث في قاعدة البيانات عن الحزم المتاحة بهدف التأكد فقط من أن حزمة ما متاحة أم لا. عند محاولة تثبيت برنامج ما xyz باستخدام الأمر apt قد يظهر الخطأ التالي: E: Unable to locate package xyz يشير الخطأ السابق إلى أن الحزمة xyz غير موجودة ضمن قائمة المستودعات المفعلة ويكمن الحل في تفعيل أحد مستودعات أوبنتو الذي يحوي تلك الحزمة، ثم الحصول على الحزمة المفقودة عبر تنزيلها من المستودع. مستودعات أوبنتو تقسم البرمجيات في مستودع أوبنتو إلى خمس فئات وهي: Main (رئيسي) Universe Multiverse Restricted (مُقيّد) Partner (شريك) Main يُفعّل هذا المستودع بشكل افتراضي عند تثبيت أوبنتو، ويتكون من برمجيات مجانية ومفتوحة المصدر، والتي تسمى FOSS، وهي اختصار free and open source software وتتميز بإمكانية توزيعها بحرية دون أي قيود. يوفر مطورو أوبنتو دعمًا كاملًا ودائمًا للبرمجيات في هذا المستودع، بالإضافة لتحديثات أمان حتى يصل النظام أو التوزيعة إلى نهاية عمره الافتراضي. مستودع Universe يحتوي هذا المستودع أيضًا على برمجيات مجانية ومفتوحة المصدر ولكن أوبنتو لا يضمن تحديثات أمان دورية للبرمجيات في هذه الفئة. مستودع Multiverse يجب على المستخدم التأكد من أن لديه الحق في استخدام أي برنامج ضمن هذا المستودع قبل استخدامه، وذلك لأن البرمجيات في هذه الفئة ليست FOSS أي أنها ليست حرة ومفتوحة المصدر، بالتالي لا يمكن لأوبنتو تفعيل هذه المستودع بشكل افتراضي بسبب الترخيص والمسائل القانونية، كما لا يوفر تحديثات أو حلول لمشكلات التطبيقات المثبته منه. مستودع Restricted يحتوي هذا المستودع على مُشغّلات احتكارية على الرغم من محاولة أوبنتو الدائمة لتوفير برمجيات مجانية ومفتوحة المصدر، والتي قد لا تتحقق خاصًة عندما يتعلق الأمر بدعم العتاد. مستودع Partner يتكون هذا المستودع من برمجيات احتكارية يقوم أوبنتو بتنظيمها في حزم وتقديمها لشركائه، فقد وفر أوبنتو مثلًا في السابق سكايب Skype من خلال هذه المستودع. المستودعات الخارجية يتوفر مستودعات أخرى ولكنها غير مدعومة من أوبنتو والتي يمكن إضافتها تبعًا لرغبة المستخدم بالحصول على برمجيات إضافية أو نسخ أحدث من البرمجيات المتوفرة على مستودعات أوبنتو. مثلًا، عند إضافة المستودع المقدم من VirtualBox، يمكن عندها الحصول على أحدث نسخة من البرنامج، وسيضاف المستخدم كحقل جديد في الملف sources.list الخاص بالمستخدم، ولكن لا ينصح بهذا الأمر، إذ يُفضّل المحافظة على هذا الملف كما هو في حالته الأصلية، وذلك لأن أي تغيير ضمنه قد يمنع المستخدم مستقبلًا من تحديث النظام أو حتى تنزيل حزم جديدة. وإلى جانب ما سبق، يمكن تنزيل تطبيق إضافي باستخدام أرشيف الحزمة الشخصية PPA (اختصارًا إلى Personal Package Archive). إضافة المستودعات غير الافتراضية يجب أن يكون كل من المستودعين main و universe مفعلين افتراضيًا. وفي حال رغب المستخدم بتفعيل مستودعات إضافية، سيتحقق ذلك عن طريق سطر الأوامر وكتابة الأمر الخاص بكل مستودع كما يلي: تفعيل مستودع Universe باستخدام الأمر: sudo add-apt-repository universe تفعيل مستودع restricted باستخدام الأمر: sudo add-apt-repository restricted تفعيل مستودع multiverse باستخدام الأمر: sudo add-apt-repository multiverse بعد إضافة المستودع، يجب تحديث فهرس الحزم الذي يحتوي على معلوماتها، ويتم ذلك باستخدام الأمر التالي: sudo apt update وفي حال إزالة تثبيت مستودع ما وليكن مستودع universe مثلا، سيتم ذلك بالطريقة التالية: sudo add-apt-repository -r universe تتوفر طريقة أسهل لإضافة المستودعات، وهي باستخدام الواجهة الرسومية، وذلك من خلال قسم البرامج والتحديثات في جدول برمجيات أوبنتو، وهو الجدول الأول في الواجهة: ومن خلال جدول البرمجيات الأخرى Other Software، يمكن إضافة مستودعات أوبنتو غير الأساسية مثل مستودع partner. ويمكن إزالة المستودع ببساطة عن طريق إلغاء تحديد هذا المستودع. كيفية تحديد المستودع الذي تنتمي إليه حزمة ما يمتلك أوبنتو موقع ويب متخصص يزود المستخدم بمعلومات عن جميع الحزم المتوفرة في أرشيف أوبنتو. ويمكن البحث عن حزمة ما من خلال كتابة اسم الحزمة في حقل البحث. وتوجد خيارات إضافية لذلك، مثل تحديد إصدار أوبنتو معين أو مستودع معين، ولكن يفضل عدم التخصيص، وذلك بترك الخيار "any" في كلا الحقلين كما في الصورة التالية: تُظهِر نتيجة البحث جميع الحزم المطابقة وإصدارات أوبنتو ومعلومات المستودع كما يلي: يوضح المثال السابق عملية البحث عن الحزمة tor. وفي نتيجة البحث، ظهرت معلومات توضح أن هذه الحزمة موجودة في مستودع Universe لمختلف إصدارات أوبنتو. الخاتمة نأمل أن يساعدك هذا المقال في فهم مستودعات أوبنتو. وإذا كان لديك أي أسئلة أو اقتراحات حول الموضوع، يمكنك التوجه إلى قسم الأسئلة والأجوبة في أكاديمية حسوب. ترجمة -وبتصرف- للمقال What are Ubuntu Repositories? How to enable or disable them?‎ لصاحبه Abhishek Prakash. اقرأ أيضًا مسح حزم Snap المعطلة لتحرير المساحة في لينكس مرجع إلى أشهر أوامر لينكس ما الفرق بين نسخة الخادم ونسخة المستخدم من أوبنتو لينكس
  19. يتناول المقال طريقة تغيير اللغة في توزيعات نظام لينكس Linux القائمة على أوبنتو Ubuntu وديبيان Debian بطريقتين مع ضرب مثال إلى تغييرها إلى العربية، إذ سنشرح أولًا طريقة تغيير اللغة عبر الواجهة الرسومية ثم سنشرح بعدها كيفية تغيير اللغة عبر سطر الأوامر. تغيير اللغة عبر الإعدادات من الواجهة الرسومية هذه الطريقة في تغيير اللغة هي الأسهل والأشيع بين المستخدمين الذي يفضلون التعامل مع الواجهة الرسومية بدلًا من التعامل مع سطر الأوامر. لتغيير اللغة وتتم بالاعتماد على الواجهة الرسومية، نختار من نافذة إعدادات النظام دعم اللغة Language Support كما في الصورة التالية: فتظهر اللغات المتاحة ونلاحظ وجود اللغة الانكليزية فقط وهي اللغة الافتراضية للنظام، ويمكن إضافة لغة أخرى بالنقر على خيار …Install / Remove Languages كما يلي: ثم تحديد اللغة المطلوبة لتنزيل الحزم الخاصة بها، وفي مثالنا نختار اللغة العربية ثم Apply: بعد انتهاء عملية التنزيل تظهر اللغة الجديدة ضمن الخيارات، يتم تعيينها كلغة رئيسية جديدة عن طريق سحبها إلى أعلى الخيارات كما في الصورة التالية: يجب بعدها إعادة تشغيل النظام، ثم تسجيل الدخول من جديد فتظهر خيارات للمستخدم حول تطبيق اللغة الجديدة على أسماء بعض المجلدات القياسية أو الاحتفاظ بالأسماء القديمة، يمكن الاختيار حسب رغبة المستخدم. نتصفح الإعدادات للتأكد، ونلاحظ تطبيق التغييرات بنجاح. قد تختلف الواجهة عن التي تستخدمها تبعًا للإصدار والتوزيعة، ولكن تتقارب العملية والخيارات مع كل توزيعات لينكس. تغيير اللغة باستخدام سطر الأوامر Command Line عند بداية عملية تثبيت توزيعة لينكس يطلب النظام من المستخدم اختيار لغة رئيسية للنظام، وقد يحتاج المستخدم لاحقًا إلى تغييرها إلى لغة أخرى، ويمكن تحقيق ذلك ببساطة عن طريق كتابة أمرين فقط في سطر الأوامر. على فرض يريد المستخدم تغيير اللغة الرئيسية من اللغة الانجليزية إلى اللغة العربية، يجب بدايةً التحقق من اللغة التي تم تعيينها كلغة رئيسية للنظام وذلك باستخدام الأمر الآتي: locale ستكون نتيجة تنفيذ الأمر السابق كالتالي: team@itsfoss:~$ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= يُلاحظ من الخرج السابق أن اللغة الرئيسية هي اللغة الانجليزية، ولتغييرها يُستخدم الأمر dpkg بالشكل التالي: sudo dpkg-reconfigure locales تظهر نتيجة تنفيذ السابق في سطر الأوامر كما يلي: يوجد الكثير من الخيارات ويمكن استخدام الأسهم على لوحة المفاتيح للتنقل بينها والعثور على اللغة المطلوبة وكما ذُكر سابقًا سيتم اختيار اللغة العربية كلغة جديدة رئيسية. يوجد خيارات لتخصيص اللغة أكثر، حيث يمكن اختيار اللغة العربية السورية مثلًا، وقد لا تتوفر هذه الخيارات في جميع اللغات ولكن في حال توافرها يجب اختيار UTF-8. بمجرد العثور على اللغة المطلوبة، يجب الضغط على مفتاح المسطرة على لوحة المفاتيح لتحديد هذه اللغة ثم الضغط على مفتاح الدخول ENTER. تتمثل آخر خطوة في تعيين اللغة من الخطوة السابقة كلغة افتراضية ويتم ذلك بالانتقال إليها باستخدام مفاتيح الأسهم ثم الضغط على مفتاح الإدخال كما في الشكل التالي: بمجرد الانتهاء مما سبق، ستظهر هذه الرسالة في سطر الأوامر: Generating locales (this might take a while)... en_US.UTF-8... done ar_SY.UTF-8... done Generation complete. وبهاتين الطريقتين يمكن تغيير لغة النظام إلى العربية أو أي لغة أخرى. المصادر مقال Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros لصاحبه Marco Carmona اقرأ أيضًا كيفية تثبيت توزيعة أوبنتو من لينكس بأبسط طريقة أنظمة التشغيل للمبرمجين
  20. تمتلك كل من توزيعة أوبنتو Ubuntu وآرتش Arch ميزات وخيارات كثيرة وتقدم كل منهما تجارب مختلفة تمامًا لسطح المكتب، مما يُصعّب عملية اختيار إحداهما دون الأخرى، لذا نسلط الضوء في هذا المقال على العديد من الاختلافات بين أوبنتو وآرتش التي تساعد المستخدم على اتخاذ القرار. 1. الجمهور المستهدف يستهدف أوبنتو المستخدمين الذين يريدون بيئة نظام لينكس معدّة مسبقًا ولا تحتاج إلى إعدادات كثيرة أو بذل جهد إضافي لتحسين تجربة العمل، حيث تتطلب بيئة أوبنتو تثبيت الأدوات الأساسية فقط وتوفر تجربة سطح مكتب مثالية مما يجعلها مناسبة لمعظم المستخدمين. من ناحية أخرى، يستهدف آرتش المستخدمين الذين لا يفضلون التعامل مع القوالب الجاهزة وإنما يفضلون ضبط كل شيء بأيديهم بما يتناسب مع احتياجاتهم، ويتحقق ذلك بفضل تجربة التخصيص Do-It-Yourself أي افعلها بنفسك وتُختصر إلى DIY التي تتيح تخصيص عناصر مختلفة من نظام لينكس مثل إنشاء حزم لتخصيص سطح المكتب مما يوفر بيئات سطح مكتب مختلفة. 2. التثبيت يمتلك أوبنتو واجهة رسومية تسهل وتوضح عملية التثبيت، وعلى الرغم من أن خادم أوبنتو Ubuntu server لا يمتلك واجهة رسومية إلا أنه يتيح إمكانية تثبيتها اختياريًا. بينما يُثبّت آرتش من خلال سطر الأوامر مما يصعب عملية التثبيت ولحسن الحظ تتوفر حديثًا أداة إرشادية لتسهل عملية التثبيت. لذلك يتفوق أوبنتو على آرتش في سهولة عملية التثبيت. 3. التعامل مع سطح المكتب صُمم أوبنتو بشكل يهدف إلى توفير الراحة لمستخدميه، حيث توفر شركة كانونيكال Canonical بيئة سطح مكتب GNOME مخصصة لتسهيل الأمور، وبيئة كيدي بلازما KDE Plasma والتي تتمتع بمستوى تخصيص أكبر من بيئة GNOME. يقدم أوبنتو دومًا أفضل إنتاجية في مجال تجربة المستخدم بناءً على تعليقات وردود أفعال مستخدميه. لا يوجد في آرتش أي تخصيص افتراضي وفي حال رغب المستخدم بذلك يجب عليه القيام ببعض التعديلات أو اللجوء لاختيار بيئة سطح مكتب مثل GNOME أو KDE Plasma، لذا تعتمد تجربة المستخدم على كيفية الإعداد عند تثبيت آرتش. على الجانب، يولي آرتش عمومًا اهتمامًا للفاعلية والجوانب الفنية الأخرى أكثر من تجربة المستخدم على سطح المكتب. يحصل مستخدم أوبنتو على خيارات محدودة لتخصيص سطح المكتب حسب رغبته، بينما يحصل مستخدم آرتش على حرية أكبر لاختيار سطح المكتب وتخصيصه وهذا يُعدّ ميزة لمستخدمي لينكس المحترفين وعائق لمستخدمي لينكس الجدد. 4. نظام الملفات تتميز جميع أنظمة ملفات توزيعات لينكس بالموثوقية مما يوفر الراحة لجميع المستخدمين، يستخدم أوبنتو نظام الملفات ext4 والذي يتميز بالقوة وامتلاك جميع الأساسيات اللازمة لمتطلبات الحوسبة الحديثة. في حال الحاجة لمزايا إضافية عما يقدمه نظام الملفات ext4 يمكن استخدام آرتش الذي يوفر عدة أنظمة ملفات مثل btrfs و ext4 و xfs و f2fs، ولكن يجب التأكد من امتلاك المستخدم الخبرة الكافية قبل استخدام أحد هذه الأنظمة. 5. تكامل تطبيقات المنظومة App Ecosystem تعتمد معظم توزيعات لينكس الشائعة على أوبنتو وذلك بسبب دعمه مجموعة واسعة من التطبيقات ولا يشمل إمكانية اختيار هذه التطبيقات أو الحزم فقط، بل سهولة التثبيت أيضًا، إذ يمكن تثبيت الحزم المتاحة من خلال مستودعاتها الرسمية مثل مستودع PPA (اختصار إلى Personal Package Archives) أو باستخدام مركز البرامج الخاص بها بالتكامل مع Snap. يدعم أوبنتو أداة Flatpak وهي أداة مساعدة لإدارة الحزم وتنزيل التطبيقات، غالبًا ما تتوفر الأداة بشكل افتراضي أما في حال عدم توافرها يمكن إعدادها من Flathub وهو متجر تطبيقات Flatpak الرسمي. أما بالنسبة إلى آرتش، لا يتوفر فيه Snap أو Flatpak افتراضيًا ولكن يمكن إعداد أي منهما عند الحاجة، وللوصول إلى المزيد من الحزم يمكن استخدام مستودع المستخدِم في آرتش Arch User Repository (المعروف اختصارًا AUR) والذي يتيح الوصول إلى عدد لا يحصى من التطبيقات، ومع ذلك قد لا يدعم بعض مطوري التطبيقات آرتش رسميًا. يستخدم آرتش مدير الحزم pacman لتثبيت وإدارة الحزم كما في الصورة التالية: تتغير الواجهة الرسومية GUI المساعدة على تثبيت التطبيقات حسب بيئة سطح المكتب التي اختارها المستخدم، على سبيل المثال يتم الوصول إلى المركز الخاص ببرامج بيئة سطح المكتب GNOME إذا جرى تثبيتها، والوصول إلى Discover إذا جرى تثبيت KDE Plasma. يتميز آرتش بمجتمع داعم للحزم ولكن قد لا يوصى به رسميًا لكل شيء، على الرغم من ذلك يُعتبر نقطة قوية لآرتش لأن الحزم التي يوفرها أشمل بالموازنة مع أوبنتو الذي يوفر منصة واحدة لتثبيت وإدارة البرامج بسهولة. 6. الحزم المثبتة افتراضيا يتيح آرتش للمستخدم تخصيص كل شيء من بداية إعداده، حيث يمكن اختيار تثبيت أقل عدد ممكن من الحزم، بالمقابل يحتوي أوبنتو على العديد من الأدوات والخدمات المثبتة افتراضيًا، ولكن قد تكون بعض الحزم زائدة عن حاجة بعض المستخدمين لذا يتيح أوبنتو إمكانية إزالة الحزم التي لا يحتاجها المستخدم. 7. الحرية والقيود المفروضة يمنح آرتش مستخدميه الكثير من الحرية لتخصيص تجربتهم، ولا يقتصر الأمر على بيئة سطح المكتب أو اختيار مدير ترتيب عرض النوافذ ولكن أكثر من ذلك حيث يمكن تحديد خادم الصوت المفضل بين PulseAudio و pipewire، كما يمكن للمستخدم اختيار نواة لينكس معينة، مثل إصدار hardened الذي يوفر المزيد من الأمان أو zen للحصول على تجربة مُحسّنة أو الإصدار طويل الدعم LTS من النواة. لا يوفر أوبنتو حرية اختيار نواة لينكس Linux Kernel المثبتة ويستعمل خادم الصوت PulseAudio دون توفير خيار آخر كما في آرتش. 8. المجتمع الداعم يمتلك أوبنتو عددًا ضخمًا من المستخدمين، لذا نجد العديد من المنتديات التي توجّه عمل المستخدمين وتساعدهم في استكشاف المشكلات وإصلاحها. بينما يمتلك آرتش عددًا أقل من المستخدمين وبالتالي لا يقدم هذا النوع من الدعم، ولكن يوفر آرتش ويكي wiki أي توثيقًا ممتازًا لكثير من حالات الاستخدام الشائعة مما يعوض عن نقص الدعم. 9. الإصدارات والتحديثات يتيح أوبنتو لمستخدميه الاختيار بين نوعين من الإصدارات وهي النسخ طويلة الدعم LTS والنسخ ليست طويلة الدعم non-LTS، إذ تتلقى النسخ طويلة الدعم تحديثات طفيفة كل خمس سنوات أو أكثر (للمؤسسات)، أما النسخ ليست طويلة الدعم تتلقى تحديثات خلال فترة أقصر حيث تكون التحديثات كل 9 أشهر مع توفر إصدار جديد كل 6 أشهر بالإضافة لوجود تغييرات مهمة محتملة مع كل ترقية للإصدار. يعد إصدار النسخ طويلة الدعم خيارًا أنسب للمستخدمين الذين لا يرغبون بتغييرات كبيرة في تجربة المستخدم مع كل تحديث. لا يعتمد آرتش على أي مما سبق، بل يقوم بإرسال التحديثات للمستخدمين فور صدورها سواء كانت تحديثات جوهرية أو طفيفة، وهذا ما يضمن امتلاك المستخدم لأحدث وأهم الحزم بشكل دائم، وهو ما يعتبر ميزة ولكن نظرًا لتنوع آراء المستخدمين فقد يكون خيار غير ملائم للبعض. 10. التوافق مع العتاد يتميز أوبنتو بتوافق كبير وآمن مع العتاد بسبب اختبار التوافق الذي يُجرى قبل طرح أي إصدار جديد، وقد يوجد بعض حالات عدم التوافق بسبب وجود تقنية حديثة لم يتم اختبارها مسبقًا. لا يتم اختبار التوافق في آرتش مما يجعل بعض نسخه لا تعمل مع بعض العتاد، ولكن يعمل آرتش بشكل أفضل من أوبنتو في بعض الحالات بسبب توفيره لأحدث الحزم، لذا في حال الرغبة في اختيار آرتش ولكن مع تخوّف من عدم التوافق مع العتاد يمكن اللجوء للمنتديات وأصحاب الخبرة للتأكد من عدم وجود مشكلات معروفة في العتاد المراد تشغيل آرتش عليه. 11. الاستقرار يعتبر آرتش أقل استقرارًا من أوبنتو بسبب التحديثات الكثيرة والتخصيص الذي يقوم به كل مستخدم حسب عمله، حيث يجب القيام بتعديلات بعد كل تحديث أو تخصيص للمحافظة على استقراره على عكس أوبنتو الذي لا يعاني من الأخطاء أو الفشل لذا هو مستقر بطبيعته. أيهما أختار أوبنتو أم آرتش؟ يتميز أوبنتو بالاستقرار والتوافق مع العتاد بالإضافة لسهولة تعلمه، لذا يعد أوبنتو خيارًا مناسبًا للمستخدم الجديد أو الذي لا تتعدى مهامه سوى إنجاز أمور بسيطة ولا يحتاج الكثير من التعديلات. بينما يتصف آرتش بالنقيض، فهو أقل استقرارًا وغير متوافق مع العتاد ويحتاج إلى وقت طويل لتعلمه لذا فهو مناسب للمستخدم الخبير والذي يرغب بالحصول على أحدث الأشياء ويفضل تخصيص تجربة سطح المكتب لتتناسب مع سير عمله بيده. بعض الأسئلة الشائعة قد تراود القارئ بعض الأسئلة حتى مع نهاية المقال، فيما يلي بعض الأسئلة الشائعة وأجوبتها: هل يعتبر آرتش أفضل من أوبنتو؟ لا توجد إجابة دقيقة لهذا السؤال فيمكن أخذ كلا الجوابين نعم ولا، حيث يعتبر آرتش أفضل من الناحية التقنية، ولكنه ينطوي على كثير من التفاصيل مثل الاستقرار وسهولة التعلم وتكامل تطبيقات المنظومة وغيرها، لذا يتم تحديد إجابة هذا السؤال بناءً على تفضيلات المستخدم. من الأسرع، أوبنتو أم آرتش؟ يعتبر آرتش أسرع من أوبنتو وذلك عند تخصيصه بالحد الأدنى من الحزم وغيرها من إعدادات التثبيت، حيث لا يعتبر أوبنتو بطيء ولكنه أبطأ من آرتش نظرًا لامتلاكه المزيد من الحزم المثبتة افتراضيًا والتي قد تكون غير ضرورية. متى يجب الانتقال من أوبنتو إلى آرتش؟ يجب على المستخدم الإكتفاء بتوزيعة أوبنتو طالما أن عمله لا يحتاج سوى المهمات الأساسية، ويمكن الإنتقال إلى آرتش في إحدى الحالات التالية: امتلاك مهارة كبيرة باستعمال أوبنتو الرغبة في إضفاء تعديلات شخصية تخصيص بعض الأمور تفضيل امتلاك أحدث الحزم على الاستقرار ترجمة -وبتصرف- للمقال Ubuntu vs Arch: Which Linux Distro is better?‎ لصاحبه Ankush Das. اقرأ أيضًا تحديث توزيعة أوبونتو من الإصدار 14.04 LTS إلى 16.04 LTS ما الفرق بين نسخة الخادم ونسخة المستخدم من أوبنتو لينكس إدارة الحزم على نسخة الخواديم من أوبنتو
  21. نحتاج دومًا إلى استخدام محرر النصوص للكثير من الأمور، منها تدوين الملاحظات أو كتابة شيفرة برنامج أو إجراء تعديل على ملف ضبط من إعدادات النظام وغيرها من الحالات التي يكثر فيها التعامل مع النصوص. تمتلك كل توزيعة لينكس برامج تحرير للنصوص مثبتة مسبقًا بغض النظر عن متطلبات المستخدم، مثل Gedit و Geany و Kate وغيرها التي تعد جميعها محررات حديثة مزودة بواجهة رسومية GUI، ولكن لا يفضل الجميع استخدام محرر نصوص بواجهة رسومية في جميع الحالات بل يُفضّل البعض استخدام محرر نصوص بواسطة سطر الأوامر، ويتيح نظام تشغيل لينكس هذا الخيار أيضًا حيث يوجد العديد من برامج تحرير النصوص التي يمكن استخدامها من سطر الأوامر ومن أشهرها برنامجي فيم Vim ونانو Nano، اللذان يستخدمان في سطر الأوامر CLI وهي اختصار Command Line Interface، يقدم كل منهما معظم الميزات الأساسية لمحرر النصوص ويوجد بعض الاختلافات فمثلًا يأتي نانو مدمجًا في معظم توزيعات لينكس، بينما يحتاج فيم في بعض التوزيعات إلى تثبيته يدويًا. لا يمكن اتخاذ القرار بشأن استخدام أي منهما إلا بعد التعرّف على تفاصيل وإمكانيات كل منهما وهو ما سنعرضه في هذا المقال. 1. مقدمة عن محرر النصوص فيم ومحرر النصوص نانو محرر النصوص فيم أُصدر فيم عام 1991 وهو نسخة محسّنة من محرر النصوص Vi الذي طُوّر عام 1976 لنظام التشغيل. يونكس Unix، ويُعرف فيم أيضًا باسم محرر نصوص المبرمِج، وذلك بسبب امتلاكه العديد من الميزات التي تساعد في تعديل ملفات البرنامج، ولا يعتبر فيم حكرًا على المبرمجين حيث يمكن استخدامه لكتابة وتحرير ملفات نصية عادية حتى مع امتلاكه إمكانيات متطورة. محرر النصوص GNU nano أما المحرر غنو نانو GNU nano ويُعرف اختصارًا باسم نانو Nano، فهو محرر نصوص بسيط يعمل بواسطة سطر الأوامر ويعتمد على يونكس Unix ومستوحى من بيكو Pico، حيث كان Pico جزءًا من مجموعة Pine للبريد الإلكتروني التي طورتها جامعة واشنطن في عام 1989 ولكن كان من الصعب تضمينه في توزيعات لينكس لعدم امتلاكه ترخيص GPL، لذا طُوِّر محرر النصوص نانو كبديل مجاني للمحرر Pico، كما عُرف نانو في البداية باسم tip ثم أعاد ريتشارد ستولمان Richard Stallman تسميته مباشرةً قبل أن يعلن نانو برنامجًا رسميًا من برامج GNU. أهم ما يميز هذا المحرر هو سهولة الاستخدام حيث يمكن لأي شخص استعماله وليس بالضرورة أن يكون مبرمجًا. 2. مزايا محرر فيم مقابل مزايا محرر نانو فيما يلي الاختلافات الرئيسية بين فيم ونانو. تُلخص الميزات الرئيسية لمحرر فيم بالميزات التالية: يتيح التراجع عن آخر خطوة Undo لعدة مرات التركيز على تركيب الجملة التعديل بواسطة سطر الأوامر إكمال اسم الملف تقسيم شاشة العمل والذاكرة التشعب استرداد العمل السابق سريع الأداء لاعتماده على تجزئة المهام أما الميزات الرئيسية لمحرر نانو، فتلخص بالميزات التالية: فتح ملفات متعددة معًا تصفح المستند بالاعتماد على الأسطر التراجع عن خطوة ما إعادة تنفيذ خطوة معينة تلوين التركيب النحوي للجملة ترقيم الأسطر نلاحظ بشكل عام أن فيم يوفر إمكانيات أكثر تقدمًا ومع ذلك يقدم كلاهما الميزات الأساسية لتحرير ملفات نصية مثل ضبط إحدى إعدادات النظام وملفات الشيفرات البرمجية. 3. استخدام محرر النصوص يعتبر فتح ملف موجود مسبقًا في كل من فيم أو نانو عملية سهلة وتتحقق من خلال كتابة اسم محرر النصوص المراد استخدامه (فيم أو نانو) متبوعًا بمسار الملف كما يلي: vim Documents/text.txt nano Documents/text.txt ولكن هناك ما هو أكثر بكثير من مجرد الوصول إلى ملف أو فتحه باستخدام محرر النصوص، فيما يلي قائمة ببعض نقاط للمقارنة بين فيم ونانو حول استخدام كل منهما: table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } نانو Nano فيم Vim سهل الاستخدام يعمل في عدة أوضاع Mode-driven سهل التعلم صعب التعلم مصمم بهدف إجراء تعديلات سريعة استرداد العمل السابق بسهولة تلوين التركيب النحوي للجملة دلالةً على وجود خطأ يوفر قدرات متقدمة الفرق الأساسي بين نانو وفيم هو أن الجمهور المستهدف مختلف تمامًا. استخدام فيم يعمل في أوضاع تحرير متعددة Mode-driven منها: الوضع العادي الوضع المرئي وضع الإدراج الكتابة بواسطة سطر الأوامر التحرير بواسطة سطر الأوامر يعمل فيم بشكل افتراضي في الوضع العادي، ويمكن ضبط فيم كأداة كتابة حتى مع كل الأوضاع، وتتصرف أزرار لوحة المفاتيح نفسها تصرفًا مختلفًا تبعًا للوضع المفعَّل، فمثلًا يمثل زر h على لوحة المفتاتيح الحرف h في وضع الكتابة ويتحول في الوضع العادي إلى زر حركة فيحرك مؤشر الكتابة إلى اليسار بمقدار حرف واحد، ويحرك الحرف l (حرف L صغير) مؤشر الكتابة إلى اليمين بمقدار حرف واحد، وينقل الحرف j مؤشر الكتابة إلى الأسفل بمقدار سطر، وينقل الحرف k مؤشر الكتابة إلى الأعلى بمقدار سطر، كما يمكن استخدام أزرار الأسهم للتنقل. أما المفاتيح الأكثر استخدامًا فهي: "w" و "b" و "e" وشرحها وفق التالي: "w": ينقل مؤشر الكتابة إلى الكلمة التالية، وإذا كان المؤشر موجودًا في بداية الكلمة فينقله إلى بداية الكلمة التالية "b": ينقل المؤشر إلى بداية الكلمة الموجودة على يسار الكلمة الحالية "e": ينقل المؤشر إلى نهاية الكلمة الموجودة على اليمين كما يمكن مزج الأرقام بهذه المفاتيح، مثال: يؤدي الضغط على "6w" إلى تحريك المؤشر بمقدار ست كلمات للأمام. التبديل بين الأوضاع المختلفة يتطلب الضغط على مفاتيح محددة مثل: "i": لتفعيل وضع الإدراج "CTRL + C": للعودة إلى الوضع العادي "wq:": لحفظ الملف وإغلاق النافذة كل ما سبق هو لمحة بسيطة عن فيم، لمعرفة المزيد يمكن استخدام الأمر vimtutor الذي يقدم معلومات عن الأوامر الأساسية للتعامل مع الملفات كحذف ملف ما أو تعديله أو حفظه وغيرها. استخدام GNU nano يمتلك نانو واجهة أساسية تفاعلية تحتوي على معلومات مهمة في أسفل النافذة تسهل عمل المستخدم عند تنفيذ الإجراءات الأساسية ولا يحتاج إلى الاستعانة بصفحة دليل المستخدم أو أي توثيق آخر. هذا هو السبب الأساسي في تفوق نانو على فيم من ناحية سهولة الاستخدام، ومع ذلك لا تزال بعض المصطلحات المستخدمة في نانو مصطلحات قديمة، مثال على ذلك أمر "Write Out" يعني اكتب التعديلات بدلًا من "Save" يعني احفظ التعديلات على الملف وأمر "Where Is" يعني أين كذا بدلًا من "Search" يعني ابحث عن كذا، لكنها لا تعتبر مشكلة كبيرة إذ من السهل التعود عليه. لا يتشابه نانو مع استخدام Notepad أو Gedit (برامج تمتلك واجهة رسومية)، حيث عادةً ما تكون تركيبة المفاتيح لإجراء عملية القص هي "Ctrl + X" في معظم برامج التحرير الحديثة ولكن تكون في نانو "Ctrl + K". يستخدم الرمز "^" للإشارة إلى استخدام مفتاح Ctrl كمفتاح تعديل ويستخدم كمجموعة مع المفاتيح المجاورة له. توجد أيضًا مجموعات مفاتيح والاختصارات مثل: Ctrl + F لتحريك المؤشر إلى الأمام Ctrl + B الانتقال إلى الخلف Ctrl + X للخروج Ctrl + O لحفظ الملف أو حفظ الملف باسم Alt + U للتراجع عن الإجراء الأخير Ctrl + ← كلمة واحدة للخلف Ctrl + → كلمة واحدة للأمام مما سبق، يناسب محرر نانو المبتدئين خصوصًا عندما يكون كل ما يحتاجه المستخدم هو تحرير ملف من حين لآخر. 4. سهولة التعلم نلاحظ مما سبق أن فيم يختلف عن محرر النصوص التقليدي وهذا هو السبب الأساسي لكونه برنامجًا صعب الممارسة في الفترة الأولى من تعلمه واستخدامه، بينما تعتبر إمكانيات فيم المتقدمة ميزة بالنسبة للمستخدمين ذوي الخبرة وخاصة من ناحية توفير الوقت. بناء على ذلك، إذا كان المستخدم مبرمجًا أو يقوم بتحرير العديد من الملفات بين الحين والآخر فاستخدام فيم كمحرر نصوص خاص به يعتبر الخيار الأنسب، بالمقابل يحتاج نانو إلى وقت أقل لتعلمه نظرًا لامتلاكه بعض التشابه مع محرر النصوص المعتمد على الواجهة الرسومية مثل Gedit أو Notepad. هل أستعمل فيم أم نانو؟ يتيح فيم تنفيذ مجموعة متنوعة من المهام وذلك بسبب تميزه بالمرونة، ولكن من الصعب الاعتياد على آلية عمله وأوضاعه بالنسبة للمستخدم العادي، بينما يعتبر التعامل مع نانو أسهل لأنه يتيح للمستخدم القيام بالتعديلات بوضوح وبساطة. غالبًا ما يوصى باستخدام محرر النصوص نانو في البداية، وعند الحاجة إلى مزيد من الميزات أو إنجاز المهام بشكل أسرع يمكن الانتقال إلى فيم. الأسئلة الشائعة حول فيم ونانو هل فيم أفضل من نانو؟ من الناحية التقنية نعم، ولكن إذا لم تكن هناك حاجة إلى ميزات إضافية فإن استخدام فيم سيشكل عبئًا على المستخدم. هل يستخدم المبرمجون فيم؟ نعم، يميل المبرمجون ومديرو الأنظمة إلى استخدام فيم بسبب إمكانياته المتقدمة. هل نانو أكثر شهرة؟ نعم، يعتبر نانو أكثر شهرة لكونه يأتي مدمجًا مع معظم توزيعات لينكس ويعتمد عليه معظم المستخدمين بينما فيم يستخدمه قلة من الناس. ترجمة -وبتصرف- للمقال Vim vs Nano: What Should You Choose?‎ لصاحبه Pratham Patel. اقرأ أيضًا محررات النصوص المستعملة في تطوير مواقع الويب .تعرف على أساسيات Vim - الجزء الثاني
  22. تعد حزم سناب Snap جزءًا لا يتجزأ من نظام أوبنتو المتكامل ولكنها ليست خيارًا مفضلًا لدى الجميع لأنها ذات حجم كبير وتحتل مساحة كبيرة على القرص مما يسبب مشكلات كثيرة خاصةً عند محدودية مساحة القرص في الجزء الرئيسي للجذر root partition. يحتاج المستخدم إلى حل يخفض مساحة الكبيرة التي تحتلها حزم سناب بعض الأحيان وهو ما سيناقشه هذا المقال بالتفصيل ويعرض آلية تلقائية لحل هذه المشكلة. إزالة إصدارات حزم سناب القديمة لتحرير مساحة على القرص تُخزَّن ملفات النظام المتعلقة بسناب في مجلد var/lib/snapd/ والذي يمكن أن يبلغ حجمًا كبيرًا بناءً على عدد الحزم التي تم تثبيتها، ويساعد الأمر du على التحقق من حجم المجلد كما يلي: abhishek@its-foss:~$ sudo du -sh /var/lib/snapd 5.4G /var/lib/snapd كما يمكن إجراء التحقق السابق من خلال أداة Disk Usage Analyzer لتحليل استخدام مساحة القرص والمزودة بواجهة رسومية GUI. يُظهر خرج الأداة الحجم الكبير للمساحة المُستخدمة مما يتطلب تحرير بعض المساحة. صُمّم سناب ليحتفظ بإصدار واحد قديم على الأقل من الحزم التي ثُبِّتت على النظام، ويمكن رؤية هذه العملية باستخدام أمر سناب الآتي: snap list --all تظهر الصورة التالية نتيجة تنفيذ الأمر السابق: نلاحظ تكرار الحزمة مرتين ولكن مع وجود رقم إصدار مختلف لكل حزمة، تمتلك إحدى الحزمتين التسمية "معطل disabled" وهي ما يميز الحزمة الإضافية الواجب حذفها بهدف تحرير مساحة على القرص. إذا لم يرغب المستخدم في اتباع الطريقة اليدوية، فتوجد طريقة أخرى آلية بفضل سكريبت فعال كتبه آلان بوب Alan Pope أثناء عمله في فريق Snapcraft، ولكن يجب الانتباه أن هذا السكريبت قد لا يعمل عندما تكون لغة الحاسوب فرنسية مثلًا وبعض اللغات الأخرى لأن التسمية "disabled" في عمود الملاحظات Notes من المحتمل أن تكون مختلفة في لغات أخرى عن التسمية في اللغة الانجليزية. لإنشاء وتشغيل سكريبت في صدفة bash، يجب بدايةً إنشاء ملف جديد باسم clean-snap.sh ثم كتابة الأسطر الآتية فيه: #!/bin/bash # Removes old revisions of snaps # CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done ثم حفظ ما سبق وإغلاق محرر النصوص. لتشغيل السكريبت يجب بدايةً حفظه في مجلد المنزل home directory ثم تشغيل سطر الأوامر في أوبنتو وتنفيذ الأمر التالي: sudo bash clean-snap.sh توضح الصورة التالية مخرجات الأمر عارضةً عملية إزالة إصدارات حزم سناب القديمة: نعيد التحقق من حجم المجلد على القرص باستخدام الأمر التالي: abhishek@its-foss:~$ sudo du -sh /var/lib/snapd 3.9G /var/lib/snapd نلاحظ انخفاض حجم المجلد، ويمكن استخدام هذه الطريقة متى ما احتاج المستخدم التحقق من حجم المجلد. آلية عمل سكريبت حذف حزم سناب القديمة تُمرر نتيجة تنفيذ الأمر "snap list –all" إلى الأمر awk، حيث تعتبر Awk أداة فعالة للتعامل مع النصوص استعملها السكريبت، ثم يبحث الجزء awk '/disabled/{print $1, $3}‎' عن الكلمة 'disabled' (التي من الممكن أن تختلف بحسب لغة النظام كما أشرنا سابقًا) في كل صف وعندما يعثر عليها يقوم باستخراج العمودين الأول والثالث والذي يُمرر بدوره إلى مجموعة من أوامر القراءة والحلقات التكرارية، فيعطي أمر القراءة Read command قيمة العمود الأول لاسم الحزمة snapname وقيمة العمود الثالث لمتغير المراجعة revision variable. يبدأ الآن تشغيل أمر إزالة سناب باستخدام المتغيرين السابقين، وتستمر حلقة while التكرارية بالعمل طالما أنها تجد حزمة معطلة أي تحتوي على الكلمة 'disabled' في تفاصيلها. آلية عمل السكريبت سهلة بالنسبة للمستخدمين الذين يعلمون كيفية كتابة السكريبت في الصدفة shell scripting، بينما ستبدو الآلية معقدة لمن لا تتوفر لهم هذه المعرفة أما إن كنت جديدًا على بيئة الصدفة وكتابة السكربتات، فننصحك بقراءة سلسلة مدخل إلى كتابة سكربتات الصدفة. استعادة الغيغابايتات GBs الخاصة بالمستخدم ينصح البعض بتحديد قيمة الاحتفاظ retention value الخاصة بحزمة سناب بالقيمة 2، ويتم ذلك باستخدام الأمر الآتي: sudo snap set system refresh.retain=2 ولكن يقوم سناب بذلك تلقائيًا الآن لذا لا توجد حاجة لها، إذ يخزن سناب نسختين من كل حزمة وفي حال نفاذ المساحة يمكن إعادة ما سبق والتخلص من إصدار الحزمة الإضافية لتحرير المساحة. ترجمة -وبتصرف- للمقال How to Clean Up Snap Package Versions in Linux [Quick Tip] لصاحبه Abhishek Prakash. اقرأ أيضًا كيفية تقسيم وتهيئة أجهزة التخزين في لينكس كيفية إجراء مهام إدارة أجهزة التخزين البسيطة في لينكس مدخل إلى مدير وحدات التّخزين المنطقيّة في نظام لينكس LVM دليل لفهم حاويات لينكس وكيفية التعامل معها
  23. يمكن إجراء التحقق من مقدار مساحة القرص الحرة في نظام لينكس Linux باستخدام سطر الأوامر Terminal أو بالاعتماد على واجهة رسومية GUI. الطريقة الأولى: باستخدام سطر الأوامر إن أبسط طريقة هي استخدام الأمر df، وهو اختصار المصطلح disk-free أي المساحة الفارغة على القرص، ويكتب الأمر كالآتي: df -h يساعد الخيار h- على عرض المساحة الفارغة على القرص بتنسيق ميغابايت وغيغابايت والذي يجعله قابلًا للقراءة والفهم من المستخدم، وتسمى هذه الصيغة human-readable أي صيغة يمكن للبشر قراءتها والمقصود به المغاير للآلة. تظهر الصورة التالية نتيجة تنفيذ الأمر df والمطبق في نظام Dell XPS، والذي يحوي نسخة لينكس مثبتة عليه مع قرص مشفر قد يكون الخرج الظاهر السابق غير واضح بعض الشيء للعديد من المستخدمين، لذا فيما يلي شرح لبعض التفاصيل. عند استخدام الأمرdf للتحقق من مقدار مساحة القرص الحرة في لينكس، يعرض الخرج بعض المعلومات المتعلقة بأنظمة الملفات file systems وحجمها الكلي بالإضافة إلى المساحة المستخدمة على القرص ومساحة القرص الخالية. يجب أن تظهر الأقراص الفعلية عادةً بإحدى الأشكال التالية: /dev/sda /dev/sdb /dev/nvme0n1p لا تعد الأشكال السابقة معيارية ولكنها تساعد على تحديد القرص الفعلي بدقة بين بقية الأقراص. قد يُجزَّئ القرص إلى عدة أقسام يمكن الإقلاع من أحدها مثل: EFI ،root ،swap ،home وغيرها، عندها تنعكس هذه الأقسام برقم في نهاية اسم القرص مثل: dev/sda1/ أو dev/nvme0n1p2/ وما إلى ذلك. يمكن تخصيص كل قسم لهدف معين وذلك بواسطة نقطة وصل mount point تصل القسم بنظام التشغيل وتكون عبارة عن مجلد أو ملف يمكن من خلاله الوصول إلى نظام الملفات، ويتم وصل الجذر Root على المسار /، ويتم وصل قسم EFI عبر المسار boot/EFI/ وهكذا. في الحالة الموضحة في الصورة التالية، خُصصت نسبة 41٪ من مساحة القرص البالغة 232 جيجابايت للجذر، أما في حال وجود قسمين أو ثلاثة أقسام كبيرة الحجم مثل الجذر والمجلد الرئيسي home فيجب عندها القيام ببعض الحسابات الدقيقة لتخصيص المساحة المناسبة لكل منها. يجدر الإشارة إلى الأقسام التالية: tmpfs: وهو اختصار temporary file system أي نظام الملفات المؤقت والذي يستخدم لحفظ الملفات في الذاكرة الافتراضية وليس من الضروري استخدامه. udev: يُستخدم نظام الملفات udev لتخزين المعلومات المتعلقة بالأجهزة الموصولة بحاسوب المستخدم كبطاقة الشبكة وسواقة الأقراص المضغوطة ومنفذ USB، أيضًا ليس من الضروري استخدامه. dev/loop/: هي عبارة عن أجهزة تكرارية loop devices يلاحظ وجود الكثير منها عند التحقق من مساحة القرص الحرة في أوبنتو وذلك بسبب تطبيقات سناب Snap. تعتبر الأجهزة التكرارية أجهزة افتراضية تسمح بالوصول إلى الملفات العادية كأجهزة كتلية block devices، وتساعد الأجهزة التكرارية على عزل تطبيقات سناب في أقراصها الافتراضية الخاصة، وطالما كان موقعهم ضمن الجذر فلا توجد حاجة لحساب مساحة القرص المستخدمة بشكل منفصل. معالجة المساحة المفقودة على القرص يجب بدايةً التحقق فيما إذا كانت الأقسام والأقراص موصولة mounted، إذ يعرض الأمر df مساحة القرص لأنظمة الملفات الموصولة فقط، في حال استخدام أكثر من توزيعة لينكس واحدة (أو أنظمة تشغيل أخرى) على نفس القرص، أو وجود عدة أقراص على النظام فيجب وصلها أولًا لمعرفة المساحة الخالية المتوفرة على تلك الأقسام والأقراص. على سبيل المثال في الصورة التالية يحتوي حاسوب Intel NUC المصغر على قرصين SSD و 4 أو 5 توزيعات لينكس مثبتة عليهما، وتظهر الأقراص الإضافية عندما تُوصل فقط. يمكن استخدام الأمر lsblk لرؤية جميع الأقراص والأقسام الموجودة على النظام كما في الشكل التالي: لوصل القرص يجب معرفة اسمه فقط ويتم الوصل كما يلي: sudo mount /dev/sdb2 /mnt الطريقة 2: بالاعتماد على واجهة رسومية GUI تعد هذه الطريقة في أوبنتو أسهل بكثير من الطريقة السابقة، حيث تتحقق من مقدار مساحة القرص الحرة في لينكس بيانيًا ويوجد أداتين لهذا الغرض هما الأداة Disk Usage Analyzer والأداة GNOME Disks. الأداة Disk Usage Analyzer استخدامها سهل للغاية، حيث تعرض جميع الأقراص والأقسام الفعلية، وقد يحتاج المستخدم إلى وصل بعض الأقسام من خلال النقر عليها، إذ تعرض الأداة استخدام القرص لجميع الأقسام الموصولة. 2. الأداة GNOME Disks تعد GNOME Disks أداة مفيدة واستخدامها كما يلي: تشغيل الأداة تحديد أحد الأقراص اختيار أحد الأقسام لمعرفة المساحة الحرة على القرص ملاحظة: في حال لم يظهر القسم، يمكن وصله ببساطة وذلك عن طريق النقر على رمز التشغيل play icon كما في الصورة التالية: توفر غالبية بيئات سطح المكتب الرئيسية أنواعًا من الأدوات البيانية للتحقق من استخدام مساحة القرص في لينكس. ترجمة -وبتصرف- للمقال How to Check Free Disk Space on Linux [Terminal and GUI Methods] لصاحبه Abhishek Prakash. اقرأ أيضًا مدخل إلى مصطلحات ومفاهيم التخزين في لينكس الدليل النهائي لاختيار توزيعة لينكس مقدّمة إلى أدوات ضغط الملفّات على نظام لينكس
  24. يعمل كل من أوبن ستاك OpenStack وكوبيرنيتيس Kubernetes معًا لتسهيل عمل مديري الأنظمة sysadmins والمطورين والمستخدمين على حدٍ سواء، حيث أجاب غالبية المستخدمين في استطلاع لمستخدمي أوبن ستاك عام 2021 أنهم يستعملون كوبيرنيتيس أداة لتنسيق الحاوية أو أداة PaaS (أي منصة كخدمة Platform as a Service) لإدارة تطبيقات أوبن ستاك الخاصة بهم. يعتمد المستخدمون على كل من أوبن ستاك وكوبيرنيتيس بعدة طرق، ويوجد بعض حالات الاستخدام النموذجية. كوبيرنيتيس على أوبن ستاك يجب تشغيل كوبيرنيتيس في بيئة ما ويمكن أن تكون هذه البيئة جهاز أوبن ستاك وهمي virtual machine، وبما أن أوبن ستاك مُصَمم لتشغيله على نطاق واسع فهو يتيح لعنقود كوبيرنيتيس أن يعمل بنفس الطريقة، حيث أن عنقود كوبيرنيتيس عبارة عن مجموعة من العقد التي تقوم بتشغيل تطبيقات في حاويات. كما توفر واجهات برمجة تطبيقات الخاصة بأوبن ستاك طبقة تجريدية ملائمة لكوبيرنيتيس للتكامل معها. أوبن ستاك في حاوية كوبيرنتيس يوفر استخدام الحاويات مرونة وسرعة كبيرة في عملية نشر البنية التحتية بالإضافة لإمكانية إلغاء النشر بنفس المرونة والسرعة وهو أحد أهم أسباب استخدامها، وتتميز حاويات كوبيرنيتيس بالاستقلال وتوفير شيفرات مساعدة صغيرة الحجم نسبيًا مما يساعدها على تشغيل بنية تحتية دائمة التوفر، كما يتميز أوبن ستاك بالقوة وقابلية التوسع، لذا يقدم تشغيل أوبن ستاك في حاويات إمكانيات متطورة بسبب دمج ميزات كل منهما معًا. فيما يلي سكربت script لبدء التشغيل ويوضح السهولة التي يمكن بها إنشاء مضيف جديد ونسخة كوبيرنيتيس على أوبن ستاك: \#!/usr/bin/env bash CWD="$(pwd)" ${OSH_INFRA_PATH:="../openstack-helm-infra"} pushd ${OSH_INFRA_PATH} make dev-deploy setup-host make dev-deploy k8s popd أوبن ستاك مستقل مع كوبيرنتيس يوفر أوبن ستاك مزايا وخدمات كثيرة قد لا يحتاجها المستخدم كلها، يمكن في هذه الحالة تحديد بعض خدمات أوبن ستاك والاستفادة منها مع كوبيرنيتيس، فمثلًا يمتلك مزود SIG السحابي مجموعة متنوعة من الإضافات plugins لتحقيق التكامل مع عنقود كوبيرنتيس، مثل إضافات للتحكم في الدخول والمعالجة التلقائية للأخطاء وتفويض مصادقة تواصل تطبيقات الويب وإدارة المفاتيح وتخزين البيانات، فيختار منها المستخدم ما يحتاج إليه. كما طُوّرت العديد من خدمات أوبن ستاك لتعمل من دون متحكم الحوسبة نوفا Nova، مما يتيح للمستخدم اختيار مزود البنية التحتية لتشغيل عنقود كوبيرنيتيس والاستفادة من مزايا مزود آخر في طريقة تخزين البيانات مثلًا. يتحقق الاستخدام العملي لأوبن ستاك وكوبيرنيتيس معًا عن طريق تثبيت DevStack ثم البحث عن مزيج يناسب ويُحسّن عمل المستخدم، كما قد يساهم المستخدم في التطوير وذلك باكتشافه وجود فجوة ما ولفت انتباه مجتمعي التقنيتين إليها. كوبيرنيتيس على الأجهزة المزودة بخدمة Ironic تُعَد أيرونيك Ironic خدمةً تقوم بتوفير بنية تحتية مجردة أو مستقلة bare metal في أوبن ستاك والتي تعني أنه يمكن للعميل استخدام جهاز فعلي بدلًا من جهاز وهمي، كما تقوم أيرونيك بتهيئة البنية التحتية اللازمة لتشغيل الحاويات، لذلك تشغيل حاويات كوبيرنيتيس على الأجهزة المزودة بخدمة أيرونيك يكسبها مرونة في تعديل الحاوية ويساعد على التخفيف من مشاكل المشغل اليومية مثل النشر والتحديث، كما يمنح الحاوية ميزة التكامل المباشر مع موارد الحوسبة والشبكة والتخزين. يمكن للمشغّل operator التفاعل مع العنقود وإجراء التغييرات بسرعة أكبر في عمليات النشر التي لا يحتاج المستخدمون فيها إلى الفصل، وعادةً ما يخفي مشغل الحاوية الآني هذا الأمر عن المستخدمين كمسألة أمنية. المجتمع والتقنيات مفتوحة المصدر انتشر في المجتمع التقني لفترة طويلة من الزمن مفهوم خاطئ حول كوبيرنيتيس وأوبن ستاك، بأنهما سيكونان في مواجهة مستمرة ويتنافسان على الهيمنة، ولكن تغير المفهوم بسبب عملهما وتكاملهما معًا بعدة طرق مما سهل عمل المشغلات ووفر السرعة والمرونة للمستخدم، لذا يبذل مؤسسي مجتمعات كوبيرنيتيس وأوبن ستاك جهودًا حثيثة للتعاون المستمر، بالإضافة إلى عدد كبير من المطورين والموثقين والمستخدمين والمشغلين الذين يعملون جميعًا على جعل مشروعي البرنامجين أفضل وأكثر متانة، حيث تعمل فرق مشروع أوبن ستاك على تحقيق استقلال خدماتهم بالإضافة إلى ترقية خدمات النشر لتحقيق التكامل مع كوبيرنتيس كما تقوم بتنمية وتعزيز مشاريع مثل Kuryr لوصل الحاويات مع شبكات أوبن ستاك. على جانب كوبيرنيتيس، يعمل مزود SIG السحابي على تطوير وتحديث قائمة الإضافات المتاحة في مزود أوبن ستاك السحابي لتحقيق التكامل مع حاويات كوبيرنيتيس وتعويض النقص فيها، ويتم اختبار التكامل للتأكد من أن المشروع يعمل على بنية تحتية من أوبن ستاك. بسبب هذا العمل التعاوني على كلا الجانبين وتوافر أنظمة دعم بديلة لكل من أوبن ستاك وكوبيرنتيس، كل ذلك يجعل البنية التحتية أفضل وتوفر الحلول لكثير من مشاكل المستخدمين. ترجمة -وبتصرف- للمقال How to use Kubernetes and OpenStack together لصاحبه Kendall Nelson. اقرأ أيضًا مدخل إلى أوبن ستاك OpenStack نظام كوبيرنتس Kubernetes وكيفية عمله الانتقال إلى الحوسبة السحابيّة
  25. تختلف دوكر Docker عن كوبيرنيتيس Kubernetes من ناحية حالة الاستخدام ولكنهما تعملان معًا وبشكل متكامل في عمليات النشر المعقدة والواسعة النطاق. يمكن بواسطة دوكر تطوير وشحن التطبيقات داخل الحاويات (المعروفة أيضًا باسم صور دوكر)، بينما يُعتبر كوبيرنيتيس تنسيق عالي المستوى high-level orchestration لمليارات من هذه الحاويات، ولفهم عملية التنسيق أكثر، انظر مقال الفرق بين التنسيق والأتمتة. ستتضح في نهاية المقال الصورة الكبيرة للمنصتين وذلك بعد فهم الفكرة النظرية بالإضافة للتفاصيل العملية. تعريف الحاويات containers لتوضيح مزايا المنصتين من الأفضل التركيز على الأساس الذي تعتمد عليه وشرحه وهو الحاويات containers، يُستخدم مفهوم الحاويات في تطوير التطبيقات ونشرها، والحاوية عبارة عن مجموعة برمجية متكاملة unit of software تقوم بجمع التعليمات البرمجية وجميع الاعتماديات dependencies معًا بحيث يمكن تشغيل التطبيق بسرعة وموثوقية في أي بيئة حوسبة. يمكن وصف الحاويات بأنها آلات افتراضية ذات حجم منخفض lightweight virtual machines، إذ تتطلب الآلات الافتراضية محاكاة نظام التشغيل بالإضافة إلى أي تطبيق برمجي يُراد تشغيله بشكل افتراضي، الأمر الذي يجعل من الآلات الافتراضية مُستهلِكًا شرهًا للموارد لذا تم تقديم الحاويات بواسطة نظام التشغيل لينكس لمعالجة هذه المشكلة. يمكن فهم الأمر ببساطة عن طريق السيناريو الآتي: إذا كان لديك نظام تشغيل لينكس يعمل على حاسوبك، فلماذا لا تنشئ نظام تشغيل جديد لكل جهاز افتراضي يستخدم نظام التشغيل هذا؟ يمكنك بدلًا من ذلك استخدام نظام التشغيل الأساسي والذي يسمى النواة kernel لكل جهاز افتراضي وبذلك يمكن للأجهزة الافتراضية تشغيل البرامج المطلوبة فقط. تساعد الحاويات فريق المطورين مهما كان عدده على حل مشكلات مثل الاتساق وقابلية التوسع والأمان. يمكن استخدام حاويات مثل دوكر لفصل التطبيق عن البنية التحتية الأساسية. ما هو دوكر؟ يُستخدم دوكر من أجل فصل التطبيق عن البنية التحتية الأساسية، إذ يقوم بتجميع التعليمات البرمجية الخاصة بالتطبيق وجميع اعتمادياتها في كيان واحد قائم بذاته ومستقل يعمل على أي نظام مدعوم. إلى جانب كونه النظام الأساسي الأكثر شيوعًا والمعيار الفعلي لصور الحاويات container images، فإن مزايا دوكر هي نفسها فوائد التجميع ضمن الحاويات containerization. يتميز دوكر بأنه قابل للنقل وقابل للتطوير ويعتبر آمن لكونه معزول، وقد يكون هذا إعدادًا مختلفًا عن المُعتاد، مما يقودنا إلى بعض عيوب دوكر، إذ يعاني التجميع ضمن الحاويات من بعض العيوب، ويقول الرافضين لها أنها لا تعمل بهدوء وبطء كما يتم في بيئة مجردة bare metal والتي تُثبّت فيها الأجهزة الافتراضية مباشرةً على العتاد hardware بدلًا من تثبيتها في داخل نظام التشغيل المضيف مثل VMware و hypervisor، كما أنه لا يوفر تكامل جيد مع تطبيقات المنظومة. بما أن الحاوية يمكن نقلها وتعديلها، هذا ما يؤدي إلى مشاكل في التخزين الدائم persistent storage، كما يصبح أداء بعض التطبيقات سيئًا مع الحاويات خاصة إذا كانت تطبيقات أحادية المستوى monolithic applications أي يتم فيه دمج واجهة المستخدم وكود الوصول إلى البيانات في برنامج واحد من منصة واحدة. ما هو كوبيرنيتيس؟ كوبيرنيتيس هو المعيار الحالي في أنظمة تنظيم واتساق الحاويات orchestration الذي يسهّل عمليتي إدارة الحاويات ونشرها على نطاق واسع. طورت Google هذه التقنية بناءً على سنوات من الخبرة في مجال إنتاج الحاويات، ويزود كوبيرنيتيس المستخدم بصندوق أدوات toolbox يعمل على أتمتة عملية توسيع نطاق التطبيقات وأتمتة عملية تشغيل التطبيقات الموجودة في الحاويات في بيئة الإنتاج. يتميز كوبيرنيتيس بما يلي: توزيع الحمل التحزيم الآلي أنظمة ذاتية لمعالجة الأخطاء تعمل بكفاءة مع منهجيات التكامل المستمر والتوزيع المستمر CI/CD تنسيق متطور لعمليات النشر المعقدة يعاني كوبيرنيتيس من بعض العيوب، وهي المعاكس لجميع المزايا المذكورة أعلاه: يمكن أن يكون حلًا مبالغًا به لكثير من الحالات باستثناء التطبيقات المعقدة وكبيرة الحجم يمكن أن يعاني من بطء خلال التنفيذ ويحتاج إلى وقت لتعلمه التنسيق المتطور الذي يتميز به يضفي تعقيدًا إضافيًا على المشروع الفرق بين كوبيرنيتيس ودوكر كما هو مشار إليه في بداية هذا المقال، فإن الفرق بين كوبيرنيتيس ودوكر واسع جدًا، وعندما يذكر أحد ما دوكر فإنه يشير عادةً إلى دوكر كومبوز Docker Compose الذي يُعتبر منتج دوكر الأساسي الذي يسمح للمستخدم بإنشاء تطبيقات فردية خاصة في حاويات. أصبح دوكر كومبوز هو المعيار لذلك يقوم الجميع بذكر مصطلح "دوكر" فقط وذلك للاختزال. أما كوبيرنيتيس فهو نظام تنسيق يمكن بواسطته التحكم في جميع موارد الحاوية الخاصة بالمستخدم من مستوى إدارة واحد، أنشأته غوغل Google في الأصل للمراقبة والتحكم في عدد كبير (مثل المليارات) من الحاويات وهو الآن مفتوح المصدر. قد تتساءل أيهما نختار: كوبيرنيتيس أم دوكر كومبوز؟ عندما يبحث المطور ليقرر أيهما يستخدم وبعد الاطلاع على مزايا وعيوب كل منهما يمكن طرح السؤال: "لماذا لا يكون كلاهما؟" باستخدامهما معًا، سيتمكن المطور من عزل التطبيقات كنظم حاويات وتنظيم أعداد ضخمة منها بطريقة آمنة وموثوقة. الفرق بين كوبيرنيتيس ودوكر سوارم Docker Swarm دوكر سوارم Docker Swarm هو نظام تنسيق حاوية دوكر، لذا فإن مقارنته بنظام كوبيرنيتيس واقعية أكثر من مقارنة كوبيرنيتيس بمنتج دوكر كومبوز. يعتبر Docker Swarm نظام تناسق أبسط وأصغر حجمًا من كوبيرنيتيس، لكنه يفتقر إلى نقاط القوة التي يتمتع بها كوبيرنيتيس في الأتمتة ومعالجة الأخطاء ذاتيًا وهي ميزات يمكن أن تكون مهمة لعمليات النشر الضخمة. مصادر للتعرف على كوبيرنيتيس و دوكر والخدمات المصغرة إليك قائمة مقالات عربية ننصحك بالإطلاع عليها للتوسع والاستزادة: أبرز المفاهيم التي يجب عليك الإلمام بها عن الحاويات: يوضح هذا المقال المفاهيم التي عليك أن تعرفها عن الحاويات بالتفصيل. مدخل إلى Kubernetes: يعرّف هذا المقال منصَّة كوبيرنيتيس، ويتناول ثلاث نقاط مهمة وهي: تعريف كوبيرنيتيس، كائنات كوبيرنيتيس، مرحبا Miniku. تعرف على Docker: هذا المقال مدخل تعريفي لماهية Docker وأهميته. نظرة عامّة على إعداد الحاويّات containerization على Docker ما هي صورة الحاوية container image؟: يشرح المقال مفهوم صورة الحاوية container image الذي يحتوي على تطبيق جاهز packaged application إضافةً إلى اعتمادياته dependencies ومعلومات حول الخدمات التي تشغله عند إقلاعها وكل ما يتعلق به. نظام كوبيرنتس Kubernetes وكيفية عمله: يشرح المقال Kubernetes وهو حل مفتوح المصدر لأتمتة النشر والتوسع الديناميكي للتطبيقات المغلفة في حاويات عبر الإنترنت، ويبين كيفية عمله، كما أنه يوضح الفرق بين OpenShift وOKD. إن أردت القائمة الكاملة، فانظر قسم الحوسبة السّحابية وقسم دوكر في أكاديمية حسوب. بعض الأسئلة الشائعة هل يمكن استخدام كوبيرنيتيس من دون دوكر؟ من الناحية التقنية نعم يمكن استخدام كوبيرنيتيس من دون دوكر طالما يتوفر نوع آخر من الحاويات. هناك خياران هما containerd و Podman، ولكن تعتبر دوكر أكثر منصات الحاويات شيوعًا. هل كوبيرنيتيس مجاني؟ نعم إنه مجاني إذا استُخدم الإصدار المفتوح المصدر بالكامل المتاح في مستودع GitHub الخاص به، وقد يفضل الكثير من المستخدمين استخدام عروض كوبيرنيتيس المجمعة التي تشمل الخدمات والمكتبات والأنظمة الأساسية والمنصات الأخرى وما إلى ذلك في عروض السحابة الكبيرة، حتى أن البعض لديه عروض مُدارة بالكامل وتكون مفيدة ولكنها أكثر تكلفة. هل يجب تعلم دوكر أم كوبيرنيتيس أولا؟ من الجيد البدء بالجزء الأصغر من النظام: الحاوية دوكر كومبوز ثم الانتقال إلى نظام التنسيق كوبيرنيتيس، ولكن يمكن تعلّم كليهما في نفس الوقت. هل مفهوم الحاويات قديم؟ ليس بعد، إذ لا تزال الحاويات ذات قيمة للبنى القائمة على الخدمات المصغرة microservices على الرغم من أنها كانت موجودة بشكل أساسي مع وجود الأجهزة الافتراضية. يعتقد البعض أنه سيتم استبدال الحاويات بحلول خفية الخوادم serverless أو بدون شيفرة برمجية ولكن هذه الحالات تميل إلى حل مشاكل مغايرة على مستويات مختلفة. ترجمة -وبتصرف- للمقال Kubernetes vs. Docker: Differences and Use Cases من فريق Cloud Academy اقرأ أيضًا تعلم أساسيات Kubernetes مدخل إلى دوكر Docker ما عليك معرفته عن الفرق بين دوكر والأجهزة الافتراضية تعلم الحوسبة السحابيّة: المتطلبات الأساسيّة، وكيف تصبح مهندس حوسبة سحابيّة
×
×
  • أضف...