إعداد Discourse يفترض أن netcat مثبت

لقد نجحت للتو في إعداد أول مثيل لي لـ Discourse بنجاح، رغم أنني واجهت بعض الصعوبات في الطريق. أستخدم Debian Stretch وكنت أتبع دليل تثبيت Docker.

أثناء الإعداد، يقوم السكربت بالتحقق مما إذا كان اسم النطاق الذي أدخلته ينتهي فعليًا على تلك الآلة. يفعل ذلك باستخدام nc (netcat). اكتشفت أن هذه كانت مشكلتي؛ لم يكن netcat مثبتًا، وقد حُلت المشكلة بمجرد تثبيته.

ومع ذلك، أعتقد أن هذا خطأ في سكربت التثبيت. يمكن دالة بسيطة للتحقق من تثبيت nc أن تحل هذه المشكلة، أو ربما يمكن منح المستخدم حرية تخطي التحقق تمامًا، مما سيحل المشكلة أيضًا.

تم طرح هذه المسألة من قبل، لكن netcat discourse-setup يفشل في العثور عليه.

الفحص يُصدر مجرد تحذير، ويمكنك تجاهله بحرية، لذا لا أعتبر هذا خطأً.

لقد فكرت في جعل discourse-setup يقوم بتثبيت nc، لكن تثبيت شيء قد لا يُحتاج إليه أبدًا عبر discourse-setup يبدو أمرًا يجب تجنبه.

ربما يكون الحل الأفضل في حال غياب nc هو تخطي الاختبار واقتراح تثبيت nc بنفسك إذا أردت إجراء الاختبار، وربما حتى اقتراح أمر apt install nc.

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

يمكن تجاوز ذلك بسهولة عن طريق إجراء فحص بسيط قبل تشغيل فحص IP، على النحو التالي:

  1. تحقق مما إذا كان netcat مثبتًا.
  2. تابع إذا كان مثبتًا.
  3. إذا لم يكن مثبتًا، اطبع رسالة تحذير واعرض على المستخدم خيارًا بنعم/لا للمتابعة دون الفحص أو للإلغاء حتى يتمكن من تثبيت netcat (أو حتى عرض تثبيتها له عبر apt/yum/pacman).

خيار آخر سيعمل على أنظمة أكثر (ولكن ليس جميعها) مقارنةً بالوضع الحالي هو استخدام مكدس /dev/tcp. يمكن العثور على مزيد من المعلومات حول كيفية القيام بذلك هنا. سيُصلح هذا الأمر في Debian ويعمل تحت Ubuntu، ولم أجربه بعد على توزيعات أخرى.

@pfaffman لقد قمت بمحاولة أولية لهذا وأنشأت طلب سحب لهذا. :tada: