Inilalagay ng Homebrew ang binary ng OpenVPN sa sbin, hindi sa iyong PATH
Ini-install ng formula ang daemon ng OpenVPN sa ilalim ng sbin, na hindi kasama sa default na PATH ng macOS. Kumpirmahin ang prefix, pagkatapos ay ayusin ang resolusyon sa isang file.
Natapos ang pag-install, sinasabi ng brew na naroon ang openvpn, at sumasagot ang shell ng command not found. Umiiral ang binary, nasa isang direktoryo lamang ito na hindi kailanman sinabi sa shell. Inililink ng Homebrew ang mga binary na parang daemon sa direktoryo ng sbin ng prefix, at ang default na PATH ng macOS ay karaniwang may direktoryo ng bin at wala ang sbin. Walang sira, at walang muling pag-install ang makakapagbago nito.
Apat na pagsusuri ang nagpapatunay sa mekanismong ito bago mo i-edit ang anumang file ng shell.
Ano ba talaga ang ini-install ng formula
Ang formula ng openvpn ay nagtatayo ng daemon sa command line, kaya napupunta ang executable nito sa ilalim ng sbin at hindi sa bin. Pagkatapos ay inililink ng Homebrew ang binary na iyon sa direktoryo ng sbin ng prefix, at iyon ang dahilan kung bakit gumagana ang "$(brew --prefix)/sbin/openvpn" --version samantalang hindi gumagana ang hubad na tawag. Ang direktoryo ng Cellar na may bersyon ay mayroon ding kopya, at ang paglalagay ng path na iyon sa isang startup file ang paraan upang manatiling nakatali ang makina sa lumang build pagkatapos ng upgrade.
Ang symbolic link ng prefix ang matatag na path. Ang path ng Cellar ay detalye ng implementasyon na may numero ng bersyon sa loob.
Tanungin ang Homebrew, hindi ang filesystem
Magsimula sa package manager, dahil alam nito kung aling pag-install ang may-ari ng formula: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Kung ang huli ay nag-print ng path, naroon ang formula at tungkol lamang sa resolusyon ang tanong. Kung wala itong naiprint, naghahanap ang shell sa maling lugar ng package na hindi kailanman na-install, at ibang problema iyon na may ibang lunas.
Dalawang pag-install ng Homebrew sa isang makina ang pinakamahalagang kaso: ang brew na sumasagot ay hindi laging ang brew na nag-install.
Bakit hindi nakikita ng shell ang sbin
Ang login shell ay nagtatayo ng PATH mula sa mga default ng system at sa lahat ng idinadagdag ng iyong mga startup file. Ang Homebrew bin ay karaniwang idinadagdag at ang Homebrew sbin ay karaniwang hindi, kaya gumagana ang bawat utos maliban sa mga daemon. Ang command -v openvpn na walang ibinabalik habang ang path na may prefix ay nagbabalik ng bersyon ang buong diagnosis sa dalawang utos. Kumpirmahin na talagang may link ang direktoryo gamit ang ls -l "$(brew --prefix)/sbin/openvpn".
Ang nawawalang link ay ibang depekto kaysa sa nawawalang entry ng PATH, at isa lamang sa kanila ang naaayos sa pag-edit ng file ng shell.
Ayusin ang path nang isang beses, sa isang lugar
Para sa mabilis na pagsubok sa kasalukuyang shell, itinatakda ng eval "$(brew shellenv)" ang mga variable ng pag-install at inilalagay ang dalawang direktoryo sa unahan. Para sa permanenteng kaayusan, ilagay ang linyang shellenv sa nag-iisang startup file na binabasa ng iyong shell para sa login mode na ginagamit mo, sa halip na ikalat ang mga export sa mga file ng bash at zsh.
Pagkatapos ay magbukas ng bagong terminal at ulitin ang tanong sa bersyon, dahil patuloy na iniuulat ng naka-cache na shell ang lumang PATH.
Panatilihing hiwalay ang pagtuklas sa serbisyo
Ang paghahanap ng binary ay hindi katulad ng pagpapatakbo ng serbisyo ng VPN. Ang awtomatikong pagsisimula ng openvpn ay nagdaragdag ng mga pangangailangan sa profile, kredensyal, pribilehiyo at lifecycle na hindi kailanman ginalaw ng pagtuklas ng package. May sariling engine din ang Tunnelblick, kaya ang bersyon na kakaprint mo lang ay maaaring walang kaugnayan sa bersyon na ginagamit ng aplikasyon.
Itala kung aling executable ang gumawa ng output ng bersyon. Ang isang linyang iyon ay nakakatipid ng isang oras sa susunod na hindi magkasundo ang dalawang bersyon.