Homebrew umiestňuje binárku OpenVPN do sbin, nie do vášho PATH
Formula nainštaluje démona OpenVPN pod sbin, ktorý predvolený PATH v macOS neobsahuje. Overte prefix a potom opravte rozlíšenie v jedinom súbore.
Inštalácia sa skončí, brew tvrdí, že openvpn je tam, a shell odpovie command not found. Binárka existuje, len leží v adresári, o ktorom shell nikdy nevedel. Homebrew prepája binárky v štýle démonov do adresára sbin prefixu a predvolený PATH v macOS zvyčajne obsahuje adresár bin a nie sbin. Nič nie je pokazené a žiadna preinštalácia to nezmení.
Štyri kontroly potvrdia mechanizmus, než upravíte akýkoľvek súbor shellu.
Čo formula skutočne inštaluje
Formula openvpn zostavuje démona príkazového riadka, takže jej spustiteľný súbor pristane pod sbin, nie pod bin. Homebrew potom túto binárku prepája do adresára sbin prefixu, a preto "$(brew --prefix)/sbin/openvpn" --version funguje, zatiaľ čo holé volanie nie. Verzionovaný adresár Cellar tiež drží kópiu a zapísanie tejto cesty do spúšťacieho súboru je spôsob, akým stroj po aktualizácii zostane pripnutý k starému zostaveniu.
Symbolický odkaz prefixu je stabilná cesta. Cesta v Cellari je implementačný detail s číslom verzie vnútri.
Pýtajte sa Homebrew, nie súborového systému
Začnite správcom balíčkov, pretože ten vie, ktorá inštalácia vlastní formulu: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Ak posledný vypíše cestu, formula je prítomná a otázka je čisto o rozlíšení. Ak nevypíše nič, shell hľadá na nesprávnom mieste balíček, ktorý nikdy nebol nainštalovaný, a to je iný problém s iným riešením.
Dve inštalácie Homebrew na jednom stroji je miesto, kde na tom záleží najviac: brew, ktorý odpovedá, nemusí byť brew, ktorý inštaloval.
Prečo shell nevidí sbin
Prihlasovací shell zostavuje PATH zo systémových predvolieb plus všetkého, čo pridajú vaše spúšťacie súbory. Homebrew bin sa zvyčajne pridáva a Homebrew sbin zvyčajne nie, takže každý príkaz funguje okrem démonov. command -v openvpn, ktorý nič nevracia, zatiaľ čo cesta s prefixom vracia verziu, je celá diagnóza v dvoch príkazoch. Overte, že adresár skutočne obsahuje odkaz, pomocou ls -l "$(brew --prefix)/sbin/openvpn".
Chýbajúci odkaz je iná porucha ako chýbajúca položka PATH a iba jedna z nich sa opraví úpravou súboru shellu.
Opravte cestu raz, na jednom mieste
Na rýchly test v aktuálnom shelli eval "$(brew shellenv)" nastaví inštalačné premenné a oba adresáre postaví dopredu. Na trvalé usporiadanie vložte riadok shellenv do jediného spúšťacieho súboru, ktorý váš shell číta pre režim prihlásenia, ktorý používate, namiesto rozsievania exportov po súboroch bash a zsh.
Potom otvorte nový terminál a zopakujte otázku na verziu, pretože kešovaný shell naďalej hlási starý PATH.
Držte objavovanie oddelene od služby
Nájsť binárku nie je to isté ako prevádzkovať službu VPN. Automatické spustenie openvpn pridáva požiadavky na profil, prihlasovacie údaje, oprávnenia a životný cyklus, ktorých sa objavovanie balíčkov nikdy nedotklo. Tunnelblick prináša aj vlastný engine, takže verzia, ktorú ste práve vypísali, nemusí mať nič spoločné s verziou, ktorú aplikácia používa.
Zaznamenajte, ktorý spustiteľný súbor vytvoril výstup verzie. Ten jediný riadok ušetrí hodinu, keď sa nabudúce dve verzie rozídu.