Instalacija OpenVPN-a koja pod Chocolateyjem umre s greškom potpisa ili ključa obično nije problem preuzimanja. Paket izvodi korak provjere koji poziva gpg, a Windows razrješava to golo ime kroz PATH. Ako je Git for Windows instaliran prvi, njegov priloženi gpg.exe stoji ispred GnuPG builda koji OpenVPN očekuje, i pogrešan program odgovara na poziv. Greška koju vidite je ono na što se taj drugi program odlučio požaliti, zato nikada ne spominje pravi uzrok.

Redoslijed PATH-a odlučuje koji se gpg pokreće

Windows nema središnji registar naziva izvršnih datoteka. Kada proces zatraži gpg bez pune putanje, loader prolazi kroz unose PATH po redu i pokreće prvo podudaranje. Git for Windows isporučuje minimalni GnuPG build unutar svog direktorija usr/bin kako bi potpisani commitovi radili, a njegov instalater obično smješta taj direktorij blizu početka korisnikovog PATH.

GnuPG se instalira u vlastiti direktorij, obično C:\Program Files (x86)\GNU\GnuPG\pub, a taj unos može biti kasnije na popisu ili potpuno izostati iz korisnikovog PATH. Dva programa dijele ime i velik dio sučelja naredbenog retka, ali ne i svoje stanje: Git build traži privjesak ključeva negdje drugdje, može biti druga verzija i možda ne prihvaća opcije koje instalater prosljeđuje. Taj nesklad se pojavljuje kao greška potpisa ili ključa, što je istinit izvještaj o tome što je pogrešna binarna datoteka vidjela. Ništa u poruci ne upućuje na loader, jer je loader učinio točno ono što mu je rečeno.

Zašto ljuska iz koje krećete odlučuje o rezultatu

Pravilo nasljeđivanja je dio koji vrijedi usvojiti. Dijete proces dobiva okruženje ljuske koja ga je pokrenula, pa je redoslijed koji je važan onaj u trenutku kada Chocolatey kreće, a ne redoslijed nakon što ga popravite.

Zato uređivanje PATH u prozoru postavki i ponovno pokretanje instalacije u istom terminalu često ne mijenja ništa: terminal je zadržao staro okruženje. Pokrenite novu ljusku nakon svake izmjene i potvrdite s where.exe gpg u toj novoj ljusci prije nego što pokušate ponovno. To je i razlog zašto unos na razini stroja može pobijediti promjenu na razini korisnika, jer neki instalateri dodaju na početak PATH stroja, a unosi stroja se vrednuju prije korisničkih unosa. Ako obje razine sadrže GnuPG putanju, odlučite koju zapravo održavate.

Prva popravka: promijenite redoslijed unosa

Točna popravka je natjerati željeni GnuPG direktorij da pobijedi. Otvorite varijable okruženja za korisnika, uredite Path i premjestite GnuPG direktorij pub iznad Git unosa. Zatim otvorite novi prozor PowerShell, jer pokrenuti još drži stari popis.

Alternativa je privremeno čisto okruženje za instalaciju: uklonite Git unose, otvorite novu ljusku, pokrenite choco install openvpn, a zatim ih vratite.

Oba pristupa rade iz istog razloga, a drugi je siguran samo ako unose doista vratite. Uklanjanje Gitovog usr/bin iz PATH trajno kvari potpisane commitove, a sljedeći alat koji očekuje radni gpg ne uspijeva s vlastitom porukom koja nema veze s OpenVPN-om. Ako odaberete privremeni put, sačuvajte izvornu vrijednost Path u ticketu kako bi vraćanje bilo lijepljenje, a ne rekonstrukcija. Uređivanje unosa je trajna popravka; brisanje istih je zaobilazno rješenje s rokom.

Provjerite, zatim vratite natrag

Provjerite prije i poslije u istom korisničkom kontekstu koji će Chocolatey koristiti. where.exe gpg navodi svako podudaranje u redoslijedu razrješavanja, pa je prvi redak onaj koji će se pokrenuti; Get-Command gpg -All daje isti odgovor s više pojedinosti u PowerShellu. Zatim gpg --version potvrđuje koji je build odgovorio.

Ako where.exe još navodi Gitovu kopiju prvom, promjena redoslijeda nije stigla do te sesije i nikakvo ponovno instaliranje neće pomoći. Provjerite PATH i na razini stroja i korisnika s [Environment]::GetEnvironmentVariable('Path','Machine') i istim pozivom s 'User', jer se učinkoviti popis sastavlja iz oba. Nakon uspješne instalacije ponovno provjerite s openvpn --version i jednom pokrenite uslugu ili GUI, jer se paket može čisto instalirati i ipak ostaviti uslugu koja se neće pokrenuti.

Ako ispravno poredan PATH još ne uspijeva, preostala varijabla je verzija paketa. Prikvačeni Chocolatey paket može očekivati određeni GnuPG build ili putanju instalacije koju vaše računalo nema.

Pročitajte vlastiti dnevnik paketa prije nego što promijenite bilo što drugo. C:\ProgramData\chocolatey\logs\chocolatey.log bilježi naredbeni redak koji nije uspio i direktorij iz kojeg je pokrenut, što vam govori je li neuspjeli poziv bio provjera potpisa, izdvajanje ili skripta nakon instalacije. Ta razlika odlučuje debugirate li još uopće gpg.

Navika koja sprječava ponavljanje jest tretirati PATH kao dijeljeno stanje s dokumentiranim redoslijedom, a ne kao vreću direktorija. Kada instalirate alat koji nosi uobičajeni naziv binarne datoteke, provjerite što zasjenjuje u sljedećoj ljusci koju otvorite. Zatim zapišite redoslijed na kojem ste se zaustavili, jer će sljedeći instalater dodati na njega i sljedeća osoba će se pitati zašto provjera potpisa ne uspijeva na stroju gdje se ništa nije promijenilo. Jedan where.exe prije instalacije štedi cijelu petlju.

Povezani članci