Инсталација на 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 пред инсталацијата го штеди целиот циклус.

Поврзани статии