Chocolatey હેઠળ સહી અથવા કી ભૂલ સાથે મરતું OpenVPN ઇન્સ્ટોલ સામાન્ય રીતે ડાઉનલોડ સમસ્યા નથી. પેકેજ ચકાસણીનું પગલું ચલાવે છે જે gpg ને બોલાવે છે, અને Windows તે નગ્ન નામને PATH દ્વારા ઉકેલે છે. જો Git for Windows પહેલા ઇન્સ્ટોલ થયું હોય, તો તેનું સાથે આવતું gpg.exe OpenVPN જે GnuPG બિલ્ડની અપેક્ષા રાખે છે તેની આગળ બેસે છે, અને ખોટો પ્રોગ્રામ કૉલનો જવાબ આપે છે. તમે જે ભૂલ જુઓ છો તે તે બીજા પ્રોગ્રામે ફરિયાદ કરવાનું નક્કી કર્યું છે, અને તેથી તે ક્યારેય સાચું કારણ દર્શાવતું નથી.

PATH નો ક્રમ નક્કી કરે છે કયું gpg ચાલશે

Windows પાસે એક્ઝિક્યુટેબલ નામોની કોઈ કેન્દ્રીય નોંધ નથી. જ્યારે કોઈ પ્રોસેસ પૂરો પાથ વગર gpg માંગે છે, ત્યારે લોડર PATH ની એન્ટ્રીઓ ક્રમમાં ચાલે છે અને પહેલી મેળ ધરાવતી એન્ટ્રી ચલાવે છે. Git for Windows સહી કરેલા કમિટ્સ કામ કરે તે માટે તેની usr/bin ડિરેક્ટરીમાં ન્યૂનતમ GnuPG બિલ્ડ લાવે છે, અને તેનું ઇન્સ્ટોલર સામાન્ય રીતે તે ડિરેક્ટરીને વપરાશકર્તાના PATH ની શરૂઆતની નજીક મૂકે છે.

GnuPG તેની પોતાની ડિરેક્ટરીમાં ઇન્સ્ટોલ થાય છે, સામાન્ય રીતે C:\Program Files (x86)\GNU\GnuPG\pub, અને તે એન્ટ્રી યાદીમાં પછીની હોઈ શકે છે અથવા વપરાશકર્તાના PATH માંથી સંપૂર્ણપણે ખૂટતી હોઈ શકે છે. બંને પ્રોગ્રામ્સ નામ અને કમાન્ડ-લાઇન ઇન્ટરફેસનો મોટો ભાગ વહેંચે છે, પણ તેમની સ્થિતિ નહીં: Git બિલ્ડ કીરિંગ બીજે ક્યાંક શોધે છે, જુદું સંસ્કરણ હોઈ શકે છે, અને ઇન્સ્ટોલર પસાર કરે તે વિકલ્પો સ્વીકારે ન પણ શકે. તે અસંગતિ સહી અથવા કી ભૂલ તરીકે દેખાય છે, જે ખોટા બાઇનરીએ જે જોયું તેનો સાચો અહેવાલ છે. સંદેશમાં કંઈ પણ લોડર તરફ ઇશારો કરતું નથી, કારણ કે લોડરે બરાબર એ જ કર્યું જે તેને કહેવામાં આવ્યું હતું.

તમે જે શેલથી શરૂ કરો છો તે પરિણામ કેમ નક્કી કરે છે

વારસાનો નિયમ એ ભાગ છે જે આત્મસાત કરવા યોગ્ય છે. ચાઇલ્ડ પ્રોસેસને તેને લોન્ચ કરનાર શેલનું એન્વાયર્નમેન્ટ મળે છે, તેથી મહત્વનો ક્રમ Chocolatey શરૂ થાય તે ક્ષણનો ક્રમ છે, તમે સુધાર્યા પછીનો ક્રમ નહીં.

તેથી જ સેટિંગ્સ વિન્ડોમાં PATH સંપાદિત કરીને તે જ ટર્મિનલમાં ઇન્સ્ટોલ ફરી ચલાવવાથી ઘણી વાર કંઈ બદલાતું નથી: ટર્મિનલે જૂનું એન્વાયર્નમેન્ટ રાખ્યું હતું. કોઈપણ ફેરફાર પછી નવું શેલ શરૂ કરો, અને ફરી પ્રયાસ કરતાં પહેલાં તે નવા શેલમાં where.exe gpg થી ખાતરી કરો. તેથી જ મશીન-સ્તરની એન્ટ્રી વપરાશકર્તા-સ્તરના ફેરફારને હરાવી શકે છે, કારણ કે કેટલાક ઇન્સ્ટોલર મશીનના PATH ની શરૂઆતમાં ઉમેરે છે અને મશીન એન્ટ્રીઓ વપરાશકર્તા એન્ટ્રીઓ પહેલાં મૂલ્યાંકિત થાય છે. જો બંને સ્તરોમાં GnuPG પાથ હોય, તો તમે ખરેખર કયો જાળવો છો તે નક્કી કરો.

પહેલો સુધારો: એન્ટ્રીઓનો ક્રમ બદલો

ચોક્કસ સુધારો એ છે કે ઇચ્છિત GnuPG ડિરેક્ટરી જીતે. વપરાશકર્તા માટે એન્વાયર્નમેન્ટ વેરિયેબલ્સ ખોલો, Path સંપાદિત કરો, અને GnuPG ની pub ડિરેક્ટરીને Git એન્ટ્રીઓની ઉપર ખસેડો. પછી નવી PowerShell વિન્ડો ખોલો, કારણ કે ચાલી રહેલી હજી જૂની યાદી રાખે છે.

વૈકલ્પિક રીત ઇન્સ્ટોલ માટે કામચલાઉ સ્વચ્છ એન્વાયર્નમેન્ટ છે: Git એન્ટ્રીઓ દૂર કરો, નવું શેલ ખોલો, choco install openvpn ચલાવો, પછી તેમને પુનઃસ્થાપિત કરો.

બંને અભિગમો એ જ કારણે કામ કરે છે, અને બીજો ત્યારે જ સુરક્ષિત છે જ્યારે તમે એન્ટ્રીઓ ખરેખર પુનઃસ્થાપિત કરો. Git નું usr/bin 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 આખું લૂપ બચાવે છે.

સંબંધિત લેખો