Homebrew legger OpenVPN-binæren i sbin, ikke i PATH-en din
Formelen installerer OpenVPN-daemonen under sbin, som en standard macOS-PATH ikke inneholder. Bekreft prefikset, og rett deretter oppslaget i én fil.
Installasjonen fullføres, brew sier at openvpn er der, og skallet svarer command not found. Binæren finnes, den ligger bare i en katalog som skallet aldri fikk vite om. Homebrew lenker daemon-lignende binærer inn i sbin-katalogen til prefikset, og en standard macOS-PATH inneholder vanligvis bin-katalogen og ikke sbin-katalogen. Ingenting er ødelagt, og ingen reinstallasjon vil endre det.
Fire kontroller bekrefter mekanismen før du redigerer noen skallfil.
Hva formelen faktisk installerer
Openvpn-formelen bygger en kommandolinje-daemon, så den kjørbare filen havner under sbin i stedet for bin. Homebrew lenker deretter binæren inn i sbin-katalogen til prefikset, og derfor virker "$(brew --prefix)/sbin/openvpn" --version mens et bart kall ikke gjør det. Den versjonerte Cellar-katalogen holder også en kopi, og å sette den stien i en oppstartsfil er måten en maskin blir stående låst til et gammelt bygg etter en oppgradering.
Symlenken til prefikset er den stabile stien. Cellar-stien er en implementasjonsdetalj med et versjonsnummer i seg.
Spør Homebrew, ikke filsystemet
Start med pakkebehandleren, fordi den vet hvilken installasjon som eier formelen: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Hvis den siste skriver ut en sti, er formelen til stede, og spørsmålet handler bare om oppslag. Hvis den ikke skriver ut noe, leter skallet på feil sted etter en pakke som aldri ble installert, og det er et annet problem med en annen løsning.
To Homebrew-installasjoner på én maskin er der dette betyr mest: brew-en som svarer er ikke nødvendigvis brew-en som installerte.
Hvorfor skallet ikke ser sbin
Et innloggingsskall bygger PATH fra systemstandardene pluss alt oppstartsfilene dine legger til. Homebrew bin blir vanligvis lagt til og Homebrew sbin vanligvis ikke, så hver kommando virker bortsett fra daemonene. command -v openvpn som ikke returnerer noe, mens stien med prefiks returnerer en versjon, er hele diagnosen i to kommandoer. Bekreft at katalogen virkelig holder lenken med ls -l "$(brew --prefix)/sbin/openvpn".
En manglende lenke er en annen feil enn en manglende PATH-oppføring, og bare én av dem rettes ved å redigere en skallfil.
Rett stien én gang, på ett sted
For en rask test i gjeldende skall setter eval "$(brew shellenv)" installasjonsvariablene og setter begge katalogene først. For en varig ordning legger du shellenv-linjen i den ene oppstartsfilen skallet ditt leser for innloggingsmodusen du bruker, i stedet for å spre eksporter utover bash- og zsh-filer.
Åpne så et nytt terminalvindu og gjenta versjonsspørringen, fordi et bufret skall fortsetter å rapportere den gamle PATH-en.
Hold oppdagelsen atskilt fra tjenesten
Å finne en binær er ikke det samme som å kjøre en VPN-tjeneste. Å starte openvpn automatisk legger til krav til profil, legitimasjon, rettigheter og livssyklus som pakkeoppdagelsen aldri har rørt. Tunnelblick har også sin egen motor, så versjonen du nettopp skrev ut har kanskje ingenting å gjøre med versjonen programmet bruker.
Noter hvilken kjørbar fil som produserte versjonsutskriften. Den ene linjen sparer en time neste gang to versjoner er uenige.