OpenVPN-ის ინსტალაცია ვერ ხერხდება, რადგან Git-ის gpg 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 და გადაიტანეთ 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 ზოგავს მთელ ციკლს.