تعذر تحديث Ruby، مما يجعل ./launcher rebuild app يفشل باستمرار

مرحباً،

لقد قمت مؤخرًا بترحيل صورة خادم تحتوي على Discourse مثبت بواسطة Docker.

يمكنني تشغيل كل شيء، ولكن أحتاج إلى إعادة إصدار شهادة SSL.

نظرًا لأن الخادم القديم كان يحتوي على SSL مُعد، فإنني أتبع اقتراح هذا الدليل وأقوم بتشغيل
./launcher rebuild app

يقوم هذا بدوره بسحب Docker وتحديث العديد من الأشياء. الصورة الحالية هي Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e

في المرة الأولى التي قمت فيها بتشغيله، ظهرت لي رسالة ترقية Postgres، لذلك قمت بتشغيل ./launcher rebuild app مرة أخرى كما هو موجه.

الآن يستمر في الفشل في كل مرة، وأعتقد أن ذلك بسبب هذا الخطأ مع إصدار غير كافٍ من Ruby مثبت.

ERROR:  Error installing bundler:
	bundler-2.5.3 requires Ruby version >= 3.0.0. The current ruby version is 2.7.2.137.

إليك المخرجات الكاملة

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>

Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

كنت أعتقد أن Docker سيقوم بتحديث إصدار Ruby حسب الحاجة؟

لقد حاولت تسجيل الدخول يدويًا إلى الحاوية وتثبيت RVM، وتفعيل Ruby v3+ ولكنني ما زلت أواجه نفس الخطأ.

أنا تائه بعض الشيء في هذه المرحلة، وأتساءل ما إذا كان الإصدار المثبت قديمًا جدًا بحيث لا يمكن ترقيته باستخدام ./launcher؟

أي نصيحة ستكون محل تقدير كبير!

ملاحظة فقط، هذا ليس الخطأ، الأخطاء الفعلية ستكون أعلى.

إعجابَين (2)

أوصي بالبدء بصورة جديدة وإجراء تثبيت قياسي.

إعجاب واحد (1)

شكراً جاي، كنت أخشى أن تكون هذه هي الطريقة الوحيدة للمضي قدمًا

أعتقد أنني أحتاج فقط إلى إيجاد طريقة وآمل أن أتمكن من نسخ قاعدة البيانات عبرها حتى لا يضيع كل شيء

حاول تحديث جميع حزمك باستخدام apt upgrade

الأمر ليس صعبًا. يمكنك ببساطة عمل نسخة احتياطية، أو القيام بـ نقل موقع Discourse إلى VPS آخر باستخدام rsync. ليس لديك ما تخسره بما أن موقعك الحالي يبقى سليمًا. إنها الطريقة الأكثر أمانًا للمضي قدمًا.

إعجاب واحد (1)

لقد قمت بتحديث كل ما يمكنني تحديثه، بما في ذلك إصدار Ubuntu للخادم وتأكدت من أن لدي ruby v3.1 قيد التشغيل.
المشكلة هي أنني أشك في أن إصدار ruby المطلوب في الحاوية هو الذي يتحكم فيه docker، ولا يمكنني تحديثه.

تمكنت من تثبيت إصدار نظيف وتشغيله 3.3.0.beta3-dev

ولكن، عندما قمت باستعادة النسخة الاحتياطية من الموقع القديم، لا يبدو أنها استعيدت بشكل صحيح والآن صفحة تسجيل الدخول لا تعمل. بالنظر إلى وحدة تحكم JavaScript، هناك خطأ Discourse is not defined كلما نقرت على أزرار تسجيل الدخول/التسجيل. أعتقد أنه بسبب الاختلاف الكبير في الإصدارات، فإن استعادة بسيطة لنسخة احتياطية 2.6.0 إلى تثبيت نظيف 3.3.0 ليست ممكنة.

نقل كل شيء إلى خادم جديد لا يعمل بالنسبة لي، حيث لا يمكنني تشغيل ./launcher rebuild app دون أن يمنعني خطأ Ruby هذا في كل مرة.

إذا كنت تقوم بترقية بهذا القدر، فمن المحتمل أن تكون السمات الخاصة بك معطلة. جرب الوضع الآمن.

3 إعجابات

من الناحية الفنية، لا يوجد 3.3.0 بعد، ما زلنا نمر بمراحل الإصدار التجريبي.

إعجاب واحد (1)

شكرا على المعلومات، للأسف عندما أحاول الوصول إلى /safe-mode يتم إعادة توجيهي مرة أخرى إلى عنوان URL /login.\n\nأعتقد أنني سأحاول إعادة التثبيت والبدء من جديد

لقد استخدمت صورة الخطاب الرسمية ولكنني أفترض أن ذلك يثبت أحدث إصدار بغض النظر عما إذا كان تجريبيًا. أو هل هناك طريقة يمكنني من خلالها تحديد إصدار مستقر أو إصدار معين؟

نعم يمكنك ذلك. قم بتحرير ملف app.yml في تثبيت جديد قبل بناء discourse (نظرًا لأنه لا يمكنك الرجوع إلى إصدار أقدم). اختر العلامة من GitHub. اضطررت للقيام بذلك منذ بعض الوقت عندما اضطررت إلى الاستعادة إلى إصدار قديم قبل الترقية إلى أحدث إصدار.

الآن أقوم بإنشاء صورة للإصدار العامل قبل الترقية في حالة حدوث خطأ ما.

شكرا لك، أقدر المساعدة!

الخبر السار هو أنني تمكنت من معرفة كيفية تثبيت إصدار أقدم من discourse_docker ونفس إصدار discourse عن طريق تغيير ملف app.yml

الخبر السيئ هو أنني واجهت خطأ آخر قبل نهاية التثبيت

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 14351 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

سأحتاج إلى التعمق في هذا الأمر، يبدو أنه متعلق بـ ruby/rails داخل الحاوية نفسها.

جرب https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins

إعجابَين (2)