Nid yw gosodiad OpenVPN sy’n marw o dan Chocolatey gyda gwall llofnod neu allwedd fel arfer yn broblem lawrlwytho. Mae’r pecyn yn rhedeg cam gwirio sy’n galw gpg, ac mae Windows yn datrys yr enw noeth hwnnw drwy PATH. Os gosodwyd Git for Windows yn gyntaf, mae ei gpg.exe ymgorfforedig yn sefyll o flaen y gwaith GnuPG y mae OpenVPN yn ei ddisgwyl, a’r rhaglen anghywir sy’n ateb yr alwad. Y gwall a welwch yw beth bynnag y penderfynodd y rhaglen arall gwyno amdano, a dyna pam nad yw byth yn sôn am yr achos go iawn.

Trefn PATH sy’n penderfynu pa gpg sy’n rhedeg

Nid oes gan Windows unrhyw gofrestrfa ganolog o enwau gweithredadwy. Pan fydd proses yn gofyn am gpg heb lwybr llawn, mae’r llwythwr yn cerdded cofnodion PATH yn eu trefn ac yn rhedeg y cyfatebiaeth gyntaf. Mae Git for Windows yn cludo gwaith GnuPG minimol y tu mewn i’w gyfeiriadur usr/bin fel bod ymrwymiadau llofnodedig yn gweithio, ac mae ei osodwr fel arfer yn gosod y cyfeiriadur hwnnw’n agos at flaen PATH y defnyddiwr.

Mae GnuPG yn gosod yn ei gyfeiriadur ei hun, fel arfer C:\Program Files (x86)\GNU\GnuPG\pub, a gall y cofnod hwnnw fod yn hwyrach yn y rhestr neu ar goll o PATH y defnyddiwr yn gyfan gwbl. Mae’r ddwy raglen yn rhannu enw a llawer o wyneb llinell orchymyn, ond nid eu cyflwr: mae gwaith Git yn chwilio am gylch allweddi yn rhywle arall, gall fod yn fersiwn wahanol, ac efallai na fydd yn derbyn yr opsiynau y mae’r gosodwr yn eu trosglwyddo. Mae’r anghysondeb hwnnw’n ymddangos fel gwall llofnod neu allwedd, sy’n adroddiad gonest o’r hyn a welodd y deuaidd anghywir. Nid oes unrhyw beth yn y neges yn pwyntio at y llwythwr, oherwydd gwnaeth y llwythwr yn union yr hyn a ddywedwyd wrtho.

Pam mae’r plisgyn rydych yn dechrau o honno’n penderfynu’r canlyniad

Y rheol etifeddiaeth yw’r rhan sy’n werth ei mewnoli. Mae proses blentyn yn cael amgylchedd y plisgyn a’i lansiodd, felly’r drefn sy’n cyfrif yw’r drefn ar yr eiliad y mae Chocolatey yn dechrau, nid y drefn ar ôl i chi ei thrwsio.

Dyna pam mae golygu PATH mewn ffenestr osodiadau ac ailredeg y gosodiad yn yr un derfynell yn aml yn newid dim: mae’r derfynell wedi cadw’r hen amgylchedd. Dechreuwch blisgyn newydd ar ôl unrhyw olygiad, a chadarnhewch gyda where.exe gpg yn y plisgyn newydd hwnnw cyn i chi geisio eto. Dyna hefyd pam y gall cofnod ar lefel peiriant guro newid ar lefel defnyddiwr, gan fod rhai gosodwyr yn ychwanegu ar flaen PATH y peiriant ac mae cofnodion peiriant yn cael eu gwerthuso cyn cofnodion defnyddiwr. Os oes gan y ddwy lefel lwybr GnuPG, penderfynwch pa un rydych chi’n ei gynnal mewn gwirionedd.

Trwsio un: aildrefnu’r cofnodion

Y trwsio manwl yw gwneud i’r cyfeiriadur GnuPG bwriadedig ennill. Agorwch newidynnau amgylchedd y defnyddiwr, golygwch Path, a symudwch gyfeiriadur pub GnuPG uwchben cofnodion Git. Yna agorwch ffenestr PowerShell newydd, oherwydd mae’r un sy’n rhedeg yn dal i ddal yr hen restr.

Y dewis arall yw amgylchedd glân dros dro ar gyfer y gosodiad: tynnwch gofnodion Git, agorwch blisgyn newydd, rhedwch choco install openvpn, yna adferwch nhw.

Mae’r ddau ddull yn gweithio am yr un rheswm, ac mae’r ail yn ddiogel yn unig os ydych chi wir yn adfer y cofnodion. Mae tynnu usr/bin Git o PATH yn torri ymrwymiadau llofnodedig yn barhaol, ac mae’r offeryn nesaf sy’n disgwyl gpg gweithredol yn methu â’i neges ei hun nad oes ganddi ddim i’w wneud ag OpenVPN. Os cymerwch y llwybr dros dro, cadwch werth gwreiddiol Path yn y tocyn fel bod yr adferiad yn bast yn hytrach nag yn ailadeiladu. Trefnu’r cofnodion yw’r trwsio parhaus; eu dileu nhw yw datrysiad dros dro sydd â dyddiad cau.

Gwiriwch, yna rhowch hi yn ôl

Gwiriwch cyn ac ar ôl yn yr un cyd-destun defnyddiwr y bydd Chocolatey yn ei ddefnyddio. Mae where.exe gpg yn rhestru pob cyfatebiaeth yn nhrefn datrysiad, felly’r llinell gyntaf yw’r un a fydd yn rhedeg; mae Get-Command gpg -All yn rhoi’r un ateb gyda mwy o fanylion yn PowerShell. Yna mae gpg --version yn cadarnhau pa waith a atebodd.

Os yw where.exe yn dal i restru copi Git yn gyntaf, nid yw’r aildrefnu wedi cyrraedd y sesiwn honno, ac ni fydd unrhyw ailatrefnu o help. Gwiriwch PATH y peiriant a’r defnyddiwr gyda [Environment]::GetEnvironmentVariable('Path','Machine') a’r un alwad gyda 'User', oherwydd mae’r rhestr effeithiol yn cael ei chydosod o’r ddau. Ar ôl gosodiad llwyddiannus, ail-wiriwch gyda openvpn --version a dechreuwch y gwasanaeth neu’r GUI unwaith, gan y gall pecyn osod yn lân a gadael gwasanaeth na fydd yn dechrau.

Os yw PATH sydd wedi’i drefnu’n gywir yn dal i fethu, y newidyn sy’n weddill yw fersiwn y pecyn. Gall pecyn Chocolatey wedi’i binio ddisgwyl gwaith GnuPG neu lwybr gosod penodol nad yw eich peiriant yn ei gael.

Darllenwch log y pecyn ei hun cyn newid unrhyw beth arall. Mae C:\ProgramData\chocolatey\logs\chocolatey.log yn cofnodi’r llinell orchymyn a fethodd a’r cyfeiriadur y gwnaeth redeg ohono, sy’n dweud wrthych a oedd yr alwad a fethodd yn archwiliad llofnod, yn echdynnu neu’n sgript ôl-osod. Mae’r gwahaniaeth hwnnw’n penderfynu a ydych chi’n dal i ddadfygu gpg o gwbl.

Yr arfer sy’n atal ailadrodd yw trin PATH fel cyflwr a rennir â threfn wedi’i dogfennu yn hytrach na bag o gyfeiriaduron. Pan fyddwch yn gosod offeryn sy’n cludo enw deuaidd cyffredin, gwiriwch beth mae’n ei gysgodi yn y plisgyn nesaf y byddwch yn ei agor. Yna ysgrifennwch y drefn y setlwch arni, oherwydd bydd y gosodwr nesaf yn ychwanegu ati a bydd y person nesaf yn meddwl tybed pam mae archwiliad llofnod yn methu ar beiriant lle nad oes dim wedi newid. Mae un where.exe cyn y gosodiad yn arbed y ddolen gyfan.

Erthyglau cysylltiedig