Inštalácia OpenVPN, ktorá pod Chocolatey zomrie s chybou podpisu alebo kľúča, zvyčajne nie je problém sťahovania. Balík spúšťa overovací krok, ktorý volá gpg, a Windows toto holé meno vyrieši cez PATH. Ak bol Git for Windows nainštalovaný prvý, jeho priložený gpg.exe stojí pred zostavením GnuPG, ktoré OpenVPN očakáva, a na volanie odpovedá nesprávny program. Chyba, ktorú vidíte, je to, na čo sa ten druhý program rozhodol sťažovať, preto nikdy neuvádza skutočnú príčinu.

Poradie v PATH rozhoduje, ktorý gpg sa spustí

Windows nemá centrálny register názvov spustiteľných súborov. Keď proces požiada o gpg bez úplnej cesty, zavádzač prechádza položky PATH v poradí a spustí prvú zhodu. Git for Windows dodáva minimálne zostavenie GnuPG do svojho adresára usr/bin, aby fungovali podpísané commity, a jeho inštalátor zvyčajne umiestni tento adresár blízko začiatku používateľovho PATH.

GnuPG sa inštaluje do vlastného adresára, zvyčajne C:\Program Files (x86)\GNU\GnuPG\pub, a táto položka môže byť v zozname neskôr alebo v používateľovom PATH úplne chýbať. Oba programy zdieľajú názov a veľkú časť rozhrania príkazového riadka, ale nie svoj stav: zostavenie z Gitu hľadá kľúčenku inde, môže byť inej verzie a nemusí prijímať voľby, ktoré inštalátor odovzdáva. Tento nesúlad sa prejaví ako chyba podpisu alebo kľúča, čo je pravdivá správa o tom, čo nesprávny binárny súbor videl. Nič v správe neukazuje na zavádzač, pretože zavádzač urobil presne to, čo mu bolo povedané.

Prečo výsledok určuje shell, z ktorého štartujete

Pravidlo dedenia je časť, ktorú sa oplatí osvojiť. Podriadený proces dostane prostredie shellu, ktorý ho spustil, takže rozhodujúce je poradie v okamihu, keď Chocolatey štartuje, nie poradie po vašej oprave.

Preto úprava PATH v okne nastavení a opätovné spustenie inštalácie v tom istom termináli často nič nezmení: terminál si ponechal staré prostredie. Po každej úprave spustite nový shell a pred ďalším pokusom to potvrďte pomocou where.exe gpg v tomto novom shelli. To je aj dôvod, prečo položka na úrovni počítača môže prebiť zmenu na úrovni používateľa, keďže niektoré inštalátory pridávajú na začiatok PATH počítača a položky počítača sa vyhodnocujú pred položkami používateľa. Ak obe úrovne obsahujú cestu ku GnuPG, rozhodnite, ktorú vlastne udržiavate.

Prvá oprava: zmeňte poradie položiek

Presná oprava je prinútiť zamýšľaný adresár GnuPG vyhrať. Otvorte premenné prostredia pre používateľa, upravte Path a presuňte adresár pub GnuPG nad položky Gitu. Potom otvorte nové okno PowerShellu, pretože to bežiace stále drží starý zoznam.

Alternatívou je dočasné čisté prostredie pre inštaláciu: odstráňte položky Gitu, otvorte nový shell, spustite choco install openvpn a potom ich obnovte.

Oba prístupy fungujú z rovnakého dôvodu a druhý je bezpečný len vtedy, ak položky skutočne obnovíte. Odstránenie Gitovho usr/bin z PATH natrvalo pokazí podpísané commity a nasledujúci nástroj, ktorý očakáva fungujúci gpg, zlyhá s vlastnou správou, ktorá nemá s OpenVPN nič spoločné. Ak zvolíte dočasnú cestu, uložte pôvodnú hodnotu Path do tiketu, aby obnovenie bolo vložením a nie rekonštrukciou. Usporiadanie položiek je trvalá oprava; ich zmazanie je obchádzka s dátumom spotreby.

Overte a potom to vráťte späť

Overte pred a po v rovnakom používateľskom kontexte, ktorý bude Chocolatey používať. where.exe gpg uvádza každú zhodu v poradí riešenia, takže prvý riadok je ten, ktorý sa spustí; Get-Command gpg -All dáva v PowerShelli rovnakú odpoveď s väčším množstvom podrobností. Potom gpg --version potvrdí, ktoré zostavenie odpovedalo.

Ak where.exe stále uvádza kópiu Gitu ako prvú, zmena poradia sa do tejto relácie nedostala a žiadne preinštalovanie nepomôže. Skontrolujte PATH počítača aj používateľa pomocou [Environment]::GetEnvironmentVariable('Path','Machine') a rovnaké volanie s 'User', pretože účinný zoznam sa skladá z oboch. Po úspešnej inštalácii znova skontrolujte pomocou openvpn --version a raz spustite službu alebo GUI, pretože balík sa môže nainštalovať čisto a napriek tomu zanechať službu, ktorá sa nespustí.

Ak správne usporiadané PATH stále zlyháva, zostávajúcou premennou je verzia balíka. Pripnutý balík Chocolatey môže očakávať konkrétne zostavenie GnuPG alebo cestu inštalácie, ktoré váš počítač nemá.

Prečítajte si vlastný log balíka predtým, než zmeníte čokoľvek iné. C:\ProgramData\chocolatey\logs\chocolatey.log zaznamenáva príkazový riadok, ktorý zlyhal, a adresár, z ktorého bol spustený, čo vám povie, či neúspešné volanie bolo kontrola podpisu, extrakcia alebo skript po inštalácii. Toto rozlíšenie rozhoduje o tom, či ešte vôbec ladíte gpg.

Návyk, ktorý bráni opakovaniu, je považovať PATH za zdieľaný stav s zdokumentovaným poradím, nie za vrece adresárov. Keď inštalujete nástroj, ktorý prináša bežný názov binárky, skontrolujte, čo zatieni v ďalšom shelli, ktorý otvoríte. Potom si zapíšte poradie, na ktorom ste sa ustálili, pretože ďalší inštalátor k nemu pridá a ďalší človek bude rozmýšľať, prečo kontrola podpisu zlyháva na počítači, kde sa nič nezmenilo. Jedno where.exe pred inštaláciou ušetrí celý cyklus.

Súvisiace články