OpenVPN-ի տեղադրումը, որը Chocolatey-ի տակ մահանում է ստորագրության կամ բանալու սխալով, սովորաբար ներբեռնման խնդիր չէ։ Փաթեթը կատարում է ստուգման քայլ, որը կանչում է gpg-ը, և Windows-ը լուծում է այդ մերկ անունը PATH-ի միջոցով։ Եթե Git for Windows-ը տեղադրվել է առաջինը, նրա հետ եկած gpg.exe-ը կանգնում է OpenVPN-ի սպասած GnuPG-ի կառուցումից առաջ, և կանչին պատասխանում է սխալ ծրագիրը։ Ձեր տեսած սխալն այն է, ինչի մասին որոշել է բողոքել այդ մյուս ծրագիրը, դրա համար էլ այն երբեք չի նշում իրական պատճառը։

PATH-ի կարգը որոշում է, թե որ gpg-ն է աշխատելու

Windows-ը չունի կատարվող անունների կենտրոնական գրանցամատյան։ Երբ պրոցեսը gpg-ը խնդրում է առանց լրիվ ուղու, բեռնիչը հերթով անցնում է PATH-ի գրառումները և գործարկում առաջին համընկնումը։ Git for Windows-ը տրամադրում է նվազագույն GnuPG կառուցում իր usr/bin պանակում, որպեսզի ստորագրված կոմիտները աշխատեն, և նրա տեղադրիչը սովորաբար այդ պանակը տեղադրում է օգտատիրոջ PATH-ի սկզբի մոտ։

GnuPG-ն տեղադրվում է իր սեփական պանակում, սովորաբար C:\Program Files (x86)\GNU\GnuPG\pub, և այդ գրառումը կարող է ցանկում ավելի ուշ լինել կամ ընդհանրապես բացակայել օգտատիրոջ PATH-ից։ Երկու ծրագրերը կիսում են անունը և հրամայական տողի մակերեսի մեծ մասը, բայց ոչ իրենց վիճակը՝ Git-ի կառուցումը բանալիների օղակը փնտրում է այլ տեղ, կարող է լինել այլ տարբերակ, և կարող է չընդունել տեղադրիչի փոխանցած ընտրանքները։ Այդ անհամապատասխանությունը ի հայտ է գալիս որպես ստորագրության կամ բանալու սխալ, ինչը ճշմարտացի հաշվետվություն է այն մասին, ինչ տեսել է սխալ բինար ֆայլը։ Հաղորդագրության մեջ ոչինչ չի մատնանշում բեռնիչին, որովհետև բեռնիչը արեց հենց այն, ինչ ասվել էր իրեն։

Ինչու է արդյունքը որոշում այն պատյանը, որից սկսում եք

Ժառանգության կանոնը այն մասն է, որ արժե ներքինացնել։ Երեխա պրոցեսը ստանում է այն պատյանի միջավայրը, որը գործարկել է իրեն, ուստի կարևոր կարգը Chocolatey-ի մեկնարկի պահի կարգն է, ոչ թե ձեր ուղղումից հետո եղած կարգը։

Այդ պատճառով կարգավորումների պատուհանում PATH-ը խմբագրելը և նույն տերմինալում տեղադրումը նորից գործարկելը հաճախ ոչինչ չի փոխում՝ տերմինալը պահել էր հին միջավայրը։ Ցանկացած փոփոխությունից հետո սկսեք նոր պատյան և նորից փորձելուց առաջ հաստատեք where.exe gpg-ով հենց այդ նոր պատյանում։ Սա է նաև պատճառը, որ մեքենայի մակարդակի գրառումը կարող է հաղթել օգտատիրոջ մակարդակի փոփոխությանը, քանի որ որոշ տեղադրիչներ ավելացնում են մեքենայի PATH-ի սկզբում, և մեքենայի գրառումները գնահատվում են օգտատիրոջ գրառումներից առաջ։ Եթե երկու մակարդակներում էլ կա GnuPG ուղի, որոշեք, թե որն եք իրականում պահպանում։

Առաջին ուղղումը՝ վերադասավորեք գրառումները

Ճշգրիտ ուղղումն այն է, որ հաղթի նախատեսված GnuPG պանակը։ Բացեք օգտատիրոջ միջավայրի փոփոխականները, խմբագրեք Path-ը և GnuPG-ի pub պանակը տեղափոխեք Git-ի գրառումներից վեր։ Ապա բացեք նոր PowerShell պատուհան, քանի որ աշխատողը դեռ պահում է հին ցանկը։

Այլընտրանքը տեղադրման համար ժամանակավոր մաքուր միջավայրն է՝ հանեք Git-ի գրառումները, բացեք նոր պատյան, գործարկեք choco install openvpn-ը, ապա վերականգնեք դրանք։

Երկու մոտեցումներն էլ աշխատում են նույն պատճառով, և երկրորդը անվտանգ է միայն այն դեպքում, եթե դուք իրոք վերականգնեք գրառումները։ Git-ի usr/bin-ը PATH-ից հեռացնելը ընդմիշտ կոտրում է ստորագրված կոմիտները, և աշխատող gpg ակնկալող հաջորդ գործիքը ձախողվում է իր իսկ հաղորդագրությամբ, որը որևէ կապ չունի OpenVPN-ի հետ։ Եթե ընտրեք ժամանակավոր ուղին, պահեք Path-ի սկզբնական արժեքը տոմսում, որպեսզի վերականգնումը տեղադրում լինի, ոչ թե վերակառուցում։ Գրառումների դասավորումը կայուն ուղղումն է՝ դրանք ջնջելը ժամկետ ունեցող շրջանցում է։

Ստուգեք, ապա վերադարձրեք տեղը

Ստուգեք առաջ և հետո նույն օգտատիրոջ համատեքստում, որը կօգտագործի Chocolatey-ն։ where.exe gpg-ը թվարկում է յուրաքանչյուր համընկնում լուծման կարգով, ուստի առաջին տողն այն է, որ կաշխատի՝ Get-Command gpg -All-ը տալիս է նույն պատասխանը ավելի մանրամասն PowerShell-ում։ Ապա gpg --version-ը հաստատում է, թե որ կառուցումն է պատասխանել։

Եթե where.exe-ը դեռ առաջինը թվարկում է Git-ի պատճենը, վերադասավորումը չի հասել այդ նստաշրջանին, և ոչ մի վերատեղադրում չի օգնի։ Ստուգեք և՛ մեքենայի, և՛ օգտատիրոջ PATH-ը [Environment]::GetEnvironmentVariable('Path','Machine')-ով և նույն կանչը 'User'-ով, քանի որ արդյունավետ ցանկը հավաքվում է երկուսից։ Հաջող տեղադրումից հետո նորից ստուգեք openvpn --version-ով և մեկ անգամ գործարկեք ծառայությունը կամ GUI-ը, քանի որ փաթեթը կարող է մաքուր տեղադրվել և այնուամենայնիվ թողնել ծառայություն, որը չի մեկնարկի։

Եթե ճիշտ դասավորված PATH-ը դեռ ձախողվում է, մնացած փոփոխականը փաթեթի տարբերակն է։ Ամրացված Chocolatey փաթեթը կարող է սպասել որոշակի GnuPG կառուցման կամ տեղադրման ուղու, որը ձեր մեքենան չունի։

Կարդացեք փաթեթի սեփական մատյանը նախքան որևէ այլ բան փոխելը։ C:\ProgramData\chocolatey\logs\chocolatey.log-ը գրանցում է ձախողված հրամայական տողը և այն պանակը, որտեղից այն աշխատել է, ինչը ձեզ ասում է՝ ձախողված կանչը ստորագրության ստուգում էր, արտահանում, թե տեղադրումից հետո սկրիպտ։ Այդ տարբերությունը որոշում է՝ դեռ ընդհանրապես gpg-ն եք վրիպազերծում։

Կրկնությունը կանխող սովորությունը PATH-ը որպես փաստաթղթավորված կարգով ընդհանուր վիճակ վերաբերվելն է, ոչ թե պանակների պարկ։ Երբ տեղադրեք գործիք, որը բերում է սովորական բինար անուն, ստուգեք, թե ինչ է այն ստվերում ձեր բացած հաջորդ պատյանում։ Ապա գրի առեք այն կարգը, որի վրա կանգնեցիք, որովհետև հաջորդ տեղադրիչը կավելացնի դրան, և հաջորդ մարդը կմտածի, թե ինչու է ստորագրության ստուգումը ձախողվում մի մեքենայում, որտեղ ոչինչ չի փոխվել։ Տեղադրումից առաջ մեկ where.exe-ը խնայում է ամբողջ ցիկլը։

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