المحتوى عن 'bsd'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • السلوك التنظيمي
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
    • React
  • HTML
    • HTML5
  • CSS
  • SQL
  • لغة C#‎
  • لغة C++‎
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • Sass
    • إطار عمل Bootstrap
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • ASP.NET
    • ASP.NET Core
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
    • منصة Xamarin
  • سهولة الوصول
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 5 نتائج

  1. تعتقد أنّك تعرف كل شيء عن sudo؟ فكّر بذلك مجدّدًا. يعرف الجميع sudo أليس كذلك؟ تُثبَّت هذه الأداة بشكل افتراضي على معظم أنظمة Linux وهي متوفّرة لمعظم توزيعات BSD (اختصارًا إلى Berkeley Software Distributions) ومختلف توزيعات يونكس التجاريّة. ومع ذلك كانت الإجابة الأكثر شيوعًا التي تلقيتها بعد التحدث إلى مئات مستخدمي sudo هي أنّ sudo أداة لتعقيد الحياة. يوجد لديك مستخدم جذر root ولديك أمر su، فلماذا يكون لديك أداة أخرى؟ كان sudo بالنسبة للكثيرين مجرّد بادئة للأوامر الإداريّة. ذكرت قلّة قليلة فقط أنّه يمكنك استخدام سجلات sudo لمعرفة من قام بعملٍ ما عندما يكون لديك العديد من المسؤولين في نفس النظام. ما هو sudo؟ وفقًا لموقع sudo الإلكتروني: يأتي sudo افتراضيًّا بضبط بسيط، حيث أن قاعدة واحدة تسمح للمستخدم أو لمجموعة من المستخدمين بالقيام بأي شيء عمليًا (المزيد حول ملف الضبط لاحقًا ضمن هذه المقالة): %wheel ALL=(ALL) ALL تعني «المعاملات» (parameters) في هذا المثال ما يلي: يحدّد المعامل الأول أعضاء المجموعة. يحدّد المعامل الثاني المُضيف (المضيفين) الذي يمكن لأعضاء المجموعة تشغيل الأوامر عليه. يحدّد المعامل الثالث أسماء المستخدمين التي يمكن بموجبها تنفيذ الأمر. يحدّد المعامل الأخير التطبيقات التي يمكن تشغيلها. لذلك يمكن لأعضاء مجموعة Wheel في هذا المثال تشغيل جميع التطبيقات مثل كافة المستخدمين على جميع المضيفين. حتى هذه القاعدة المتسامحة حقًا مفيدة لأنها تؤدي إلى تسجيل من قام بعملٍ ما على جهازك. الأسماء المستعارة (Aliases) بالطبع بمجرّد كونك لا تقوم أنت وصديقك المفضّل فقط بإدارة صندوق مشترك ما، فسوف تبدأ التفكير في ضبط الأذونات. يمكنك استبدال العناصر الموجودة في الضبط أعلاه بقوائم: قائمة المستخدمين، قائمة الأوامر، وما إلى ذلك. ستَنسخ على الأرجح وتلصق بعض هذه القوائم في الضبط الخاص بك. في مثل هذه الحالة حيث يكون استخدام الأسماء المستعارة في متناول اليد. يكون الحفاظ على نفس القائمة في أماكن متعدّدة عُرضة للخطأ. بالإمكان تعريف اسم مستعار مرّة واحدة وبعد ذلك يمكنك استخدامه مرّات عديدة. لذلك عندما تفقد الثقة في أحد أو بعض المسؤولين لديك، يمكنك إزالتَهم من خلال الاسم المستعار وينتهي الأمر. ولكن مع وجود قوائم متعددة بدلاً من الأسماء المستعارة فإنّه من السهل أن تنسى إزالة مستخدم ما من إحدى القوائم ذات الامتيازات العالية. تمكين الميزات لمجموعة معيّنة من المستخدمين يأتي الأمر sudo مزودًا بمجموعة كبيرة من الإعدادات الافتراضيّة. لا يزال هناك حالات تريد فيها تغيير بعضٍ من هذه الإعدادات. وذلك عند استخدام التعليمة Defaults في الضبط. عادةً ما يتم فرض هذه الإعدادات الافتراضيّة على كل مستخدم، ولكن يمكنك تضييق مجال هذه الإعدادات لتُطبّق فقط على مجموعة فرعيّة من المستخدمين بناءً على المضيف واسم المستخدم وما إلى ذلك. هنا مثال على أن مسؤول النظام الخاص بي (sysadmins) يُحبّ استخدام "التوبيخ" insults. وهي مجرّد بضع رسائل هزليّة تظهر كَتوبيخ عندما يُخطئ المستخدم في كلمة السرّ عند تنفيذ أوامر في sudo: czanik@linux-mewy:~> sudo ls [sudo] password for root: Hold it up to the light --- not a brain in sight! [sudo] password for root: My pet ferret can type better than you! [sudo] password for root: sudo: 3 incorrect password attempts czanik@linux-mewy:~> وبما أنه ليس الجميع معجب بفكاهة مدير النظام، تُعطّل هذه التوبيخات افتراضيًا. يوضّح المثال التالي كيفية تمكين هذا الإعداد فقط لمسؤولي النظام المتمرسين وهم أعضاء في المجموعة wheel: Defaults !insults Defaults:%wheel insults ليس لدي ما يكفي من الأصابع لتعداد الأشخاص الذين شكروني على إعداد هذه الرسائل. مُصادقة القيم المختصرة المشفرة (Digest verification) بالطبع هناك ميزات أكثر أهميّةً في sudo كذلك. إحدى الميزات هي «مُصادقة القيم المختصرة المشفرة» (digest verification). يمكنك تضمين مصادقة القيم المختصرة المشفرة للتطبيقات في الضبط الخاص بك: peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr/bin/passwd يقوم sudo في هذه الحالة بفحص وموازنة القيمة المتخصرة المشفرة لتطبيق مع القيمة المشفرة المختصرة لتطبيق المخزّن في الضبط قبل تشغيله. فإذا لم يكونا متطابقين عندها يرفض sudo تشغيل التطبيق. على الرغم من صعوبة الحفاظ على هذه المعلومات في الضبط الخاص بك – حيث لا توجد أدوات تلقائية لهذا الغرض - إلا أنّ هذه الملخّصات يمكن أن توفر لك طبقة إضافيّة من الحماية. تسجيل الجلسة تسجيل الجلسة هو أيضًا ميزة أقل شهرةً لـ sudo. بعد عرضي التوضيحي يغادر كثير من الأشخاص محادثتي مع خطط عازمين على تنفيذها على بنيتهم التحتيّة. لماذا؟ لأن تسجيل الجلسة لا يتيح لك رؤية اسم الأمر فقط، بل كل ما يحدث في الجهاز الطرفي أيضًا. فبإمكانك معرفة ما يفعله المسؤولون لديك حتى لو كان لديهم وصول إلى الصدفة (shell) والسجلات تُظهر فقط أن bash بدأ العمل. توجد محدوديّة واحدة حاليًّا وهي أن السجلات تخزّن محليًّا، لذلك يمكن للمستخدمين حذف سجلات التتبع الخاصّة بهم إذا توفرت لهم أذونات كافية. ترقبوا الميزات القادمة. الإضافات تم تغيير sudo إلى بنية معياريّة قائمة على «الإضافات» (plugins) بدءًا من الإصدار 1.8. حيث أصبح بالإمكان استبدال أو توسيع وظائف sudo بسهولة عن طريق كتابة وظائفك الخاصّة، وذلك اعتمادًا على معظم الميزات التي نُفّذت كإضافات. يتوفر حاليًا كلًّا من الإضافات مفتوحة المصدر والإضافات التجاريّة لـ sudo. عَرضتُ في حديثي الإضافة sudo_pair والتي تتوفر على GitHub. طوّرت هذه الإضافة في Rust مما يعني أنه ليس من السهل «ترجمتها» (compile) والأكثر صعوبةً من ذلك هو نشر النتائج. تُوفّر الإضافات من ناحيةٍ أخرى وظائف مثيرة للاهتمام، مُتطلبةً من مسؤولٍ ثانٍ الموافقة (أو الرفض) لتشغيل الأوامر من خلال sudo. ليس ذلك فحسب، بل يمكن أيضًا تتبع الجلسات على الشاشة وإنهاؤها في حال وجود نشاط مشبوه. في عرضٍ توضيحيّ قدمته خلال حديثي مؤخرًا في مؤتمر "All Things Open" شعرت كمن يجلب لنفسه السمعة السيئة. czanik@linux-mewy:~> sudo rm -fr / كان الجميع يحبس أنفاسهم لمعرفة ما إذا كان جهاز الحاسوب المحمول قد دُمّر عند رؤية الأمر المعروض على الشاشة، لكنه نجا. السجلات يُعدّ التسجيل والتنبيه جزءًا مهمًا من sudo كما ذكرت سابقًا في البداية. إذا لم تقم بفحص سجلات sudo الخاصّة بك بانتظام فليس هناك قيمة كبيرة لاستخدام sudo. تُنبّه هذه الأداة عن طريق البريد الإلكتروني عن الأحداث المحدّدة في الضبط وتُسجل جميع الأحداث في syslog. يمكن تشغيل سجلات التنقيح (Debug) واستخدامها لتصحيح القواعد أو الإبلاغ عن «الأخطاء» (bugs). التنبيهات Alerts تعد تنبيهات البريد الإلكتروني من النمط القديم الآن، ولكن إذا كنت تستخدم syslog-ng لتَجميع رسائل السجل الخاصّة بك، فستُنقّح رسائل سجل sudo تلقائيًا. يمكنك بسهولة إنشاء تنبيهات مخصّصة وإرسالها إلى مجموعة واسعة من الوجهات، بما في ذلك Slack أو Telegram أو Splunk أو Elasticsearch. الضبط تحدثنا كثيرًا عن ميزات sudo وحتى شاهدنا بضعة أسطر من «الضبط» (Configuration). دعنا الآن نلقي نظرة أقرب على كيفيّة ضبط sudo. الضبط نفسه متاح في ‎/etc/sudoers وهو ملف نصيّ بسيط. ومع ذلك ما يزال لا يُنصح بتحرير هذا الملف مباشرة، استخدم بدلاً من ذلك visudo حيث تتحقق هذه الأداة من بناء الجملة النحويّ أيضًا. بإمكانك إذا كنت لا تحب vi تغيير المحرّر المُستخدَم عن طريق ضبط متغير البيئةEDITOR إلى الخيار المفضل لديك. تأكّد قبل البدء في تحرير ضبط sudo من معرفة كلمة مرور المستخدم root. (نعم، حتى على Ubuntu حيث الـ root ليس لديه كلمة مرور افتراضيًّا.) بما أنّ visudo يتحقّق من البناء النحويّ للجملة فمن السهل إنشاء ضبط صحيح نحويًّا يمنعك من الولوج إلى نظامك. يمكنك عندما تتوفر لديك كلمة مرور جذر في حالة الطوارئ البدء في تحرير الضبط الخاص بك. هناك شيء واحد مهم يجب تذكره عندما يتعلق الأمر بملف sudoers وهو أنّه: يُقرأ هذا الملف من الأعلى إلى الأسفل وبالتالي يُنفّذ الإعداد الأخير. ما تعنيه هذه الحقيقة بالنسبة لك هو أنّه يجب أن تبدأ بالإعدادات العامّة وتضع الاستثناءات في النهاية، وإلا فإنّ الإعدادات العامة ستُلغي الاستثناءات. يمكنك العثور على ملف sudoers بسيط أدناه اعتمادًا على ذلك الموجود في CentOS وإضافة بضعة أسطر كنا قد ناقشناها سابقًا: Defaults !visiblepw Defaults always_set_home Defaults match_group_by_gid Defaults always_query_group_plugin Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin root ALL=(ALL) ALL %wheel ALL=(ALL) ALL Defaults:%wheel insults Defaults !insults Defaults log_output يبدأ هذا الملف عن طريق تغيير عدد من الإعدادات الافتراضيّة. ثم تأتي القواعد الافتراضيّة المعتادة: المستخدم root وأعضاء مجموعة wheel لديهم أذونات كاملة على الجهاز. نُمكّن بعد ذلك insults لمجموعة wheel ونعطّلها للجميع. يفعّل السطر الأخير تسجيل الجلسة. الضبط أعلاه صحيح نحويًّا، لكن هل يمكنك اكتشاف الخطأ المنطقي؟ نعم، هناك خطأ: تُعطّل insults للجميع عند آخر إعداد عام حيث يُلغي الإعداد السابق الإعداد الأكثر تحديدًا. وبمجرّد تبديل السطرين يعمل الإعداد كما هو متوقع: يتلقى أعضاء مجموعة wheel رسائل هزليّة في حين أنً باقي المستخدمين لن يتلقونها. إدارة الضبط بمجرد أن تضطر إلى الاحتفاظ بملف sudoers على أجهزة متعدّدة فمن المرجح أنك تريد إدارة الضبط الخاص بك مركزيًا. لدينا هنا احتمالان رئيسيان مَفتوحا المصدر. لكلٍ منهما مزايا وعيوب. يمكنك استخدام أحد تطبيقات إدارة الضبط التي تستخدمها أيضًا لضبط بقية البنية التحتيّة الخاصّة بك. تحتوي Red Hat Ansible و Puppet و Chef على وحدات لضبط sudo. المشكلة في هذا النهج هي أنّ تحديث الضبط بعيد عن الوقت الحقيقي. كما أنه لا يزال بإمكان المستخدمين تحرير ملف sudoers محليًا وتغيير الإعدادات. يمكن للأداة sudo أيضًا تخزين ضبطها في خادم LDAP. تكون تغييرات الضبط في هذه الحالة في الوقت الحقيقي ولا يمكن للمستخدمين العبث بملف sudoers. ولكن من ناحية أخرى لهذه الطريقة محدوديّة أيضًا. حيث لا يمكنك على سبيل المثال استخدام الأسماء المستعارة aliases أو استخدام sudo عندما يكون خادم LDAP غير متوفر. ميزات جديدة هناك نسخة جديدة من sudo قاب قوسين أو أدنى. سيتضمن الإصدار 1.9 العديد من الميزات الجديدة المثيرة للاهتمام. فيما يلي أهم الميزات المُخطط لها: خدمة تسجيل لجمع تسجيلات الجلسة مركزيًا والتي توفر العديد من المزايا مقارنة بالتخزين المحلي: أكثر ملاءمة للبحث حيث يتم ذلك في مكان واحد. تتوفر التسجيلات حتى ولو كان جهاز المرسل متوقفا. لا يمكن حذف التسجيلات بواسطة شخص يريد حذف سجلات التتبع الخاصّة به. لا تضيف الإضافة "Audit" ميزات جديدة إلى sudoers، ولكنها توفّر واجهة برمجة تطبيقات API للإضافات للوصول بسهولة إلى أي نوع من سجلات sudo. تمكّن هذه الإضافة إنشاء سجلات مخصّصة من أحداث sudo باستخدام الإضافات. تُمكّن إضافة approval موافقات الجلسة دون استخدام إضافات خارجية (third-party plugins). والميزة المفضّلة لدي شخصيًا: دعم Python للمكونات الإضافيّة والتي تمكّنك من توسيع sudo بسهولة باستخدام شيفرة Python بدلاً من كتابة شيفرة أصليّة في C. الخلاصة آمل أن يكون هذا المقال قد أثبت لك أن sudo أكثر بكثير من مجرّد بادئة بسيطة. هناك الكثير من الاحتمالات لضبط الأذونات على نظامك. فأنت هنا لا تتمكن من ضبط الأذونات فحسب بل تتمكن أيضًا من تحسين الأمان عن طريق التحقق من عمليات مصادقة digests. تُمكّنك تسجيلات الجلسة من التحقّق مما يحدث على أنظمَتك. بإمكانك أيضًا توسيع وظيفة sudo باستخدام الإضافات، إما باستخدام شيء متاح مُسبقًا أو كتابة ما تريد بشكل خاص. أخيرًا وبالنظر إلى قائمة الميزات القادمة يمكنك أن ترى أنه حتى لو كان عمر sudo عقودًا إلاّ أنّه مشروع حيّ يتطور باستمرار. إذا كنت ترغب بمعرفة المزيد عن sudo فإليك بعض الموارد: موقع sudo الإلكتروني مدونة sudo ترجمة وبتصرف للمقال What you probably didn’t know about sudo لصاحبه Peter Czanik
  2. ما الذي يجعل مشروعك مفتوح المصدر؟ أن تكون الشّيفرة متوفرةً مجانًا على الإنترنت؟ أو أن تستطيع استعماله، أو تعديله وإرساله إلى صديقك؟ إذا ابتغينا الدقة، فإن الرخصة هي التي تعطيك الامتيازات لفعل كل ما سبق ذكره. فعندما "تفتح" مصدر مشروعك، فعليك أن تُضمِّن ملف رخصة يُحدِّد ما هي الشروط التي سيُسمَح للآخرين باستعمال مشروعك وفقًا لها. لحسن الحظ، هنالك خياراتٌ عديدةٌ يمكنك الاختيار بينها، فلا حاجة إلى أن تكون محاميًا لفعل ذلك؛ لكن لسوء الحظ هنالك الكثير من الرخص، مما يجعلك تحتار أيهم ستختار. تنبيه: هذه هي طريقة ترخيص مشاريعي الخاصة، لكنني لست محاميًا وهذه المقالة لا تُمثِّل نصيحة قانونية. ما هي الرخص؟ عدد الرخص التي يمكن اعتبارها "حرة" (free) أو مفتوحة المصدر (open-source) بالمئات! إذا كنت تريد قوائم طويلة، فراجع القوائم الموجودة على موقع مشروع GNU و opensoucre.org أو على ويكيبيديا، وحتى تلك القوائم الطويلة ليست شاملة لجميع الرخص. وعلى الرغم من التعداد الكبير للرخص، لكن الفروقات بينها ليست محورية؛ والسبب وراء وجود عدد كبير منها هو أنَّ كاتبيها صعيبو المراس في اختيار الكلمات وبعض التفاصيل، لكن يمكن اعتبار شروط الكثير منها متماثلة. ادخل إلى موقع tl;drLegal لمراجعة سريعة لشروط مختلف الرخص. الرخص المتساهلة و Copyleft أكبر أمر يُفرِّق بين الرخص هو Copyleft، وهو مصطلحٌ أوجده مشروع غنو (GNU) لمنع الأشخاص الذين سيعيدون توزيع البرمجيات في المستقبل من تقييد الحريات التي أعطيتَها للمشروع عند إطلاقه، وهذا يعني أنَّه على أيّ شخصٍ يريد أن يُعيد توزيع نسخةٍ مُعدَّلةٍ من الشيفرة التي كتبتَها أن ينشر تعديلاته أيضًا. تُطبِّق بعض الرخص ذاك المبدأ (مثل GPL، و LGPL، وMPL) بينما لا تُطبقه الأخرى (مثل MIT، و Apache، و BSD). قد تكون رخص "copyleft" مفيدةً جدًا لمنع إساءة استعمال مشروعك، وقد تكون في بعض الأحيان معيقةً لاستعماله من الشركات التي قد لا تقدر على استعمال شيفرات مرخصة بتلك الرخصة في برمجياتها التجارية. مجال مشروعك أحد أهم الأشياء التي يجب أخذها بعين الاعتبار عند اختيار رخصة لمشروعك هو "المجال"؛ هل هو مكتبة برمجية، أم أداة للمطورين، أم تطبيق كامل للمستخدم النهائي؟ إذا كان سيُستعمَل مع مكتباتٍ أخرى، فعليك أن تكون حذرًا في اختيارك للرخصة بسبب مشاكل في التوافقية بين الرخص (سنشرح ذلك بعد قليل). أختارُ للتطبيقات الكاملة أو المنتجات، مثل تطبيقات الأندرويد أو تطبيقات سطح المكتب أو الأدوات التي تعمل من سطر الأوامر، رخصًا من نمط copyleft مثل GPLv3 التي تطمئنني أنَّ المشروع سيبقى مفتوح المصدر دومًا. وعندما تُطلِقُ مكتبة أو إطار عمل ليستعمله المطورون في مشاريعهم، فإن اختيارك سيصبح أكثر صعوبةً. فعدم السماح لهم بتوزيع برمجياتهم التي تعتمد على مكتبتك دون التضمين الكود المصدري قد يمنع الشركات من استعمالها في مشاريعهم، مما يمنع انتشارها انتشارًا واسعًا. شخصيًا، أستعمل رخصًا متساهلة في هذه الحالة، مثل MIT أو BSD؛ وبينما تترك تلك الرخص احتمال أن تشتق الشركات مصدر المشروع الخاص بك، وتطوره ولا تعطيك التعديلات عليه، لكن ذلك غير عملي أو منطقي لكثيرٍ من الشركات؛ لأن الاختلاف من مصدر الشيفرة الأصلي سيجعلهم يتحملون عبء تكاليف الصيانة التي تتجاوز عادةً قيمة التّعديل الذي أجروه على شيفرة مشروعك. رخصة LGPL ليست خيارًا سيئًا أيضًا، إذ تسمح للآخرين باستعمال نسخة مُصرَّفة (compiled) من المكتبة مع شيفراتهم المملوكة (proprietary أو الاحتكارية)، وفي نفس الوقت ستحافظ على حقوق مصدر المكتبة. المشاكل في التوافقية تحتوي بعض الرخص بنودًا تتعارض مع غيرها من الرخص؛ مما يجعلها غير متوافقة، مما يعني أنك لا تستطيع أن تدمج بين حزمتين برمجيتين أو مكتبتين مرخصتين برخصتين فيهما بنود متعارضة. انظر إلى الحزم البرمجية التي تستعملها في مشروعك، وحاول أن تختار رخصةً لا تتعارض مع بنود تلك الحزم. هنالك مصادرٌ عدِّة تستطيع الحصول على معلومات توافقية الرخص منها، بما في ذلك ويكيبيديا. تؤثر عادةً المشاكل في التوافقية على الرخص المعقَّدة والمحدَّدة مثل GPLv3؛ فكلما ازداد طول الرخصة وتخصيصها للبنود، كما ازدادت احتمالية حدوث مشاكل في التوافقية. تحقق من مجتمعك اعتمادًا على التقنيات التي يستعملها مشروعك، قد تجد أنَّ إحدى الرخص أفضل وأنسب من الأخرى، آخذًا بعين الاعتبار سهولة دمج مشروعك وتبنيه، وخصيصًا لو كان مكتبةً. فاستعمال أكثر رخصة شائعة في مجالك ستُسهِّل الأمر على مستعمليها، لأنهم سيكونون معتادين على شروط تلك الرخصة، وسيتم تقليل احتمالية وجود تعارض في الرخص في المشاريع. على سبيل المثال، مجتمعَا JavaScript و Ruby يُحبذون الرخص الأكثر سماحيةً مثل MIT، بينما تُنشَر المشاريع المكتوبة بلغة C/C++‎ برخصة GPL. عليك أن تبحث قليلًا في المجتمع التطويري المحيط بك عندما تنشر مكتبة برمجية وفق رخصةٍ معينة، فذاك المجتمع قد يساعدك بقرارك. لكن لا تُكرِه نفسك على رخصة معينة لأن الآخرين يستعملونها، فقد لا تكون خيارًا صائبًا لمشروعك. الخلاصة هي أنه اختيارك سيكون سديدًا إن كانت تتوافق الرخصة التي اخترها مع أغلبية المكتبات في مجتمعك. بدون رخصة إحصائيات الاستخدام التي نُشِرَت من Ben Balter على مدونة Github في مطلع عام 2015 تُظهِر أنَّ حوالي 80% من المستودعات على الموقع لا تُضمِّن رخصة؛ وهذا يعني أنَّ لا يُسمَح لأي شخص قانونيًا أن يستعمل الشيفرة الخاصة بهم حتى لو كانت متوفرة على الإنترنت لأنه لا يمكن اعتبارها "مفتوحة المصدر". هذا أمرٌ كارثي! إن لم يكن هذا ما تطمح له، فخذ وقتك للتفكير برخصة مناسبة، وإلا فلن "يلمس" أي مبرمج خبير الشيفرة الخاصة بك، ويعرض سمعته للخطر بدعوى قضائية. الخلاصة هذه هي الطريقة التي أتبعها لاختيار رخصة لمشروعي. لا يوجد خيار صائب أو خيار خاطئ في اختيارك للرخصة إن كنت تعي ما تفعل. اختر واحدةً تناسب احتياجاتك، وتأكد أن تختار رخصةً واحدةً على الأقل. ما هي الرخصة التي استعملتها لآخر مشروعٍ لك؟ أخبرنا في التعليقات. ترجمة -وبتصرّف- للمقال How to pick an open source licence for your code لصاحبه Radek Pazdera.
  3. يُعتبر FreeBSD نظام تشغيل آمن، عالي الأداء، ومناسب لمجموعة متنوعة من وظائف الخوادم الشائعة. نغطي في هذا الدرس المعلومات الأساسية التي تحتاجها لتنطلق مع خوادم FreeBSD. الخطوة الأولى: الولوج عبر SSHالخطوة الأولى التي نحتاجها للبدء في ضبط وإعداد خادوم FreeBSD هي تسجيل الدخول من خلاله. تُزوّدك معظم الشركات بمفتاح SSH العمومي عند إنشاء خادوم FreeBSD، بحيث يمكنك تسجيل الدخول بشكلٍ آمن من حاسوبك المنزلي إلى خادومك عبر مفتاح SSH الخاص المرتبط به. لمعرفة المزيد حول كيفية استخدام مفاتيح SSH يمكنك قراءة مقال العمل مع خواديم ssh، العملاء والمفاتيح من أكاديمية حسوب. لتسجيل الدخول إلى الخادوم الخاص بك تحتاج أولًا إلى معرفة عنوان IP العام له، والذي يمكنك إيجاده عادة من لوحة التحكم، بالإضافة إلى اسم المستخدم الرئيسي لخادوم FreeBSD (سنستخدم لهذا الدرس الاسم freebsd لغرض تعليمي)، كما تختلف الإعدادات الافتراضية بين الشركات حول صلاحيات هذا المستخدم، وسنفترض هنا حصوله على أذونات استعمال sudo لإتمام المهام الإدارية. لتسجيل الدخول إلى خادوم FreeBSD استخدم الأمر ssh مع تحديد عنوان IP العام للخادوم إضافة لاسم المستخدم : ssh freebsd@server_IP_addressيُفترض أن تتم المصادقة تلقائيًا وينجح تسجيل الدخول لتكون أمام سطر الأوامر الخاص بخادومك. تغيير موجه صدفة tcsh والإعدادات الافتراضية (اختياري)بعد تسجيل الدخول ستجد نفسك أمام موجّه أوامر بسيط يبدو بالشكل: >وهو الموجّه الافتراضي في tcsh صدفة سطر الأوامر القياسيّة في FreeBSD، لنُدخل الآن بعض التعديلات المفيدة على ملف ضبط الصدفة بهدف جعلها أكثر فائدة، مثل توضيح مسار الطرفية قبل إشارة المحث. إحدى أمثلة ملف الضبط موجودة في نظام الملفات لدينا، وكل ما علينا فعله هو نسخها إلى دليل المنزل لإجراء التعديلات التي نرغب بها: cp /usr/share/skel/dot.cshrc ~/.cshrcبعد نسخ الملف السابق إلى مجلد المنزل لنحرّره باستخدام الأداة vi المدمجة مع FreeBSD، أما إذا كنت ترغب باستعمال شيء أبسط فيمكنك تجريب المحرّر ee: vi ~/.cshrcيتضمّن هذا الملف بعض القيم الافتراضية المعقولة بما في ذلك موجّه أكثر وظيفيّة، إحدى الأجزاء التي قد ترغب بتعديلها هي مُدخلات setenv: . . . setenv EDITOR vi setenv PAGER more . . .إذا لم تألف التعامل مع المحرّر vi وترغب باعتماد بيئة تحرير أكثر سهولة، فعليك تغيير قيمة متغيّر البيئة EDITOR إلى شيء مثل ee. كما يميل معظم المستخدمين إلى تعديل قيمة PAGER إلى less بدلًا من more وهذا ما يسمح بالانتقال إلى أعلى وأسفل ضمن ملفات أدلة البرامج man بدون مغادرة pager: setenv EDITOR ee setenv PAGER lessنحتاج أيضًا إضافة الشيفرة التالية إلى آخر ملف الضبط السابق وذلك لتصحيح مواضع بعض أزرار لوحة المفاتيح لدينا داخل جلسة tcsh، وإلا فلن تعمل بعض الأزرار بوظائفها المتوقعة مثل زر Delete، ما عليك فعله هو نسخ هذه الأسطر وإضافتها أسفل الملف: if ($term == "xterm" || $term == "vt100" || $term == "vt102" || $term !~ "con*") then # bind keypad keys for console, vt100, vt102, xterm bindkey "\e[1~" beginning-of-line # Home bindkey "\e[7~" beginning-of-line # Home rxvt bindkey "\e[2~" overwrite-mode # Ins bindkey "\e[3~" delete-char # Delete bindkey "\e[4~" end-of-line # End bindkey "\e[8~" end-of-line # End rxvt endifعند الانتهاء احفظ الملف واخرج من المُحرّر. لوضع التعديلات الجديدة موضع التنفيذ في الجلسة الحالية يمكننا إعادة تحميل ملف الضبط السابق: source ~/.cshrc ستلاحظ في الحال تغيّر هيئة موجّه الأوامر لديك إلى شيء يشبه: freebsd@hostname:~ % كما ستعمل أزرار "Home" ،"Insert" ،"Delete" و"End" بوظائفها المعتادة بدءًا من الآن. شيء آخر بقي أن أشير إليه هنا؛ في حال كنت تستخدم صدفة tcsh الافتراضية أو csh فأنت بحاجة إلى تنفيذ الأمر rehash كلما أجريت تعديلًا قد يؤثّر على مسار الملفات التنفيذيّة. أحد الأمثلة الشائعة على ذلك تثبيت أو إزالة تثبيت تطبيق ما. بعبارة أخرى بعد تركيب برنامج جديد يتوجب عليك تنفيذ الأمر التالي لتتمكّن الصدفة من التعرّف على ملفات البرنامج الجديد: rehashتغيير الصدفة الافتراضية (اختياري)تمنحك التعديلات السابقة إلفة أكثر مع بيئة tcsh أما إذا كنت لا تزال ترغب باعتماد صدفة bash كصدفة افتراضية لخادوم FreeBSD الخاص بك فعليك اتباع التعليمات التالية: في البداية يتوجب عليك تثبيت صدفة bash عن طريق كتابة: sudo pkg install bashبعد انتهاء التثبيت سنضيف السطر التالي إلى ملف etc/fstab/ لربط الملف الواصف لنظام الملفات، والذي تحتاجه صدفة bash: fdesc /dev/fd fdescfs rw 0 0لإضافة السطر السابق بسهولة إلى آخر ملف etc/fstab/ يمكنك تنفيذ الأمر التالي: sudo sh -c 'echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab'بعد ذلك يمكننا ربط نظام الملفات من خلال: sudo mount -aهكذا سيكون نظام الملفات جاهز لتشغيل bash، ولتشغيلها نفّذ الأمر التالي: bashلتعديل الصدفة الافتراضية إلى bash يمكنك كتابة: sudo chsh -s /usr/local/bin/bash freebsdفي المرة التالية التي تُسجّل بها دخولك إلى الخادوم ستبدأ مع صدفة bash بدلًا من tcsh. إذا كنتَ ترغب بتعديل المحرّر الافتراضي أو قيمة pager في صدفة bash ستحتاج أولًا إلى إنشاء الملف التالي في دليل المنزل: vi ~/.bash_profileيمكنك الآن إجراء التعديلات التي ترغب بها داخل هذا الملف، سأضع هنا اختياراتي المُفضّلة: export PAGER=less export EDITOR=vi احفظ الملف واخرج من المحرّر عندما تنتهي من التعديل. لوضع التغييرات الأخيرة موضع التنفيذ الفوري أعد تحميل ملف الضبط السابق: source ~/.bash_profileتعيين كلمة مرور الجذر (اختياري)بشكلٍ افتراضي لا تتيح خوادم FreeBSD الولوج كمستخدم جذر عبر ssh، ورغم ذلك فإنه من الآمن تعيين كلمة مرور root يتم طلبها عند رغبتك استخدام حساب الجذر من خلال طرفية لوحة تحكم الوِيب لخادومك. لتعيين كلمة مرور root اكتب: sudo passwdستسألك الطرفية إدخال وتأكيد كلمة مرور الجذر. وكما ذكرنا أعلاه فإن هذا لن يتيح لك استعمال ssh لتسجيل الدخول بحساب root (لأغراض أمنية) أما لتنفيذ المهام الإدارية فعليك استعمال طرفية لوحة تحكّم الوِيب. الخلاصةتعلمنا إلى الآن كيفية تسجيل الدخول إلى خادوم FreeBSD، وتعديل بيئة الصدفة بشكل مناسب، وحالما تألف التعامل مع FreeBSD وتضبطه بما يتلاءم واحتياجاتك سوف تكون قادر على الاستفادة من مرونته، أمانه، وأدائه العالي. ترجمة -وبتصرف- للمقال: How To Get Started with FreeBSD 10.1 لصاحبه: Justin Ellingwood.
  4. في بعض الأحيان يرغب المؤلفون والمبرمجون في إعادة نشر أو إنتاج عمل يستفيد من مواد أو منتجات أخرى ولكنهم لايعرفون إذا كان هذا الشيء مشروعاً. هناك العديد من الرخص التي تسمح لك باستخدام ونشر وتعديل المنتج بشكل حر، بل وتسمح لك أيضاً بالاستفادة المادية منه. سنشرح اليوم جميع الرخص الحرة واستخداماتها والشروط الخاصة بكل رخصة. أولا تراخيص الملفات الرقميةتراخيص تصلح للصور بأنواعها والكتب والنصوص والتصميمات والوثائق والفيديو والصوت وملفات المالتيميديا بكل أنواعها وغيرها.. تراخيص المشاع الإبداعي Creative Commonsتسمح لك هذه الرخصة بتوزيع وتعديل وإعادة نشر المواد أو إنتاج أعمال مشتقة منه بشكل حر، ولكنها تحتفظ للمؤلف بحقه الأدبي فقط (أي في حالة توزيعه كما هو لا يمكنك أن تنسب العمل لنفسك أو لشخص آخر)، تحتوي هذه الرخصة على 6 أنواع و3 فقط منها يصلح للاستخدام التجاري وهي: نسب المصنف (CC-BY) تشترط: ذكر اسم المؤلف ونسب العمل إليه – لا قيود أخرى.نسب المصنف – الترخيص بالمثل (CC-BY-SA) تشترط: ذكر اسم المؤلف ونسب العمل إليه – أي أعمال مشتقة يجب أن تكون تحت المشاع الإبداعي أيضا بنفس الترخيص – لا قيود أخرىنسب المصنف – بلااشتقاق (CC-BY-ND) تشترط: ذكر اسم المؤلف ولكن لا يسمح لك بإنتاج أعمال مشتقة منه (يمكنه توزيعه أو بيعه كما هو بدون تغيير).الملكية العامة Public domainالملكية العامة تعني أن سقوط الحقوق الفكرية وتصبح هذه المواد حرة بشكل كامل ويحق لك استخدامها بلا قيود. تصبح المواد ملكية عامة في حالتين: مواد انتهت حقوق الملكية لها نظراً لسقوطها بالتقادم حسب القانون المنظم لكل دولة، ولكن بشكل عام أغلب المواد تكون في الملكية العامة إذا مر على نشرها 70 عام ومر على وفاة مؤلفها 50 عام، مثال: الكتب التراثية القديمة أو اللوحات والأعمال الفنية التي مضى عليها 100 عام واكثر وغيرها.مواد قام مؤلفها بالتنازل عنها للملكية العامة وصرح بذلك، ومن أحد الأمثلة على ذلك: الصور والمنشورات الصادرة عن الحكومة الأمريكية ووكالة ناسا، وغيرها.هناك أيضا العديد من المؤلفين لا يستخدمون التراخيص السابقة وإنما قد تتخذ أشكال مشابهة لها، مثل أن يصرحوا بالاستخدام التجاري فقط أو يسمحوا بالتعديل والاستخدام التجاري معا، أهم شرط يجب ان تبحث عنه دائما هو إمكانية الاستغلال التجاري أم لا، فإذا لم يسمح لك بذلك بشكل صريح فلا يمكنك القيام ببيعه كمنتج لك. ثانيا تراخيص البرمجيات بشتى أنواعهاوتعرف عند الكثيرين بـ”رخص البرمجيات الحرة”: 1. ترخيص Apacheتسمح لك باستخدام البرمجة بشكل حر من: تعديل – إضافة – إعادة نشر- منح ترخيص جديد لها، ولكن تشترط: أن يتم ذكر اسم المؤلف داخل الملفات النصية للبرمجة documentation، ولا يسمح الترخيص لك باستغلال العلامة التجارية للمنشأ. وله عدة إصدارات ولكن جميعها يسمح لك بالاستغلال التجاري. 2. ترخيص GPL وهو اختصار GNU General Public Licenseيعتبر أشهر أنواع التراخيص البرمجية وأكثرها انتشاراً، وهو مشابهة لترخيص اباتشي السابق ولكن يختلف عنه في أنه يطبق فقط علي البرمجيات ذات المصدر المفتوح ويجب أن تستخدم معها المصادر المفتوحة فقط ويشترط أن تقوم بالإشارة إلى التغييرات التي قمت بها علي الكود الأصلي، ولا يسمح لك بأن تقوم بإصدار تراخيص جديدة بل يجب أن يظل بنفس الترخيص حتى مع الأعمال المشتقة، وهذا الترخيص له 3 إصدارات ولكن جميعها يسمح لك بالاستخدام التجاري. 3. ترخيص LGPL وهو اختصار لـ GNU Lesser General Public Licenseهو ترخيص مشابه للـ GPL تماما ولكن الاختلاف البسيط هو أنه يسمح لك بأن تستخدم مكتبات وأدوات خارجية قد تكون مغلقة المصدر (وليس كلها مفتوحة المصدر كما تشترط GPL) وبالتالي لا تجبرك على أن تبقي مصدر البرنامج مفتوحاً. 4. ترخيص MITوهو ترخيص تم إنشاؤه بواسطة معهد ماساتشوستس للتقنية ويعتبر مشابه للرخص السابقة من حيث التعديل والتوزيع، وتتيح لك هذه الرخصة استخدام المصدر في البرامج التجارية والإبقاء على شفرتك الخاصة مغلقة المصدر ولكل يجب أن ترفق نسخة من الملفات التي استخدمتها ضمن برنامجك وهذه الملفات ستظل تحت رخصة MIT. 5. ترخيص MPL وهو اختصار لـ Mozilla Public Licenseوهو ترخيص من إنشاء شركة موزيلا وهو مشابه لترخيص GPL ولكن يشترط فقط أن جميع الأعمال المشتقة يجب أن تبقى مفتوحة المصدر حتى ولو كانت تجارية ولكنها لاتعطي المستخدم أي حق في استخدام الشفرة دون إذن المالك. 6. ترخيص BSDويشترط فقط أن تقوم بالإشارة إلى أنك استخدمت الكود المصدري تحت هذا الترخيص ولا يلزمك بأن يكون المصدر مفتوحا أو مغلقا بل يكون حسب رغبتك. وهناك أيضا بعض التراخيص الأخرى ولكننا قمنا باستعراض اشهرها وأكثرها استخداما، وعلى أي حال يبقى عليك في النهاية أن تطلع جيدا على ترخيص أي مواد أو برامج قد تقوم باستخدامها وإعادة بيعها حتى تضمن أنك تقدم محتوى سليما وصحيحا ولا يحتوي على أي أخطاء أو انتهاكات قد تسبب لك أي مشاكل لاحقا.
  5. FreeBSD هو نظام تشغيل شبيه بيونكس Unix-like حرّ ومفتوح المصدر يشيع استخدامه على الخوادم. يتشارك FreeBSD والأنظمة الأخرى المبنية على BSD قواسم عدّة مع أنظمة مثل لينكس Linux؛ وفي المقابل تبقى هناك نقاط اختلاف مهمة تُميّز بين هاتين العائلتين. سنناقش في هذا الدرس بإيجاز بعض القواسم المشتركة بين FreeBSD و لينكس، ثم سنتحدث بشكلٍ أكثر استفاضة عن الفروقات المهمّة بينهما. تنطبق معظم النقاط الواردة في هذا الدرس على باقي أنظمة BSD أيضًا رغم تركيزنا على FreeBSD فقط. السمات المشتركة بين FreeBSD و لينكسقبل أن نبدأ بدراسة نقاط الاختلاف بين FreeBSD و لينكس دعونا نتحدث بصورة عامة عن القواسم المشتركة بينهما. ينتمي كلا النظامين إلى دائرة البرمجيات الحرّة ومفتوحة المصدر؛ حيث يمكن للمستخدمين الإطلاع على الشيفرة المصدرية، التعديل عليها والمساهمة في تطويرها، وذلك رغم استخدام كل منهما لأنواع رخص مختلفة (المزيد عن هذا لاحقًا). ويُعتبر كلًا من FreeBSD و التوزيعات المبنية على غنو لينكس من عائلة الأنظمة الشبيهة بيونكس Unix-like أساسًا، حيث يمتلك FreeBSD جذورًا شديدة الصلة بنظام يونكس في الماضي، في المقابل أُنشئ غنو لينكس من الصفر كبديلٍ حرّ للأنظمة الشبيهة بيونكس. هذا الترابط يُعطينا لمحة عن أسلوب تصميم النظامين، كيفيّة تفاعل المكوّنات بين بعضها البعض، والتوقعات العامة حول كيف يجب أن يبدو النظام وكيف تُنجز المهام عليه. لهذه الاعتبارات فإن FreeBSD وتوزيعات لينكس المختلفة تتقاسم الكثير من الأدوات والتطبيقات. ورغم أنّ بعض الحالات تُحتّم وجود اختلافات في إصدارات هذه البرامج بين النظامين، إلا أنه يمكن وبسهولة أكثر تمرير البرامج بينهما مما لو كنّا نتعامل مع أنظمة غير شبيهة بيونكس non-Unix. بعد أخذ هذه النقاط بعين الاعتبار ننتقل الآن إلى مناقشة المجالات التي تختلف فيها هاتين العائلتين من أنظمة التشغيل، وكلي أمل أن يساعدك الإطلاع على القواسم المشتركة السابقة بفهم أكثر دقّة لنقاط الاختلاف التالية. الاختلاف في الرخصأحد الفروق الأساسية بين نظامي FreeBSD و لينكس هي مسألة التراخيص المُستخدمة. إذ تُرخّص نواة لينكس، تطبيقات غنو الأساسيّة GNU-based، والعديد من البرامج المكتوبة لبيئة لينكس أساسًا تحت رخصة GPL أو رخصة غنو العموميّة، والتي غالبًا ما توصف بأنها رخصة “حقوق متروكة copyleft”، حيث تسمح بحرية عرض، توزيع، وتعديل الشيفرة المصدريّة للبرنامج مع مطالبة الأعمال المشتقة منها الالتزام بذات الرخصة. وفي المقابل يُرخّص نظام FreeBSD بما في ذاك النواة وأية أدوات تمّ إنشاؤها من قبل مُساهمي FreeBSD تحت "رخصة BSD"، والتي توصف بأنها أكثر تساهلًا من GPL حيث لا تطلب من الأعمال المشتقّة استخدام الرخصة عينها. وهذا يعني بأنّ أي شخص أو منظمة يمكنها استخدام أو توزيع أو تعديل برامج BSD دون الحاجة لإعادة المساهمات إلى المنبع أو إتاحة الشيفرة المصدرية لتغييراتها تلك. الشروط الوحيدة المفروضة هي إرفاق نسخة من رخصة BSD مع الشيفرة المصدرية أو مع وثائق العمل المشتق (بناءً على أسلوب الإصدار) إضافةً إلى تنويه حدود المسؤولية. على العموم تُعتبر رخصة BSD قصيرة للغاية ويمكنك الإطلاع على محتواها من هنا. يميل المستخدم في اختياره لأحد هذين الترخيصين بناء على الفلسفة التي يتبعها واحتياجاته في العمل، فرخصة GPL تهتم بتعزيز المشاركة والإبقاء على نظام برمجي مفتوح مُلزمةً الأعمال المشتقة بنفس الترخيص وذلك فوق أية اعتبارات أخرى؛ لذا تحرص البرمجيات الاحتكارية بشدّة ألا تضم أجزاء مُرخّصة وفق GPL. من ناحية أخرى تسمح رخصة BSD بتضمين برامجها في إصدارات احتكارية مغلقة المصدر؛ وهذا ما يجعلها أكثر جاذبية للعديد من الشركات والأفراد التي تأمل بتحقيق دخل من بيع البرامج الخاصة والتكتم على المصدر. إن فهم هاتين الفلسفتين يساعدنا على ادارك ما يقف وراء خيارات المطوّرين والتفضيلات التي يميلون إليها، ويبقى بالتأكيد لكل فلسفةٍ ما يميزها عن الأخرى. نشأة FreeBSDمن الفروق المهمّة بين نظامي FreeBSD و لينكس هو تاريخ نشأة كل واحدٍ منهما، فإلى جانب الاختلافات في التراخيص التي ناقشناها للتوّ، لعل هذا هو أكبر مؤثّر على اختيار المطورين لهذه الفلسفة أو تلك. كتب لينوس تورفالدز النواة لينكس بدءًا من عام 1991 أثناء دراسته في جامعة Helsinki في فنلندا كهواية مستخدمًا حاسوبه الشخصي العامل بنظام MINIX، لكن وبسبب القيود المفروضة على استخدام وتطوير MINIX كتب لينوس بديلًا له. بإضافة نواة لينوس مع الكثير من مكونات النظام المكتوبة من طرف GNU حصلنا على نظام التشغيل غنو/لينكس الذي يملك عددًا من خصائص الأنظمة الشبيهة بيونكس على الرغم من أنه لم يُكتب اعتمادًا على نسخة سابقة من يونكس؛ إذ انطلق لينوس مع نواته بدءًا من الصفر ممّا أورث المشروع اختلافاتٍ أيضًا من الناحية التصميمية عن تلك النظم التي تربطها مع يونكس علاقة أوثق. في المقابل يرتبط FreeBSD مع يونكس بصلات مباشرة. حيث أُنشئ BSD أو توزيعة برمجيات بيركلي كإحدى توزيعات نظام التشغيل يونكس في جامعة كاليفورنيا في بيركلي، والذي أضاف عددًا من الميزات على نظام التشغيل يونكس المملوك آنذاك لشركة AT&T مع رخصة تسمح بالتعديل والتحسين. في وقتٍ لاحق اتُّخِذ قرار لمحاولة استبدال أكبر جزء ممكن من نظام التشغيل الخاص بـ AT&T مع بدائل حرّة ومفتوحة المصدر بحيث لا تُجبر المستخدمين الحصول على رخصة من AT&T لاستعمال BSD. في نهاية المطاف تمّ إعادة كتابة جميع المكونات المعتمدة على رخصة AT&T وإتاحتها برخصة BSD وتطويعها لتعمل على معالجات i386 والتي صدرت باسم “386BSD”. لاحقًا اشتقت FreeBSD من هذه الإصدارة في محاولة للحفاظ على عملية التطوير، دعمها وتحسينها، فيما بعد أعيد إصدار FreeBSD بناء على النسخة المسماة BSD-Lite والتي لا تحتوي على أية شيفرة من يونكس المملوك لـ AT&T نتيجة إحدى الدعاوي القضائية وللتخلص من كافة مشاكل الترخيص. خلال هذه العملية الطويلة ومتعدّدة المراحل من الاشتقاق غدا FreeBSD غير مرتبط بشروط الترخيص المُقلقة. حيث ركّز المطوّرون على كتابة نظام يستفيد ويستثمر في أسلوب يونكس لإنجاز المهام؛ يعود ذلك ربّما إلى الافتراض الشائع بأنّ FreeBSD هو النسخة المجانية من يونكس، وقد أثّرت هذه الجذور على عمليات التطوير اللاحقة وهي التي تقف اليوم وراء بعض النقاط التي سنتطرّق إليها. فصل جوهر نظام FreeBSD عن التطبيقات الإضافيةالفارق الرئيسي من الناحية التصميمية بين FreeBSD و توزيعات غنو/لينكس يكمن في مجال scope النظام. حيث طوّر فريق FreeBSD نظام التشغيل والنواة كوحدة واحدة متجانسة، بينما يشير “لينكس” من الناحية الفنيّة إلى النواة فقط، والتي تُضاف إلى باقي المكونات الأخرى متنوعة المصادر لتشكيل ما يعرف بنظام غنو/لينكس. ورغم أنّ هذا يبدو كفارقٍ صغير للوهلة الأولى، إلا أنّه يؤثّر في الواقع على أسلوب تفاعلك مع النظام وإدارته، ففي لينكس تضم التوزيعة مجموعة مختارة من الحزم بعد التأكد من توافقها معًا بشكل جيد، وبكل الأحوال فإن معظم المكوّنات الأخرى تأتي من قبل مجموعة واسعة من المصادر والمطوّرين وموزّعي البرامج والمشرفين والتي تتضافر جهودهم معًا لضمان عمل النظام بشكل صحيح. بهذا المعنى، لا تختلف كثيرًا المكونات الأساسية للنظام عن الحزم الاختيارية المتاحة من خلال المستودعات الإضافية، حيث تُستخدم أدوات إدارة الحزم نفسها مع مجموعتي المكونات هذه بنفس الطريقة تمامًا. قد تُخصّص التوزيعة مستودعات مختلفة للحزم تبعًا للفِرق المسؤولة عن صيانتها (المستودعات الأساسية، الإضافية، وتلك الخاصة بالمجتمع)، حيث يتسنى لفريق التطوير الأساسي التركيز على مجموعة الحزم المتاحة تحت المستودعات الأساسيّة فقط، إلا أن هذا الفصل بغرض تنظيمي ولا يؤدّي إلى أية اختلافات في إدارة الحزم من وجهة نظر المستخدم النهائي. في المقابل يُطوّر فريق FreeBSD لبّ نظام التشغيل بأكمله بما في ذلك النواة ومجموعة البرامج الأساسيّة التي كُتبت من قبلهم مما يجعل النظام يبدو كوحدة واحدة متجانسة. لذا فليس من البساطة استبدال أحد المكونات ببديل آخر خارجي بسبب التجانس والتكامل بين جميع المكونات؛ وهذا ما يسمح لفريق FreeBSD إدارة نظام التشغيل بأكمله عن قرب وضمان التوافق المناسب بين أجزائه والتنبؤ بسلوكه ومشاكله. كما تُعتبر البرامج الأساسيّة المُضمّنة مع لبّ نظام التشغيل معزولة تمامًا عن المكونات الاختياريّة الأخرى، حيث يقدّم فريق FreeBSD مجموعة كبيرة من البرامج الإضافية، تمامًا كما مع توزيعات لينكس، إلا أنّ إدارتها تبقى منفصلة، فبينما يُحدّث النظام الأساسي كوحدة واحدة، يتم تحديث البرامج الاختيارية بشكل مستقل. كيف تتشكّل الإصدارات؟تتشكّل إصدارات لينكس نتيجة دمج مجموعة كبيرة ومتنوعة من البرامج من مختلف المصادر مع إدخال بعض التعديلات عند الحاجة، ويُقرّر مشرفو التوزيعة المكونات التي يريدون تضمينها في وسائط التثبيت وتلك التي يرغبون بإتاحتها عبر المستودعات الأخرى، بعد اختبار توافق المكونات مع بعضها يتم إصدار التوزيعة مُضمّنةً بالبرمجيات المُختبرة. ذكرنا في الفقرة السابقة: يُطوّر فريق FreeBSD الجزء الأكبر من نظام التشغيل FreeBSD. بشكل رئيسي يُنتج الفريق لبّ نظام التشغيل الأساسي. تُعتبر البرمجيات الأساسية وحدة متجانسة. تقودنا هذه النقاط إلى النهج المُتبع في إصدار البرامج هنا والمختلف عن ما تتبعه معظم توزيعات لينكس، حيث يُنظّم FreeBSD المهام على مستوى نظام التشغيل محتفظًا بكل المكونات الأساسية في مستودعٍ واحد للشيفرة المصدرية، الأمر الذي يُفرز عددًا من النتائج المهمة. في البداية، وبسبب تطوير جميع الأدوات جنبًا إلى جنب في مستودعٍ واحد، يتشكّل الإصدار ببساطة عن طريق اختيار إحدى تنقيحات فروع المستودع، وهذا يشبه الطريقة التي تصدر بها معظم البرامج المستقرة حيث يتم اختيارها من شيفرة أساسية منظمة. وبما أنّ نظام التشغيل الأساسي بأكمله تحت التطوير النشط، هذا يعني بأنّه يمكن للمستخدمين “تتبّع track” فروع أو درجات مختلفة من الاستقرار اعتمادًا على درجة الاختبار التي يفضّلون عندها استخدام النظام، وهكذا فالمستخدمون ليسوا بحاجة لانتظار المطورين ريثما يصادقوا على التغييرات الجديدة كي تصبح جاهزة للاستخدام على أنظمة تشغيلهم. يشبه هذا إلى حدٍ ما تتبّع مستخدمي لينكس لمستودعات مختلفة من ناحية الاستقرار ورقم الإصدار، ففي لينكس يمكنك تتبّع مستودع حزمة ما، بينما في FreeBSD أنت تتبع فرع من مستودع مركزي. الفروق البرمجيّة وتصميم النظامسنناقش فيما تبقى من نقاط الفروق المتعلقة بالبرمجيات نفسها والصفات العامة لكل نظام. الحزم المدعومة والتثبيت من المصدرأحد الفروق الرئيسية بين نظام FreeBSD و معظم توزيعات غنو/لينكس من وجهة نظر المستخدم هي كم البرامج المتاحة والمدعومة بصيغة مُحزّمة أو كبناء من المصدر. ففي حين توفّر معظم توزيعات لينكس حزم البرامج مُترجمة فقط وجاهزة للتثبيت الفوري من المستودعات الرسميّة، فإن FreeBSD توفّر إضافة إلى ذلك نظام لبناء وتثبيت الحزم من المصدر، وهذا ما يتيح لك حريّة الاختيار بين تركيب الحزم مسبقة الترجمة بقيم افتراضية معقولة أو بناءها من المصدر وتخصيصها بما يلائم مع احتياجاتك من خلال نظام يُدعى المنافذ “ports”. يضم نظام المنافذ هذا مجموعة من البرامج التي يملك FreeBSD دليلًا عن كيفيّة بنائها من المصدر، تُتاح هذه البرامج في الدليل “/usr/ports” بشكلٍ هرمي مُنظّم حيث يمكن للمستخدمين من خلالها الوصول للبرامج. تضم هذه الأدلة عددًا قليلًا من الملفات والتي تُحدّد مواقع الملفات المصدريّة للبرامج، إضافةً لتعليمات الترجمة والتي تتيح بناء البرنامج بشكل متوافق مع FreeBSD. تُنتَج الإصدارات المُحزمّة سلفًا من البرامج من قبل نظام المنافذ أيضًا، ممّا يجعل FreeBSD توزيعة مصدرية بالدرجة الأولى مع توفير حزم مُترجمة للتسهيل، ويبقى بإمكانك تركيب البرامج من كلا النوعين أو أحدهما على نظام التشغيل الخاص بك ومن خلال نظام إدارة البرمجيات نفسه. الاختلاف في نهج تعديل البرامجإحدى الأشياء التي قد تبدو غريبة بعض الشيء على مستخدمي توزيعات لينكس الشائعة هو أن FreeBSD لا تُدخل تعديلات على البرامج بعد المنبع إلا للضرورة. حيث تجري العديد من توزيعات لينكس تعديلات متنوعة على البرامج بهدف جعلها أسهل في التواصل والتشبيك مع مكونات النظام الأخرى أو لتسهيل إدارتها، إحدى الأمثلة على ذلك هي إعادة هيكلة هرمية إعدادات خوادم الوِب الشائعة لجعل عملية ضبط الخوادم قياسيّة أكثر. وعلى الرغم من أن المستخدمين يرون هذه التعديلات مفيدة غالبًا، فهناك نقاط ضعف تُعيب هذا النهج، فهو على سبيل المثال يفترض معرفة ما هي الإعدادات الأفضل للمستخدمين، كما أنه يُصعّب التعامل مع البرنامج على المستخدمين القادمين من منصات أخرى بمقدار انحرافه عن مواصفات المنبع. يُعدّل مشرفو نظام FreeBSD البرامج بواسطة “رقع patches”، إلا أنّ هذه التعديلات غالبًا ما تكون أكثر تحفظًا مما تقوم به توزيعات لينكس, وهي تهدف بالعموم إلى إدخال تغييرات ضرورية لبناء الحزم من المصدر مع بعض الافتراضات المناسبة لضمان عملها بشكل سليم في بيئة FreeBSD. لا يتم تعديل ملفات ضبط البرامج والتي توضع مع ملفات النظام بشكل كبير عادةً، لذا فقد تحتاج إلى بعض العمل الإضافي لتأمين تواصل وتشبيك مناسب بينها وبين باقي مكونات النظام. نكهات FreeBSD للأدوات الشائعةإحدى الجوانب التي قد تسبب ارتباك لمستخدمي لينكس في نظام FreeBSD هو الاختلاف البسيط في أسلوب عمل الأدوات المعروفة مقارنة مع أنظمة لينكس. يحتفظ فريق FreeBSD بنسخهم الخاصة لعددٍ كبير من الأدوات الشائعة، فبينما تستورد توزيعات لينكس العديد من أدواتها من فريق GNU، فإن فريق FreeBSD يعتمد تنويعاته الخاصة من هذه الأدوات. في الحقيقة هناك عدّة أسباب لإتباع هذا النهج، أولها أنّ فريق FreeBSD مسؤول عن تطوير وصيانة لبّ نظام التشغيل الأساسي، إضافةً للتحكم في عملية تطوير هذه التطبيقات وإدراجها تحت رخصة FreeBSD إذا كانت ضرورية أو مفيدة. بعض هذه الأدوات ترتبط أيضًا بشكل وثيق وظيفيًا مع أدوات BSD و يونكس التي تم اشتقاقها عنها، وهذا خلافًا لأدوات GNU والتي تميل لعدم التوافق عكسيًا بين بعضها في العادة. غالبًا ما تُعبّر هذه الاختلافات عن نفسها في خيارات الأوامر أو صياغتها عمومًا. فإذا كنتَ ترغب بتنفيذ الأوامر بأسلوب ما موافق لما هو عليه الحال في أجهزة لينكس فإنّ هذا قد لا يعمل على خوادم FreeBSD، لذا فمن المهم دومًا أن تطلع على أدلة استخدام الأوامر man للتحقق من الخيارات المتاحة على أنظمة FreeBSD. صدفة شل Shell القياسيّةمن النقاط الأخرى التي يُفترض أن تسبب بعض الارتباك لمستخدمي لينكس في FreeBSD هو أنّ صدفة شل الافتراضية ليست bash وإنما tcsh، وهي النسخة المُحسنّة من csh المكتوبة بلغة C بواسطة BSD. عدم اختيار bash يعود إلى كونها إحدى مكونات نظام GNU وليس BSD. وبينما تعمل كلا الصدفتين بأسلوب متشابه في سطر الأوامر، فإن نصوص سكربت البرمجية لن تعمل في tcsh. إلا أنّه يمكن استخدام صدفة Bourne الأساسية والمعروفة بصدفة sh بهدف الحصول على قدر أعلى من الموثوقية لتجنب المشاكل المرتبطة بكل من tcsh و csh، علاوةً على سهولة تغيير الصدفة الافتراضية للنظام إلى صدفة bash إن كنتَ تفضّل ذلك. طبقات أكثر لنظام الملفاتذكرنا آنفًا أن FreeBSD يُميّز بين نظام التشغيل الأساسي والمكونات الاختيارية (المنافذ)، والتي يمكن تثبيتها أعلى تلك الطبقة، وهذا ما ينعكس على الأسلوب المُتبع في FreeBSD لتنظيم المكونات ضمن هياكل الملفات. توضع الملفات التنفيذية في لينكس عادةً ضمن الأدلة bin ،/sbin ،/usr/sbin/، و usr/bin/ بناءً على الغرض منها ومدى أهميتها لعمل الوظائف الأساسيّة، وبينما يُراعي FreeBSD هذا المعيار التنظيمي فإنه يُضيف مستوىً آخر من الفصل بين المكونات المثبتة كجزء من النظام الأساسي أو تلك الاختيارية (المنافذ)، حيث توضع أدوات النظام الأساسية في أحد الأدلة السابقة، وتُعتمد الأدلة usr/local/bin/ و usr/local/sbin/ لبرمجيات المنافذ. يضم الدليل usr/local/ بنية تعكس صيغة الأدلة / و usr/، وهو الدليل الجذر الرئيسي للبرامج المُثبتة من نظام المنافذ، وغالبًا ما يتم حفظ إعدادات المنافذ عبر ملفات تُخزن في usr/local/etc/، بينما تُخزّن ملفات الضبط الخاصة بالنظام الأساسي في etc/ كالمعتاد. وهذا يُسهّل معرفة إذا كان برنامج ما جزء من نظام المنافذ الأساسي ويُبقي نظام الملفات نظيف. كلمة أخيرةيتقاسم FreeBSD و لينكس العديد من الخصائص المشتركة، وإذا كنت قادمًا من إحدى توزيعات لينكس فمن المهم إدراك وفهم نقاط الاختلاف بينهما، وما يُميّز كل نظام عن الآخر، لمعرفة الأسباب التي دفعت بأنصار كل طرف إلى اختياره. التعامل مع FreeBSD كنظام تشغيل مستقل بدلًا من النظر إليه من خلال عدسة لينكس سوف يجنبك مشاكل عدّة في الفهم والتعامل ويساعدك على بناء تجربة أفضل عمومًا مع FreeBSD. آمل أن أكون قد تمكنت من شرح الاختلافات بين النظامين بشكل جيّد. ترجمة وبتصرف للمقال: A Comparative Introduction to FreeBSD for Linux Users لصاحبه Justin Ellingwood.