إن فشل تثبيت OpenVPN عبر Chocolatey بخطأ في التوقيع أو المفتاح ليس عادةً مشكلة تنزيل. تشغّل الحزمة خطوة تحقق تستدعي gpg، ويحل Windows ذلك الاسم المجرد عبر PATH. إذا ثُبّت Git for Windows أولًا، فإن gpg.exe المرفق به يسبق نسخة GnuPG التي يتوقعها OpenVPN، فيستجيب البرنامج الخطأ للنداء. والخطأ الذي تراه هو ما قرر ذلك البرنامج الآخر الشكوى منه، ولهذا لا يذكر السبب الحقيقي أبدًا.

ترتيب PATH يحدد أي gpg يعمل

لا يملك Windows سجلًا مركزيًا لأسماء الملفات القابلة للتنفيذ. حين تطلب إحدى العمليات gpg دون مسار كامل، يمرّر المحمّل إدخالات PATH بالترتيب ويشغّل أول تطابق. وتضمّن Git for Windows نسخة GnuPG مصغّرة داخل دليل usr/bin كي تعمل الالتزامات الموقّعة، وعادةً يضع مثبّتها ذلك الدليل قرب مقدمة PATH الخاص بالمستخدم.

يثبّت GnuPG في دليله الخاص، وهو عادةً C:\Program Files (x86)\GNU\GnuPG\pub، وقد يكون ذلك الإدخال لاحقًا في القائمة أو غائبًا عن PATH الخاص بالمستخدم تمامًا. يتشارك البرنامجان الاسم وجزءًا كبيرًا من واجهة سطر الأوامر، لكن لا يتشاركان حالتهما: فنسخة Git تبحث عن حلقة مفاتيح في مكان آخر، وقد تكون إصدارًا مختلفًا، وقد لا تقبل الخيارات التي يمررها المثبّت. ويظهر هذا التعارض كخطأ في التوقيع أو المفتاح، وهو تقرير صادق لما رآه الملف التنفيذي الخطأ. ولا يشير أي شيء في الرسالة إلى المحمّل، لأن المحمّل فعل بالضبط ما أُمر به.

لماذا يحدد الصدفة التي تبدأ منها النتيجة

قاعدة التوريث هي الجزء الجدير بالاستيعاب. تحصل العملية الابنة على بيئة الصدفة التي أطلقتها، لذا فالترتيب المهم هو الترتيب لحظة بدء Chocolatey، لا الترتيب بعد أن تصلحه.

لهذا فإن تحرير PATH في نافذة إعدادات وإعادة تشغيل التثبيت في الطرفية نفسها لا يغيّر شيئًا غالبًا: فقد احتفظت الطرفية بالبيئة القديمة. ابدأ صدفة جديدة بعد أي تعديل، وتأكد عبر where.exe gpg في تلك الصدفة الجديدة قبل أن تحاول مجددًا. ولهذا أيضًا قد يتغلب إدخال على مستوى الجهاز على تغيير على مستوى المستخدم، لأن بعض المثبّتات تضيف إلى مقدمة PATH الخاص بالجهاز وتُقيَّم إدخالات الجهاز قبل إدخالات المستخدم. إذا كان كلا المستويين يحتوي على مسار GnuPG، فقرر أيّهما تصون فعليًا.

الإصلاح الأول: أعد ترتيب الإدخالات

الإصلاح الدقيق هو جعل دليل GnuPG المقصود هو الفائز. افتح متغيرات البيئة الخاصة بالمستخدم، وحرّر Path، وانقل دليل pub الخاص بـ GnuPG فوق إدخالات Git. ثم افتح نافذة PowerShell جديدة، لأن النافذة الجارية ما زالت تحتفظ بالقائمة القديمة.

البديل هو بيئة نظيفة مؤقتة للتثبيت: احذف إدخالات Git، وافتح صدفة جديدة، وشغّل choco install openvpn، ثم أعدها.

يعمل كلا الأسلوبين للسبب نفسه، والثاني آمن فقط إذا أعدت الإدخالات فعلًا. إن إزالة usr/bin الخاص بـ Git من PATH تكسر الالتزامات الموقّعة نهائيًا، وتفشل الأداة التالية التي تتوقع gpg عاملًا برسالة من عندها لا علاقة لها بـ OpenVPN. إذا سلكت المسار المؤقت، فاحفظ القيمة الأصلية لـ Path في التذكرة كي يكون الاستعادة لصقًا لا إعادة بناء. ترتيب الإدخالات هو الإصلاح الدائم؛ أما حذفها فهو حل مؤقت له موعد انتهاء.

تحقق، ثم أعد الوضع

تحقق قبل وبعد بالسياق نفسه للمستخدم الذي سيستخدمه Chocolatey. يسرد where.exe gpg كل تطابق بترتيب الحل، لذا فالسطر الأول هو الذي سيعمل؛ ويعطي Get-Command gpg -All الإجابة نفسها بتفصيل أكبر في PowerShell. ثم يؤكد gpg --version أي نسخة أجابت.

إذا ظل where.exe يسرد نسخة Git أولًا، فالترتيب لم يصل إلى تلك الجلسة، ولن تساعد أي إعادة تثبيت. افحص PATH على مستوى الجهاز والمستخدم عبر [Environment]::GetEnvironmentVariable('Path','Machine') والنداء نفسه مع 'User'، لأن القائمة الفعلية تُجمع من الاثنين. وبعد تثبيت ناجح، أعد الفحص عبر openvpn --version وابدأ الخدمة أو الواجهة الرسومية مرة واحدة، فقد تُثبَّت حزمة بنظافة وتترك خدمة لا تبدأ.

إذا استمر PATH المرتّب ترتيبًا صحيحًا في الفشل، فالمتغير المتبقي هو إصدار الحزمة. قد تتوقع حزمة Chocolatey مثبّتة على إصدار معين نسخة GnuPG أو مسار تثبيت محددًا لا يملكه جهازك.

اقرأ سجل الحزمة نفسه قبل تغيير أي شيء آخر. يسجّل C:\ProgramData\chocolatey\logs\chocolatey.log سطر الأوامر الذي فشل والدليل الذي جرى منه، وهذا يخبرك ما إذا كان النداء الفاشل فحص توقيع أو استخراجًا أو سكربت ما بعد التثبيت. هذا التمييز يحدد ما إذا كنت ما زلت تنقّح gpg أصلًا.

العادة التي تمنع التكرار هي التعامل مع PATH كحالة مشتركة بترتيب موثّق لا كحقيبة أدلة. حين تثبّت أداة تحمل اسمًا ثنائيًا شائعًا، افحص ما تحجبه في الصدفة التالية التي تفتحها. ثم دوّن الترتيب الذي استقررت عليه، لأن المثبّت التالي سيضيف إليه وسيتساءل الشخص التالي لماذا يفشل فحص توقيع على جهاز لم يتغير فيه شيء. إن where.exe واحدًا قبل التثبيت يوفر الحلقة كلها.

مقالات ذات صلة