Инсталација OpenVPN-а која под Chocolatey-јем умире са грешком потписа или кључа обично није проблем преузимања. Пакет извршава корак провере који позива gpg, а Windows тај голи назив решава преко PATH. Ако је Git for Windows инсталиран први, његов приложени gpg.exe стоји испред градње GnuPG-а коју OpenVPN очекује, и погрешан програм одговара на позив. Грешка коју видите је оно на шта је тај други програм одлучио да се пожали, зато никада не помиње прави узрок.

Редослед на 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 и преместите директоријум pub GnuPG-а изнад уноса Git-а. Затим отворите нови прозор PowerShell-а, јер онај који ради још држи стару листу.

Алтернатива је привремено чисто окружење за инсталацију: уклоните уносе Git-а, отворите нову љуску, извршите choco install openvpn и затим их вратите.

Оба приступа раде из истог разлога, а други је безбедан само ако заиста вратите уносе. Уклањање usr/bin Git-а из 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 пре инсталације штеди цео циклус.

Повезани чланци