Усталёўка OpenVPN не ўдаецца, бо gpg ад Git перамагае ў PATH
Git for Windows пастаўляе ўласны gpg.exe, і парадак PATH вызначае, які з іх запусціць інсталятар OpenVPN. Праверце праз where.exe, затым змяніце парадак, а не выдаляйце.
Усталёўка 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 перад усталёўкай зэканоміць увесь цыкл.