الترقية على ARM (aarch64) مع إعدادات لغة غير افتراضية
لقد أمضيت بعض الوقت في إصلاح ترقية معيبة على خادم واحد بإعداد حاويتين.
- وحدة المعالجة المركزية الخاصة به هي ARM
- تم تكوين Discourse باستخدام إعداد اللغة
en_UK.UTF-8
خطوة بخطوة، اكتشفت أن:
tianon/postgres-upgrade:13-to-15لا يعمل على ARM- يتم تخزين تكوين اللغة في
share/${CONTAINER}/postgres_data/postgresql.conf
بدأت بالتعليق على جزء env: من حاوية البيانات، لضمان استخدامها لإعدادات اللغة الافتراضية.
لذلك، للخروج من فوضى الترقية، اتخذت خطوة خطيرة، بافتراض أن اختلافات الترتيب بين en_GB و en_US كانت ضئيلة، وقمت بتحديث المجموعة بأكملها بلا رحمة إلى en_US:
UPDATE pg_database SET datctype='en_US.UTF-8', datcollate='en_US.UTF-8';
أنا غير متأكد من أن هذه الخطوة مطلوبة، وقد تختلف النتائج من مستخدم لآخر (YMMV). أتركها هنا لمن هم أكثر معرفة للتعليق، و لا أوصي بها على الإطلاق للغات المختلفة!
ثم قمت باستبدال إعداد اللغة في postgresql.conf:
sed -i -e 's/en_GB/en_US/g' shared/data/postgres_data/postgresql.conf
sudo -H -u discourse ./launcher rebuild data
...
UPGRADE OF POSTGRES COMPLETE
![]()
لا تعتقد أن الأمر كان سهلاً: أنا لا أذكر المسار الطويل لاستكشاف الخيارات، خاصة عندما تدخلت، كانت واجهة المسؤول غير متاحة، وكان آخر نسخة احتياطية قد تم إنشاؤها قبل 6 أيام. كان علي أن أعبث قبل أن أتمكن من الوصول إلى حل مناسب - أو على الأقل، حل يعمل.
آمل أن يوفر هذا بعض الوقت لبعض الأشخاص.