Installationen slutter, brew siger at openvpn er der, og skallen svarer command not found. Binæren findes, den ligger i en mappe, som skallen aldrig har fået at vide om. Homebrew linker daemon-lignende binærer ind i præfiksets sbin-mappe, og en standard macOS-PATH indeholder normalt bin-mappen og ikke sbin-mappen. Intet er i stykker, og ingen geninstallation vil ændre det.

Fire kontroller bekræfter mekanismen, før du redigerer nogen skal-fil.

Hvad formlen faktisk installerer

Openvpn-formlen bygger en kommandolinje-daemon, så dens kørebare fil lander under sbin i stedet for bin. Homebrew linker derefter den binære fil ind i præfiksets sbin-mappe, og derfor virker "$(brew --prefix)/sbin/openvpn" --version, mens et bart kald ikke gør. Den versionsnummererede Cellar-mappe rummer også en kopi, og at sætte den sti i en opstartsfil er måden, en maskine forbliver fastlåst til et gammelt build efter en opgradering.

Præfiksets symboliske link er den stabile sti. Cellar-stien er en implementeringsdetalje med et versionsnummer i sig.

Spørg Homebrew, ikke filsystemet

Begynd med pakkehåndteringen, fordi den ved, hvilken installation der ejer formlen: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Hvis den sidste udskriver en sti, er formlen til stede, og spørgsmålet handler udelukkende om opløsning. Hvis den ikke udskriver noget, leder skallen det forkerte sted efter en pakke, der aldrig blev installeret, og det er et andet problem med en anden løsning.

To Homebrew-installationer på én maskine er der, hvor det betyder mest: den brew, der svarer, er ikke nødvendigvis den brew, der installerede.

Hvorfor skallen ikke kan se sbin

En login-skal bygger PATH fra systemstandarder plus alt, hvad dine opstartsfiler tilføjer. Homebrew bin bliver almindeligvis tilføjet, og Homebrew sbin bliver almindeligvis ikke, så hver kommando virker undtagen daemonerne. command -v openvpn der intet returnerer, mens den præfikserede sti returnerer en version, er hele diagnosen i to kommandoer. Bekræft, at mappen faktisk indeholder linket med ls -l "$(brew --prefix)/sbin/openvpn".

Et manglende link er en anden fejl end en manglende PATH-post, og kun én af dem rettes ved at redigere en skal-fil.

Ret stien én gang på ét sted

Til en hurtig test i den aktuelle skal sætter eval "$(brew shellenv)" installationsvariablerne og sætter begge mapper forrest. Til en permanent ordning skal du lægge shellenv-linjen i den ene opstartsfil, din skal læser til den login-tilstand, du bruger, i stedet for at sprede eksporter ud over bash- og zsh-filer.

Åbn derefter en ny terminal og gentag versionsforespørgslen, fordi en cachet skal bliver ved med at rapportere den gamle PATH.

Hold opdagelse adskilt fra tjenesten

At finde en binær er ikke det samme som at køre en VPN-tjeneste. At starte openvpn automatisk tilføjer krav til profil, legitimation, rettigheder og livscyklus, som pakkeopdagelse aldrig har rørt ved. Tunnelblick medbringer også sin egen motor, så den version, du netop udskrev, har måske intet at gøre med den version, programmet bruger.

Noter, hvilken kørbar fil der producerede versionsoutputtet. Den ene linje sparer en time næste gang, to versioner er uenige.

Relaterede artikler