Տեղադրումն ավարտվում է, brew-ն ասում է, որ openvpn-ը այնտեղ է, իսկ shell-ը պատասխանում է command not found։ Բինար ֆայլը գոյություն ունի, պարզապես այն գտնվում է մի պանակում, որի մասին shell-ին երբեք չեն ասել։ Homebrew-ը դեմոն-տիպի բինարները կապում է նախածանցի sbin պանակի մեջ, իսկ macOS-ի լռելյայն PATH-ը սովորաբար ներառում է bin պանակը և ոչ sbin-ը։ Ոչինչ կոտրված չէ, և ոչ մի վերատեղադրում դա չի փոխի։

Չորս ստուգում հաստատում են մեխանիզմը նախքան shell-ի որևէ ֆայլ խմբագրելը։

Ինչ է իրականում տեղադրում բանաձևը

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։ Եթե վերջինը տպում է ուղի, բանաձևը առկա է, և հարցը զուտ լուծման մասին է։ Եթե այն ոչինչ չի տպում, shell-ը սխալ տեղում է փնտրում երբեք չտեղադրված փաթեթ, և դա այլ խնդիր է՝ այլ լուծումով։

Մեկ մեքենայի վրա երկու Homebrew տեղադրում այն տեղն է, որտեղ սա ամենաշատն է կարևոր՝ պատասխանող brew-ն անպայման չէ, որ տեղադրող brew-ն է։

Ինչու shell-ը չի տեսնում sbin-ը

Մուտքի shell-ը PATH-ը կառուցում է համակարգի լռելյայններից և ձեր գործարկման ֆայլերի ավելացրածից։ Homebrew bin-ը սովորաբար ավելացվում է, իսկ Homebrew sbin-ը սովորաբար ոչ, ուստի բոլոր հրամանները աշխատում են բացի դեմոններից։ command -v openvpn-ը, որը ոչինչ չի վերադարձնում, մինչ նախածանցով ուղին տարբերակ է վերադարձնում, ամբողջ ախտորոշումն է երկու հրամանում։ Հաստատեք, որ պանակն իսկապես պարունակում է հղումը ls -l "$(brew --prefix)/sbin/openvpn"-ով։

Բացակայող հղումը տարբեր խափանում է, քան բացակայող PATH գրառումը, և դրանցից միայն մեկն է ուղղվում shell-ի ֆայլ խմբագրելով։

Ուղղեք ուղին մեկ անգամ, մեկ տեղում

Ընթացիկ shell-ում արագ փորձարկման համար eval "$(brew shellenv)"-ը սահմանում է տեղադրման փոփոխականները և երկու պանակներն էլ դնում է առջևում։ Մշտական կարգավորման համար shellenv տողը դրեք այն միակ գործարկման ֆայլում, որը ձեր shell-ը կարդում է ձեր օգտագործած մուտքի ռեժիմի համար՝ արտահանումները bash և zsh ֆայլերի վրա ցրելու փոխարեն։

Այնուհետև բացեք նոր տերմինալ և կրկնեք տարբերակի հարցումը, քանի որ քեշավորված shell-ը շարունակում է հաղորդել հին PATH-ը։

Բացահայտումը առանձին պահեք ծառայությունից

Բինար գտնելը նույնը չէ, ինչ VPN ծառայություն վարելը։ openvpn-ի ավտոմատ գործարկումը ավելացնում է պրոֆիլի, հավատարմագրերի, արտոնությունների և կյանքի ցիկլի պահանջներ, որոնց փաթեթների բացահայտումը երբեք չի դիպել։ Tunnelblick-ը նաև իր շարժիչն է բերում, ուստի հենց նոր տպած տարբերակը կարող է ոչ մի կապ չունենալ այն տարբերակի հետ, որն օգտագործում է հավելվածը։

Գրանցեք, թե որ կատարվող ֆայլն է արտադրել տարբերակի ելքը։ Այդ մեկ տողը խնայում է մեկ ժամ հաջորդ անգամ, երբ երկու տարբերակ անհամաձայնեն։

Առնչվող հոդվածներ