فشل حزمة Discourse في البناء عبر nix-shell

حاولت تنزيل وبناء حزمة discourse في Nix، لكنها فشلت بسبب خطأ يبدو أنه يتعلق بتبعيات pnpm:

 ERR_PNPM_INVALID_DEPENDENCY_NAME  رفض وضع تبعية تحت /build/source/frontend/discourse-types/node_modules مع الاسم المستعار غير صالح "@types/@glimmer__component"

ERROR: فشل pnpm في تثبيت التبعيات

إذا رأيت ERR_PNPM_NO_OFFLINE_TARBALL أعلاه، اتبع هذه الخطوات لإصلاح المشكلة:
1. اضبط pnpmDeps.hash على "" (سلسلة فارغة)
2. ابنِ الاشتقاق وانتظر حتى يفشل بسبب عدم تطابق التجزئة (hash)
3. انسخ قيمة 'got: sha256-' مرة أخرى إلى حقل pnpmDeps.hash

إذا رأيت ERR_PNPM_LOCKFILE_CONFIG_MISMATCH أعلاه، حاول تغيير إصدار pnpm
تم العثور على 'pnpm' بالإصدار '10.34.4'

error: لا يمكن بناء '/nix/store/k90f0nxqhlyb1bym9lg5xl6pfjz4vamf-discourse-assets-2026.1.4.drv'.
       السبب: فشل المُنشئ برمز خروج 1.
       مسارات الإخراج:
         /nix/store/biwwabb1xl58v4ywqmmc7d4vm0sl78q3-discourse-assets-2026.1.4-node_modules
         /nix/store/jsbd94c63h63yq5xvrp27m5l1sg6667c-discourse-assets-2026.1.4-generated
         /nix/store/n278iw1v8kzswvwm8f6n6g15gkw6wb0q-discourse-assets-2026.1.4-frontend
         /nix/store/qnxglj6z2n8fn46af9rp7161634brcgk-discourse-assets-2026.1.4
       آخر 25 سطرًا من السجلات:
       > التقدم: تم حل 1909، إعادة استخدام 1263، تنزيل 0، إضافة 0
       > التقدم: تم حل 1909، إعادة استخدام 1907، تنزيل 0، إضافة 65
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 435
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 530
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 672
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 838
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1036
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1175
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1464
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1767
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1907
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1908
       > التقدم: تم حل 1909، إعادة استخدام 1909، تنزيل 0، إضافة 1909، انتهى
       >  ERR_PNPM_INVALID_DEPENDENCY_NAME  رفض وضع تبعية تحت /build/source/frontend/discourse-types/node_modules مع الاسم المستعار غير صالح "@types/@glimmer__component"
       >
       > ERROR: فشل pnpm في تثبيت التبعيات
       >
       > إذا رأيت ERR_PNPM_NO_OFFLINE_TARBALL أعلاه، اتبع هذه الخطوات لإصلاح المشكلة:
       > 1. اضبط pnpmDeps.hash على "" (سلسلة فارغة)
       > 2. ابنِ الاشتقاق وانتظر حتى يفشل بسبب عدم تطابق التجزئة (hash)
       > 3. انسخ قيمة 'got: sha256-' مرة أخرى إلى حقل pnpmDeps.hash
       >
       > إذا رأيت ERR_PNPM_LOCKFILE_CONFIG_MISMATCH أعلاه، حاول تغيير إصدار pnpm
       > تم العثور على 'pnpm' بالإصدار '10.34.4'
       >
       لعرض السجلات الكاملة، نفذ:
         nix log /nix/store/k90f0nxqhlyb1bym9lg5xl6pfjz4vamf-discourse-assets-2026.1.4.drv
error: لا يمكن بناء '/nix/store/9n8grwvci4gd2c64i9wm5ggw5v4r63xf-discourse-2026.1.4.drv'.
       السبب: فشل تبعية واحدة.
       مسارات الإخراج:
         /nix/store/l9xhbd5scihfln5jr9vh1c6l4xznaall-discourse-2026.1.4
error: فشل البناء بسبب فشل التبعية

لم أرَ هذه المشكلة في أي مكان آخر، وفكرت أنكم قد ترغبون في معرفة ذلك.

المسألة هي أن دبيان/أوبونتو فقط هما مدعومان، وليس نيكس. هل هذا لبيئة التطوير أم للإنتاج؟

هذا مجرد تنزيل حزمة Discourse من nixpkgs باستخدام مدير الحزم Nix. تعمل المشتقات (Derivations) من خلال استنساخ حزمة ما وتجميعها مباشرةً من المصدر.

كنت أقوم بتثبيت حزمة بشكل مؤقت كما أفعل مع أي نظام NixOS آخر. لم يكن الأمر مخصصًا للتطوير أو الإنتاج تحديدًا، بل أردت التحقق مما إذا كان بإمكاني استخدام Discourse عبر سطر الأوامر (CLI). لم يتمكن متصفحي ذو الواجهة النصية (TUI) من عرض بعض عناصر واجهة المستخدم، لذا فكرت في تجربة حزمة Nix هذه لمعرفة ما إذا كانت تجربة المستخدم أكثر ملاءمة.

جربت تنزيلًا/تجميعًا بسيطًا عبر Nix وواجهت الخطأ المذكور أعلاه.

مثير للاهتمام. أعتقد أن الحزمة ليست رسمية من Discourse. نظرة سريعة على قائمة المُحافظين لا تظهر أي عضو من فريق Discourse سمعت به من قبل. بالإضافة إلى ذلك، لا توجد #وثائق حول هذا الأمر据我所知.

للتوضيح: هذا الملحق على ما أعتقد

آه نعم، هذا هو/هي مصمم/مصممو حزم نيكس (nixpkg)

المصدر الفعلي موجود في كتلة `let in`

السطر 55:

let
  version = "2026.1.4";

  src = fetchFromGitHub {
    owner = "discourse";
    repo = "discourse";
    rev = "v${version}";
    sha256 = "sha256-kQYDKZIMsWByuCZQfUlwhoIew5QykVylRMh6xvrHIBY=";
  };
in
# ...

لذلك، فهو يستخرج من `discourse/discourse`، وباقي عملية الاشتقاق (derivation) عبارة ببساطة عن خطوات بناء، وأين تضع الملفات، وماذا تفعل مع أخطاء بناء معينة …إلخ

معامل `src` هذا يشبه إلى حد ما المتغير، لأنه ينتقل عبر باقي عملية الاشتقاق

لذلك لا تحتاج إلى الالتزام بنظام NixOS بالكامل لاختبار هذا

مدير حزم Nix متاح تقريبًا لأي جهاز

`nix-shell -p discourse`

حيث يبدأ `nix-shell` shell حيث تكون أي حزمة أو حزم، `-p`، متاحة الآن على النظام. بمجرد إغلاق shell، لم تعد هذه الحزم مثبتة

أختبر لمعرفة ما إذا كان هذا الموضوع مقفلاً، لأنني لا أرى أحد تعديلاتي الأخيرة.

ربما يحتاج التعديل إلى الموافقة ليظهر في المنشور

الموضوع غير مقفل، ونحن نستمتع بالموضوع ونتعلم منه. شكراً لمساهمتك ومرحباً بك في ميتا :+1: