ينتهي التثبيت، ويقول brew إن openvpn موجود، لكن الصدفة تردّ بـ command not found. الملف الثنائي موجود فعلاً، لكنه يقيم في دليل لم تُخبر الصدفة عنه قط. يربط Homebrew الملفات الثنائية ذات النمط الخادم داخل دليل sbin الخاص بالبادئة، وPATH الافتراضي في macOS يتضمن عادة دليل bin وليس دليل sbin. لا شيء معطوب، ولن يغيّر أي إعادة تثبيت ذلك.

أربعة فحوص تؤكد الآلية قبل أن تعدّل أي ملف من ملفات الصدفة.

ما الذي تثبّته الصيغة فعلاً

تبني صيغة openvpn خادماً يعمل من سطر الأوامر، لذلك يهبط ملفه التنفيذي تحت sbin بدلاً من bin. ثم يربط Homebrew ذلك الملف الثنائي داخل دليل sbin الخاص بالبادئة، ولهذا يعمل "$(brew --prefix)/sbin/openvpn" --version بينما لا يعمل الاستدعاء المجرّد. ويحتفظ دليل Cellar المرقّم بنسخة أيضاً، ووضع ذلك المسار في ملف بدء التشغيل هو ما يبقي الجهاز مثبتاً على بناء قديم بعد الترقية.

رابط البادئة هو المسار المستقر. أما مسار Cellar فتفصيل تنفيذي يحمل رقم إصدار.

اسأل Homebrew لا نظام الملفات

ابدأ بمدير الحزم، لأنه يعرف أي تثبيت يملك الصيغة: command -v brew، brew --prefix، brew list --versions openvpn، brew --prefix openvpn. إذا طبع الأخير مساراً، فالصيغة موجودة والسؤال يتعلق بالتحليل فقط. وإذا لم يطبع شيئاً، فالصدفة تبحث في المكان الخطأ عن حزمة لم تُثبّت قط، وهذه مشكلة مختلفة بحل مختلف.

تثبيتان لـ Homebrew على جهاز واحد هو الموضع الذي يهم فيه هذا أكثر من غيره: فـ brew الذي يجيب ليس بالضرورة brew الذي ثبّت.

لماذا لا ترى الصدفة sbin

تبني صدفة الدخول PATH من إعدادات النظام مضافاً إليها كل ما تلحقه ملفات بدء التشغيل. يُضاف Homebrew bin عادةً ولا يُضاف Homebrew sbin عادةً، لذلك يعمل كل أمر إلا الخوادم. عودة command -v openvpn بلا شيء بينما يعيد المسار ذو البادئة إصداراً هي التشخيص كله في أمرين. تأكّد من أن الدليل يحمل الرابط فعلاً باستخدام ls -l "$(brew --prefix)/sbin/openvpn".

الرابط المفقود عطل مختلف عن مدخل PATH المفقود، وواحد منهما فقط يُصلح بتعديل ملف الصدفة.

أصلح المسار مرة واحدة في مكان واحد

لاختبار سريع في الصدفة الحالية، يضبط eval "$(brew shellenv)" متغيرات التثبيت ويضع الدليلين في المقدمة. ولترتيب دائم، ضع سطر shellenv في ملف بدء التشغيل الوحيد الذي تقرأه صدفتك لوضع الدخول الذي تستخدمه، بدلاً من نثر التصديرات عبر ملفات bash وzsh.

ثم افتح طرفية جديدة وأعد استعلام الإصدار، لأن الصدفة المخزّنة مؤقتاً تظل تبلّغ عن PATH القديم.

افصل الاكتشاف عن الخدمة

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

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

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