انسٹال مکمل ہوتا ہے، brew کہتا ہے کہ openvpn وہاں موجود ہے، مگر شیل command not found کا جواب دیتا ہے۔ بائنری موجود ہے، وہ صرف ایسی ڈائریکٹری میں بیٹھی ہے جس کے بارے میں شیل کو کبھی نہیں بتایا گیا۔ Homebrew ڈیمن طرز کی بائنریوں کو سابقے کی sbin ڈائریکٹری میں لنک کرتا ہے، اور طے شدہ macOS PATH عام طور پر bin ڈائریکٹری شامل کرتا ہے، sbin نہیں۔ کچھ بھی خراب نہیں، اور کوئی دوبارہ انسٹال اسے نہیں بدلے گا۔

کوئی بھی شیل فائل ترمیم کرنے سے پہلے چار جانچیں اس طریقہ کار کی تصدیق کرتی ہیں۔

فارمولا دراصل کیا انسٹال کرتا ہے

openvpn فارمولا کمانڈ لائن ڈیمن بناتا ہے، اس لیے اس کی ایگزیکیوٹیبل bin کے بجائے sbin کے نیچے آتی ہے۔ پھر 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 اپنا انجن بھی ساتھ لاتا ہے، اس لیے ابھی پرنٹ کیا گیا نسخہ ایپلیکیشن کے استعمال کردہ نسخے سے کوئی تعلق نہ رکھے۔

ریکارڈ کریں کہ کون سی ایگزیکیوٹیبل نے نسخے کی آؤٹ پٹ بنائی۔ وہ ایک سطر اگلی بار دو نسخوں کے اختلاف پر ایک گھنٹہ بچاتی ہے۔

متعلقہ مضامین