خطأ Gem::FilePermissionError أثناء تثبيت MacOS

عند تثبيت Discourse (لأغراض التطوير) على جهاز Mac الخاص بي، أواجه هذا الخطأ:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

كيف يمكنني حل هذه المشكلة؟
شكرًا لك.

هل قمت بتشغيل تثبيت سكربت Discourse هنا؟

هل تستخدم macOS Catalina؟ إذا كان الأمر كذلك، يبدو أنك تواجه مشكلة حيث يحاول Discourse استخدام إصدار Ruby الخاص بالنظام. يُفضل استخدام أداة مثل rbenv لتحديد إصدار Ruby لتجنب هذه المشكلة.

أنا أستخدم نظام MacOS Catalina. وقد قمت بتشغيل ذلك السكربت، لكنه فشل في منتصف الطريق، لأنني أعتقد أنه كان مُثبّتًا بالفعل.

هل يمكنك لصق مخرجات which rbenv؟

وهل لديك ملف .bashrc أو .zshrc مخصص؟

/usr/local/bin/rbenv

ليست لديّ يقين تام. لا أظن ذلك، لكن ربما.

هل يمكنك استخدام الأمر cd للدخول إلى مجلد discourse ومشاركة مخرجات الأمر which ruby؟

عفوًا، لم ألاحظ. قمت بذلك وحصلت على /usr/bin/ruby

حسناً، يبدو أنك تستخدم نظام Ruby الخاص بـ Discourse، وهذا هو السبب في ظهور هذه المشكلة.

تحقق من متغير PATH عن طريق كتابة الأمر echo $PATH. يجب أن ترى /Users/<اسم المستخدم>/.rbenv/bin و /Users/<اسم المستخدم>/.rbenv/shims مدرجين هناك.

إذا لم تكن موجودة، أضفها في ملف تكوين الـ shell الخاص بك .bashrc أو .zshrc. بالنسبة لـ ZSH، يمكنك إضافتها كالتالي: export PATH=/path/number/1:/path/number/2:$PATH

إذا كانت موجودة، تحقق من ترتيبها. إذا كانت في نهاية السلسلة، فمن المرجح أنها لا تُحمّل قبل نظام Ruby، مما يعني أن نظام Ruby هو المستخدم لـ Discourse. يمكنك استخدام نفس النهج المذكور أعلاه لنقل المسارات إلى أعلى السلسلة.

اعتقدت أن @david أضاف فحصًا لإصدار Ruby إلى أدوات بيئة التطوير لدينا؟ :thinking:

أعتقد أن هذا كان خاصًا بـ theme cli.

هل توجد طريقة لإضافة فحص مكافئ هنا؟

أعتقد أننا نفحص بالفعل التوافق مع إصدار Ruby في Discourse — والمشكلة هنا هي أن حزمة Discourse الخاصة بنا لا تستطيع كتابة الـ gems لإصدار Ruby على مستوى النظام المرفق مع macOS. قد أكون مخطئًا في التفاصيل المحددة، لكنني أعتقد أن الأمر يتعلق بتغيير قامت به Apple مع macOS Catalina. لقد واجهت هذه المشكلة بنفسي، وقد تطلب الأمر قدرًا كبيرًا من استكشاف الأخطاء وإصلاحها لفهمها.

١. واجهت نفس الخطأ الذي واجهه OP.

٢. اقرأ هذا:

٣. اعتقدت أنه ليس خطأ في أذونات الملف في الواقع، بل كان المثبت يبحث في المكان الخطأ.

٤. عرفت أن إعادة تشغيل الطرفية ستقوم بإعادة تحميل ملف .zshrc الخاص بي، لذلك أغلقت الطرفية وفتحتها.

٥. قمت بتشغيل البرنامج النصي للتثبيت مرة أخرى ولم أواجه هذا الخطأ بعد الآن.

هل يمكن حل هذه المشكلة بتحديث الطرفية في مكان استراتيجي أثناء عملية التثبيت؟ :thinking: