هل يمكنك تزويدي بسجلات الفشل الكاملة؟ أود تتبع المشكلة حتى نتمكن من إصلاحها.
Desktop.zip (17.9 كيلو بايت)
لا، ليس سجلات الموقع التي تعمل، بل سجلات إعادة البناء حيث يحدث الفشل.
ما هي الملفات التي تحتاجها؟
ليست ملفات، بل هي ما يُطبع إلى المخرجات القياسية أثناء إعادة البناء. أي العناصر التي تظهر في الطرفية أثناء عملية إعادة البناء التي تفشل.
سأحتاج إلى بدء العملية الكاملة من جديد للحصول على تلك السجلات
كان أحد أول الأسئلة التي طرحتها هنا يتعلق بذلك: Installation text location
أنا معتاد الآن على نسخ النص ولصقه في OneNote.
إذا قمت بإعادة البناء، فسيتم سحب البيانات، لكن التمهيد لا يفعل ذلك.
شكرًا لك. هل يمكنك شرح ذلك بالتفصيل؟
السبب في سؤالي هو أننا لا نستخدم أمر “rebuild” عند التثبيت الأولي (وهو ما أعتقد أنك تقصده بـ “bootstrapping”). نستخدم “rebuild” لاحقًا، ولكن يتم تنفيذ “git pull” تلقائيًا في تلك المرحلة. لا يمكنني العمل عندما يكون أمر “git pull” ضروريًا ضمن مجموعة الأوامر الثلاثة هذه.
cd /var/discourse
git pull
./launcher rebuild app
./discourse-setup
يفعل كل شيء
هل من الضروري أبدًا كتابة git pull سواءً عند التثبيت الأولي أو إعادة البناء اللاحقة؟
لا تحتاج إلى تنفيذ git pull أثناء التثبيت الأولي لأنك قمت للتو باستنساخ المستودع. يُعد git pull ضروريًا لجلب نسخة محدثة من Discourse.
وإذا كان الأمر يتعلق بتثبيت أولي وتستخدم discourse-setup، فإنها تقوم بإعادة البناء (التي تنفذ git pull، لكن من غير المرجح أن تفعل شيئًا ما لم يتم دفع commit أثناء تشغيل discourse-setup.)
إذن، هل اتفقنا على أن أمر git pull غير ضروري أبدًا في مجموعة الأوامر الثلاثة المذكورة في التعليمات؟ هذا هو المقصود:
بدلاً من ذلك، يمكنك الدخول إلى الخادم عبر ssh وإعادة البناء باستخدام:
cd /var/discourse git pull ./launcher rebuild app
أنا أميل إلى الاعتقاد بأن git pull الإضافي غير ضروري، وذلك بسبب الكود الموجود هنا:
والذي يبدو أنه يتحقق من الإصدار المحلي، ويحدّث ويعيد تشغيل برنامج التشغيل (launcher) إذا كان قديمًا (بالإضافة إلى عدد من الأمور الأخرى).
لذلك، يجب أن يكون الأمر التالي كافيًا فقط في عمليات إعادة البناء اللاحقة:
cd /var/discourse
./launcher rebuild app
بدون أمر git pull الزائد عن الحاجة.
(ملاحظة: من الجيد دائمًا الغوص في الكود المصدري لتصبح أكثر يقينًا).
(ملاحظة رقم 2: لقد قمت بحذف منشوري السابق الذي زاد من الارتباك).
شكرًا لك. كنت متأكدًا من أنني أقنعت نفسي بنفس الأمر بطريقة ما (من المنتدى بدلاً من الكود)، لذا بحثت وعثرت على:
وأيضًا، يبدو أن الأمر عمل بهذه الطريقة تقريبًا “دائمًا”:
أعجبني كيف أصبح
أود أن أضيف أن هذا لم يكن بديهياً على الفور أن هذه الحيلة ممكنة:
بشكل أساسي، يفحص السكربت لمعرفة ما إذا كان “هو نفسه” قديماً، ثم يقوم بتحديث نفسه (وجميع الملفات المرتبطة به)، ثم يعيد استدعاء نفسه مرة أخرى.
ذكي ![]()
هذا نمط مفيد جداً يمكن استخدامه في أماكن أخرى أيضاً … عمل رائع!