Homebrew dává binárku OpenVPN do sbin, ne do vašeho PATH
Formule instaluje daemon OpenVPN pod sbin, který výchozí PATH na macOS neobsahuje. Ověřte prefix a pak opravte vyhledávání v jediném souboru.
Instalace skončí, brew tvrdí, že openvpn je na místě, a shell odpoví command not found. Binárka existuje, jen leží v adresáři, o kterém shell nikdy nevěděl. Homebrew propojuje binárky ve stylu daemonů do adresáře sbin v prefixu a výchozí PATH na macOS obvykle obsahuje adresář bin, ale ne sbin. Nic není rozbité a žádná přeinstalace to nezmění.
Čtyři kontroly potvrdí mechanismus, než upravíte jakýkoli soubor shellu.
Co formule skutečně instaluje
Formule openvpn sestavuje daemon příkazového řádku, takže její spustitelný soubor přistane pod sbin, nikoli pod bin. Homebrew pak tuto binárku propojí do adresáře sbin v prefixu, a proto "$(brew --prefix)/sbin/openvpn" --version funguje, zatímco holé volání ne. Verzovaný adresář Cellar také drží kopii a zapsání této cesty do spouštěcího souboru je způsob, jak stroj po aktualizaci zůstane připnutý ke starému sestavení.
Symbolický odkaz prefixu je stabilní cesta. Cesta v Cellaru je implementační detail s číslem verze uvnitř.
Ptejte se Homebrew, ne souborového systému
Začněte správcem balíčků, protože ten ví, která instalace formuli vlastní: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Pokud poslední vypíše cestu, formule je přítomná a otázka je čistě o vyhledávání. Pokud nevypíše nic, shell hledá na špatném místě balíček, který nebyl nikdy nainstalován, a to je jiný problém s jiným řešením.
Dvě instalace Homebrew na jednom stroji je místo, kde na tom záleží nejvíc: brew, který odpovídá, nemusí být brew, který instaloval.
Proč shell nevidí sbin
Přihlašovací shell sestavuje PATH ze systémových výchozích hodnot plus všeho, co přidají vaše spouštěcí soubory. Homebrew bin se obvykle přidává a Homebrew sbin obvykle ne, takže každý příkaz funguje kromě daemonů. command -v openvpn nevrací nic, zatímco cesta s prefixem vrací verzi, a to je celá diagnóza ve dvou příkazech. Ověřte, že adresář skutečně obsahuje odkaz, pomocí ls -l "$(brew --prefix)/sbin/openvpn".
Chybějící odkaz je jiná závada než chybějící položka PATH a jen jedna z nich se opravuje úpravou souboru shellu.
Opravte cestu jednou, na jednom místě
Pro rychlý test v aktuálním shellu eval "$(brew shellenv)" nastaví instalační proměnné a oba adresáře dá na začátek. Pro trvalé uspořádání vložte řádek shellenv do jediného spouštěcího souboru, který váš shell čte pro režim přihlášení, který používáte, místo abyste rozsévali exporty po souborech bash a zsh.
Potom otevřete nový terminál a zopakujte dotaz na verzi, protože kešovaný shell dál hlásí starý PATH.
Držte objevování oddělené od služby
Najít binárku není totéž jako provozovat službu VPN. Automatické spuštění openvpn přidává požadavky na profil, přihlašovací údaje, oprávnění a životní cyklus, kterých se objevování balíčků nikdy nedotklo. Tunnelblick navíc přináší vlastní engine, takže verze, kterou jste právě vypsali, nemusí mít s verzí, kterou aplikace používá, nic společného.
Zaznamenejte, který spustitelný soubor vytvořil výstup verze. Ten jediný řádek ušetří hodinu, až se příště dvě verze rozejdou.