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

Heidi Melhem

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

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

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

1 متابع

آخر الزوار

لوحة آخر الزوار معطلة ولن تظهر للأعضاء

إنجازات Heidi Melhem

عضو مساهم

عضو مساهم (2/3)

5

السمعة بالموقع

  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 في آرتش لينكس . مدخل إلى مستودعات أوبنتو
×
×
  • أضف...