Instalasi OpenVPN yang mati di bawah Chocolatey dengan galat tanda tangan atau kunci biasanya bukan masalah unduhan. Paket menjalankan langkah verifikasi yang memanggil gpg, dan Windows menyelesaikan nama polos itu melalui PATH. Jika Git for Windows dipasang lebih dulu, gpg.exe bawaannya berada di depan build GnuPG yang diharapkan OpenVPN, dan program yang salah menjawab panggilan itu. Galat yang Anda lihat adalah apa pun yang diputuskan program lain itu untuk dikeluhkan, itulah sebabnya galat itu tidak pernah menyebut penyebab sebenarnya.

Urutan PATH menentukan gpg mana yang berjalan

Windows tidak memiliki registri pusat nama executable. Saat sebuah proses meminta gpg tanpa jalur lengkap, loader menelusuri entri PATH secara berurutan dan menjalankan kecocokan pertama. Git for Windows menyertakan build GnuPG minimal di dalam direktori usr/bin-nya agar commit bertanda tangan berfungsi, dan penginstalnya biasanya menempatkan direktori itu dekat awal PATH pengguna.

GnuPG memasang ke direktorinya sendiri, umumnya C:\Program Files (x86)\GNU\GnuPG\pub, dan entri itu mungkin lebih jauh di daftar atau sama sekali hilang dari PATH pengguna. Kedua program berbagi nama dan sebagian besar antarmuka baris perintah tetapi tidak berbagi statusnya: build Git mencari keyring di tempat lain, mungkin versi berbeda, dan mungkin tidak menerima opsi yang diteruskan penginstal. Ketidakcocokan itu muncul sebagai galat tanda tangan atau kunci, yang merupakan laporan jujur tentang apa yang dilihat biner yang salah. Tidak ada apa pun dalam pesan yang menunjuk ke loader, karena loader melakukan persis apa yang diperintahkan.

Mengapa shell tempat Anda mulai menentukan hasilnya

Aturan pewarisan adalah bagian yang layak diinternalisasi. Proses anak menerima lingkungan dari shell yang meluncurkannya, jadi urutan yang penting adalah urutan pada saat Chocolatey mulai, bukan urutan setelah Anda memperbaikinya.

Itulah sebabnya mengedit PATH di jendela pengaturan dan menjalankan ulang instalasi di terminal yang sama sering tidak mengubah apa pun: terminal mempertahankan lingkungan lama. Mulai shell baru setelah setiap pengeditan, dan konfirmasi dengan where.exe gpg di shell baru itu sebelum mencoba lagi. Itu juga sebabnya entri tingkat mesin dapat mengalahkan perubahan tingkat pengguna, karena beberapa penginstal menambahkan ke awal PATH mesin dan entri mesin dievaluasi sebelum entri pengguna. Jika kedua tingkat berisi jalur GnuPG, putuskan mana yang sebenarnya Anda pelihara.

Perbaikan pertama: atur ulang urutan entri

Perbaikan tepatnya adalah membuat direktori GnuPG yang dimaksud menang. Buka variabel lingkungan untuk pengguna, edit Path, dan pindahkan direktori pub GnuPG di atas entri Git. Lalu buka jendela PowerShell baru, karena yang sedang berjalan masih memegang daftar lama.

Alternatifnya adalah lingkungan bersih sementara untuk instalasi: hapus entri Git, buka shell baru, jalankan choco install openvpn, lalu pulihkan entri tersebut.

Kedua pendekatan bekerja karena alasan yang sama, dan yang kedua hanya aman jika Anda benar-benar memulihkan entrinya. Menghapus usr/bin Git dari PATH merusak commit bertanda tangan secara permanen, dan alat berikutnya yang mengharapkan gpg yang berfungsi gagal dengan pesannya sendiri yang tidak ada hubungannya dengan OpenVPN. Jika Anda mengambil jalur sementara, simpan nilai asli Path di tiket agar pemulihannya berupa tempel, bukan rekonstruksi. Mengurutkan entri adalah perbaikan yang tahan lama; menghapusnya adalah akal-akalan dengan tenggat.

Verifikasi, lalu kembalikan

Verifikasi sebelum dan sesudah dalam konteks pengguna yang sama yang akan digunakan Chocolatey. where.exe gpg mencantumkan setiap kecocokan dalam urutan resolusi, jadi baris pertama adalah yang akan berjalan; Get-Command gpg -All memberikan jawaban yang sama dengan lebih rinci di PowerShell. Lalu gpg --version mengonfirmasi build mana yang menjawab.

Jika where.exe masih mencantumkan salinan Git lebih dulu, pengaturan ulang belum mencapai sesi itu, dan berapa kali pun memasang ulang tidak akan membantu. Periksa PATH mesin dan pengguna dengan [Environment]::GetEnvironmentVariable('Path','Machine') dan panggilan yang sama dengan 'User', karena daftar efektif disusun dari keduanya. Setelah instalasi berhasil, periksa ulang dengan openvpn --version dan jalankan layanan atau GUI sekali, karena paket dapat terpasang bersih dan tetap meninggalkan layanan yang tidak akan mulai.

Jika PATH yang diurutkan dengan benar masih gagal, variabel yang tersisa adalah versi paket. Paket Chocolatey yang disematkan mungkin mengharapkan build GnuPG atau jalur instalasi tertentu yang tidak dimiliki mesin Anda.

Baca log paket itu sendiri sebelum mengubah hal lain. C:\ProgramData\chocolatey\logs\chocolatey.log mencatat baris perintah yang gagal dan direktori tempat perintah itu dijalankan, yang memberi tahu Anda apakah panggilan yang gagal adalah pemeriksaan tanda tangan, ekstraksi, atau skrip pasca-instalasi. Perbedaan itulah yang menentukan apakah Anda masih men-debug gpg sama sekali.

Kebiasaan yang mencegah pengulangan adalah memperlakukan PATH sebagai keadaan bersama dengan urutan terdokumentasi alih-alih sebagai kantong direktori. Saat Anda memasang alat yang membawa nama biner umum, periksa apa yang dibayanginya di shell berikutnya yang Anda buka. Lalu tuliskan urutan yang Anda tetapkan, karena penginstal berikutnya akan menambahkannya dan orang berikutnya akan bertanya-tanya mengapa pemeriksaan tanda tangan gagal di mesin yang tidak ada yang berubah. Satu where.exe sebelum instalasi menghemat seluruh putaran.

Artikel terkait