Homebrew змяшчае бінарны файл OpenVPN у sbin, а не ў ваш PATH
Формула ўсталёўвае дэман OpenVPN у sbin, а стандартны PATH macOS гэты каталог не ўключае. Пацвердзіце прэфікс і выпраўце развязанне ў адным файле.
Усталяванне завяршаецца, brew паведамляе, што openvpn на месцы, але абалонка адказвае command not found. Бінарны файл існуе, проста ён ляжыць у каталогу, пра які абалонцы ніколі не казалі. Homebrew прывязвае бінарныя файлы тыпу дэмана ў каталог sbin прэфікса, а стандартны PATH macOS звычайна ўключае каталог bin, але не sbin. Нічога не зламана, і ніякая пераўсталёўка гэтага не зменіць.
Чатыры праверкі пацвярджаюць механізм, перш чым вы зменіце любы файл абалонкі.
Што насамрэч усталёўвае формула
Формула openvpn збірае дэман каманднага радка, таму яе выканальны файл трапляе ў sbin, а не ў bin. Затым Homebrew прывязвае гэты бінарны файл у каталог sbin прэфікса, і менавіта таму "$(brew --prefix)/sbin/openvpn" --version працуе, а голы выклік не. Каталог Cellar з нумарам версіі таксама захоўвае копію, і калі запісаць гэты шлях у файл запуску, машына застанецца на старой зборцы пасля абнаўлення.
Сімвалічная спасылка прэфікса — гэта стабільны шлях. Шлях Cellar — дэталь рэалізацыі з нумарам версіі ўнутры.
Спытайце Homebrew, а не файлавую сістэму
Пачніце з менеджара пакетаў, бо ён ведае, якая ўсталёўка валодае формулай: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Калі апошняя друкуе шлях, формула прысутнічае, і пытанне цалкам пра развязанне. Калі яна не друкуе нічога, абалонка шукае не ў тым месцы пакет, які ніколі не ўсталёўваўся, а гэта іншая праблема з іншым рашэннем.
Дзве ўсталёўкі Homebrew на адной машыне — гэта месца, дзе гэта важна найбольш: brew, які адказвае, не абавязкова той brew, які ўсталёўваў.
Чаму абалонка не бачыць sbin
Абалонка ўваходу будуе PATH з сістэмных значэнняў па змаўчанні плюс усё, што дадаюць вашыя файлы запуску. Homebrew bin звычайна дадаюць, а Homebrew sbin звычайна не, таму ўсе каманды працуюць, акрамя дэманаў. command -v openvpn не вяртае нічога, а шлях з прэфіксам вяртае версію — гэта ўвесь дыягназ у дзвюх камандах. Пацвердзіце, што каталог сапраўды ўтрымлівае спасылку, з дапамогай ls -l "$(brew --prefix)/sbin/openvpn".
Адсутная спасылка — гэта іншая няспраўнасць, чым адсутны запіс PATH, і толькі адна з іх выпраўляецца рэдагаваннем файла абалонкі.
Выпраўце шлях адзін раз, у адным месцы
Для хуткай праверкі ў бягучай абалонцы eval "$(brew shellenv)" усталёўвае зменныя ўсталёўкі і дадае абодва каталогі ў пачатак. Для пастаяннай налады змясціце радок shellenv у адзіны файл запуску, які ваша абалонка чытае для рэжыму ўваходу, які вы выкарыстоўваеце, замест таго каб раскідваць экспарты па файлах bash і zsh.
Затым адкрыйце новы тэрмінал і паўтарыце запыт версіі, бо кэшаваная абалонка працягвае паведамляць стары PATH.
Трымайце выяўленне асобна ад службы
Знайсці бінарны файл — не тое ж самае, што запускаць службу VPN. Аўтаматычны запуск openvpn дадае патрабаванні да профілю, уліковых даных, правоў і жыццёвага цыклу, якіх выяўленне пакетаў ніколі не кранала. Tunnelblick таксама пастаўляе ўласны рухавік, таму версія, якую вы толькі што надрукавалі, можа не мець нічога агульнага з версіяй, якую выкарыстоўвае праграма.
Запішыце, які выканальны файл выдаў вывад версіі. Гэты адзін радок зэканоміць гадзіну наступным разам, калі дзве версіі разыдуцца.