Diegimas baigiasi, brew sako, kad openvpn yra, o apvalkalas atsako command not found. Dvejetainis failas egzistuoja, jis tiesiog yra kataloge, apie kurį apvalkalui niekada nebuvo pasakyta. Homebrew susieja tarnybos tipo dvejetainius failus su priešdėlio sbin katalogu, o numatytasis macOS PATH paprastai apima bin katalogą, o ne sbin. Niekas nesugadinta, ir joks pakartotinis diegimas to nepakeis.

Keturi patikrinimai patvirtina mechanizmą prieš redaguojant bet kurį apvalkalo failą.

Ką formulė iš tikrųjų įdiegia

openvpn formulė sukuria komandinės eilutės tarnybą, todėl jos vykdomasis failas atsiranda po sbin, o ne po bin. Tada Homebrew susieja tą dvejetainį failą su priešdėlio sbin katalogu, ir todėl "$(brew --prefix)/sbin/openvpn" --version veikia, o plikas iškvietimas neveikia. Versijuotas Cellar katalogas taip pat laiko kopiją, o to kelio įrašymas į paleidimo failą yra būdas, kuriuo mašina po atnaujinimo lieka pririšta prie seno kompiliavimo.

Priešdėlio simbolinė nuoroda yra stabilus kelias. Cellar kelias yra įgyvendinimo detalė su versijos numeriu viduje.

Klauskite Homebrew, o ne failų sistemos

Pradėkite nuo paketų tvarkyklės, nes ji žino, kuri diegimo kopija valdo formulę: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Jei paskutinė išspausdina kelią, formulė yra, o klausimas tik apie sprendimą. Jei ji nieko nespausdina, apvalkalas ieško netinkamoje vietoje paketo, kuris niekada nebuvo įdiegtas, ir tai kita problema su kitu sprendimu.

Dvi Homebrew diegimo kopijos vienoje mašinoje yra ta vieta, kur tai svarbiausia: atsakantis brew nebūtinai yra tas brew, kuris įdiegė.

Kodėl apvalkalas nemato sbin

Prisijungimo apvalkalas sudaro PATH iš sistemos numatytųjų verčių ir visko, ką prideda jūsų paleidimo failai. Homebrew bin paprastai pridedamas, o Homebrew sbin paprastai ne, todėl visos komandos veikia, išskyrus tarnybas. command -v openvpn nieko negrąžina, o kelias su priešdėliu grąžina versiją, tai yra visa diagnozė dviem komandomis. Patvirtinkite, kad katalogas tikrai turi nuorodą, su ls -l "$(brew --prefix)/sbin/openvpn".

Trūkstama nuoroda yra kita gedimo rūšis nei trūkstamas PATH įrašas, ir tik vieną iš jų ištaiso apvalkalo failo redagavimas.

Sutvarkykite kelią vieną kartą, vienoje vietoje

Greitam bandymui dabartiniame apvalkale eval "$(brew shellenv)" nustato diegimo kintamuosius ir abu katalogus pastato į priekį. Nuolatiniam sutvarkymui įdėkite shellenv eilutę į vienintelį paleidimo failą, kurį jūsų apvalkalas skaito jūsų naudojamam prisijungimo režimui, užuot barstę eksportus po bash ir zsh failus.

Tada atidarykite naują terminalą ir pakartokite versijos užklausą, nes podėlyje laikomas apvalkalas toliau praneša seną PATH.

Laikykite aptikimą atskirai nuo paslaugos

Rasti dvejetainį failą nėra tas pats, kas paleisti VPN paslaugą. Automatinis openvpn paleidimas prideda profilio, prisijungimo duomenų, privilegijų ir gyvavimo ciklo reikalavimus, kurių paketų aptikimas niekada nelietė. Tunnelblick taip pat turi savo variklį, todėl ką tik išspausdinta versija gali neturėti nieko bendra su versija, kurią naudoja programa.

Užrašykite, kuris vykdomasis failas sukūrė versijos išvestį. Ta viena eilutė sutaupo valandą, kai kitą kartą dvi versijos nesutars.

Susiję straipsniai