Homebrew pune binarul OpenVPN în sbin, nu în PATH-ul tău
Formula instalează demonul OpenVPN sub sbin, pe care un PATH implicit macOS nu îl include. Confirmă prefixul, apoi repară rezolvarea într-un singur fișier.
Instalarea se termină, brew spune că openvpn este acolo, iar shell-ul răspunde command not found. Binarul există, doar că se află într-un director despre care shell-ului nu i s-a spus niciodată. Homebrew leagă binaruri de tip demon în directorul sbin al prefixului, iar un PATH implicit macOS include de obicei directorul bin și nu pe cel sbin. Nimic nu este stricat, iar nicio reinstalare nu va schimba asta.
Patru verificări confirmă mecanismul înainte să editezi orice fișier de shell.
Ce instalează de fapt formula
Formula openvpn construiește un demon de linie de comandă, așa că executabilul ei ajunge sub sbin și nu sub bin. Homebrew leagă apoi acel binar în directorul sbin al prefixului, și de aceea "$(brew --prefix)/sbin/openvpn" --version funcționează în timp ce o invocare simplă nu. Directorul Cellar cu versiune păstrează și el o copie, iar punerea acelei căi într-un fișier de pornire este modul în care o mașină rămâne fixată pe o compilare veche după o actualizare.
Legătura simbolică a prefixului este calea stabilă. Calea Cellar este un detaliu de implementare cu un număr de versiune în ea.
Întreabă Homebrew, nu sistemul de fișiere
Începe cu managerul de pachete, pentru că el știe ce instalare deține formula: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Dacă ultimul afișează o cale, formula este prezentă și întrebarea ține doar de rezolvare. Dacă nu afișează nimic, shell-ul caută în locul greșit un pachet care nu a fost niciodată instalat, iar aceasta este altă problemă cu altă soluție.
Două instalări Homebrew pe o singură mașină este locul unde asta contează cel mai mult: brew-ul care răspunde nu este neapărat brew-ul care a instalat.
De ce shell-ul nu vede sbin
Un shell de autentificare construiește PATH din valorile implicite ale sistemului plus tot ce adaugă fișierele tale de pornire. Homebrew bin este adăugat de obicei, iar Homebrew sbin de obicei nu, așa că fiecare comandă funcționează cu excepția demonilor. command -v openvpn care nu returnează nimic, în timp ce calea cu prefix returnează o versiune, este întregul diagnostic în două comenzi. Confirmă că directorul conține într-adevăr legătura cu ls -l "$(brew --prefix)/sbin/openvpn".
O legătură lipsă este o defecțiune diferită de o intrare PATH lipsă, iar doar una dintre ele se repară editând un fișier de shell.
Repară calea o dată, într-un singur loc
Pentru un test rapid în shell-ul curent, eval "$(brew shellenv)" setează variabilele de instalare și pune ambele directoare în față. Pentru o aranjare permanentă, pune linia shellenv în singurul fișier de pornire pe care shell-ul tău îl citește pentru modul de autentificare pe care îl folosești, în loc să împrăștii exporturi prin fișierele bash și zsh.
Apoi deschide un terminal nou și repetă interogarea versiunii, pentru că un shell cu cache continuă să raporteze vechiul PATH.
Ține descoperirea separată de serviciu
A găsi un binar nu este același lucru cu a rula un serviciu VPN. Pornirea automată a openvpn adaugă cerințe de profil, acreditări, privilegii și ciclu de viață pe care descoperirea pachetelor nu le-a atins niciodată. Tunnelblick aduce și propriul motor, așa că versiunea tocmai afișată poate să nu aibă nimic de-a face cu versiunea pe care o folosește aplicația.
Notează ce executabil a produs ieșirea versiunii. Acea singură linie economisește o oră data viitoare când două versiuni nu sunt de acord.