Ang pag-install ng OpenVPN na namamatay sa ilalim ng Chocolatey na may error sa lagda o key ay karaniwang hindi problema sa pag-download. Nagpapatakbo ang pakete ng hakbang sa pagpapatunay na tumatawag sa gpg, at nareresolba ng Windows ang hubad na pangalan sa pamamagitan ng PATH. Kung nauna ang Git for Windows, ang kasamang gpg.exe nito ay nakatayo sa harap ng build ng GnuPG na inaasahan ng OpenVPN, at ang maling programa ang sumasagot sa tawag. Ang error na nakikita mo ay ang pinagdesisyunan ng kabilang programa na ireklamo, kaya hindi nito binabanggit ang tunay na dahilan.

Ang ayos ng PATH ang nagtatakda kung aling gpg ang tumatakbo

Walang sentral na rehistro ng mga pangalang maipapatupad ang Windows. Kapag humiling ang isang proseso ng gpg nang walang buong landas, dinaraanan ng loader ang mga entry sa PATH sa ayos at pinapatakbo ang unang tugma. Nagdadala ang Git for Windows ng minimal na build ng GnuPG sa loob ng direktoryo nitong usr/bin upang gumana ang mga lagdaang commit, at karaniwang inilalagay ng installer nito ang direktoryong iyon malapit sa simula ng PATH ng user.

Nag-iinstall ang GnuPG sa sarili nitong direktoryo, karaniwang C:\Program Files (x86)\GNU\GnuPG\pub, at ang entry na iyon ay maaaring nasa huli ng listahan o wala nang lubusan sa PATH ng user. Ibinabahagi ng dalawang programa ang isang pangalan at malaking bahagi ng interface ng command line, ngunit hindi ang kanilang estado: naghahanap ang build ng Git ng keyring sa ibang lugar, maaaring ibang bersyon, at maaaring hindi tanggapin ang mga opsyon na ipinapasa ng installer. Ang pagkakaibang iyon ay lumilitaw bilang error sa lagda o key, na isang tapat na ulat ng nakita ng maling binary. Wala sa mensahe ang tumutukoy sa loader, dahil ginawa ng loader ang eksaktong sinabi sa kanya.

Bakit ang shell na pinagsimulan mo ang nagtatakda ng resulta

Ang tuntunin ng pamana ang bahaging sulit na isapuso. Nakukuha ng prosesong anak ang kapaligiran ng shell na naglunsad nito, kaya ang ayos na mahalaga ay ang ayos sa sandaling magsimula ang Chocolatey, hindi ang ayos pagkatapos mong ayusin ito.

Kaya ang pag-edit ng PATH sa isang window ng mga setting at muling pagpapatakbo ng pag-install sa parehong terminal ay kadalasang walang binabago: pinanatili ng terminal ang lumang kapaligiran. Magsimula ng bagong shell pagkatapos ng anumang pagbabago, at kumpirmahin gamit ang where.exe gpg sa bagong shell na iyon bago subukang muli. Ito rin ang dahilan kung bakit ang entry sa antas ng makina ay maaaring manaig sa pagbabago sa antas ng user, dahil ang ilang installer ay nagdaragdag sa simula ng PATH ng makina at ang mga entry ng makina ay sinusuri bago ang mga entry ng user. Kung parehong antas ay may landas ng GnuPG, magpasya kung alin ang talagang inaalagaan mo.

Unang pagwawasto: muling ayusin ang mga entry

Ang tumpak na pagwawasto ay hayaang manalo ang nilalayong direktoryo ng GnuPG. Buksan ang mga variable ng kapaligiran ng user, i-edit ang Path, at ilipat ang direktoryo pub ng GnuPG sa itaas ng mga entry ng Git. Pagkatapos ay magbukas ng bagong window ng PowerShell, dahil ang tumatakbo ay hawak pa rin ang lumang listahan.

Ang alternatibo ay pansamantalang malinis na kapaligiran para sa pag-install: alisin ang mga entry ng Git, magbukas ng bagong shell, patakbuhin ang choco install openvpn, pagkatapos ay ibalik ang mga ito.

Gumagana ang parehong paraan sa parehong dahilan, at ang pangalawa ay ligtas lamang kung talagang ibinalik mo ang mga entry. Ang pag-alis ng usr/bin ng Git mula sa PATH ay permanenteng masisira ang mga lagdaang commit, at ang susunod na tool na umaasa sa gumaganang gpg ay mabibigo sa sarili nitong mensahe na walang kaugnayan sa OpenVPN. Kung pipiliin mo ang pansamantalang landas, itago ang orihinal na halaga ng Path sa ticket upang ang pagbabalik ay pag-paste at hindi muling pagbuo. Ang pag-aayos ng mga entry ang matibay na pagwawasto; ang pagtanggal sa mga ito ay pansamantalang solusyon na may petsa ng pag-expire.

I-verify, pagkatapos ay ibalik

I-verify bago at pagkatapos sa parehong konteksto ng user na gagamitin ng Chocolatey. Inililista ng where.exe gpg ang bawat tugma sa ayos ng resolusyon, kaya ang unang linya ang tatakbo; ang Get-Command gpg -All ay nagbibigay ng parehong sagot na may mas maraming detalye sa PowerShell. Pagkatapos ay kinukumpirma ng gpg --version kung aling build ang sumagot.

Kung inililista pa rin ng where.exe ang kopya ng Git sa unahan, hindi naabot ng muling pag-aayos ang session na iyon, at walang dami ng muling pag-install ang makakatulong. Suriin ang PATH ng makina at ng user gamit ang [Environment]::GetEnvironmentVariable('Path','Machine') at ang parehong tawag gamit ang 'User', dahil ang epektibong listahan ay binubuo mula sa dalawa. Pagkatapos ng matagumpay na pag-install, suriin muli gamit ang openvpn --version at simulan ang serbisyo o GUI nang isang beses, dahil ang isang pakete ay maaaring malinis na ma-install at mag-iwan pa rin ng serbisyong hindi magsisimula.

Kung ang tamang naayos na PATH ay nabibigo pa rin, ang natitirang variable ay ang bersyon ng pakete. Ang naka-pin na pakete ng Chocolatey ay maaaring umasa sa partikular na build ng GnuPG o landas ng pag-install na wala sa iyong makina.

Basahin ang sariling log ng pakete bago baguhin ang anumang iba. Itinatala ng C:\ProgramData\chocolatey\logs\chocolatey.log ang command line na nabigo at ang direktoryo kung saan ito pinatakbo, na nagsasabi kung ang nabigong tawag ay pagsusuri ng lagda, pagkuha, o script pagkatapos ng pag-install. Ang pagkakaibang iyon ang nagtatakda kung nagde-debug ka pa ba talaga ng gpg.

Ang ugali na pumipigil sa pag-uulit ay ituring ang PATH bilang pinagsasaluhang estado na may dokumentadong ayos, hindi bilang supot ng mga direktoryo. Kapag nag-install ka ng tool na may dalang karaniwang pangalang binary, suriin kung ano ang tinatakpan nito sa susunod na shell na bubuksan mo. Pagkatapos ay isulat ang ayos na napagkasunduan mo, dahil ang susunod na installer ay magdadagdag dito at ang susunod na tao ay magtataka kung bakit nabibigo ang pagsusuri ng lagda sa makina kung saan walang nagbago. Ang isang where.exe bago ang pag-install ay nakakatipid ng buong loop.

Kaugnay na mga artikulo