Pemasangan selesai, brew mengatakan openvpn ada di sana, dan shell menjawab command not found. Binernya ada, hanya saja berada di direktori yang tidak pernah diberitahukan ke shell. Homebrew menautkan biner bergaya daemon ke direktori sbin prefiks, dan PATH bawaan macOS biasanya menyertakan direktori bin dan bukan direktori sbin. Tidak ada yang rusak, dan pemasangan ulang tidak akan mengubahnya.

Empat pemeriksaan memastikan mekanismenya sebelum Anda menyunting berkas shell apa pun.

Apa yang sebenarnya dipasang formula

Formula openvpn membangun daemon baris perintah, sehingga berkas eksekutabelnya mendarat di bawah sbin bukan bin. Homebrew kemudian menautkan biner itu ke direktori sbin prefiks, dan itulah sebabnya "$(brew --prefix)/sbin/openvpn" --version berfungsi sementara pemanggilan polos tidak. Direktori Cellar berversi juga menyimpan salinan, dan menaruh jalur itu di berkas penyalaan adalah cara sebuah mesin tetap terpaku pada build lama setelah pemutakhiran.

Tautan simbolik prefiks adalah jalur yang stabil. Jalur Cellar adalah detail implementasi dengan nomor versi di dalamnya.

Tanya Homebrew, bukan sistem berkas

Mulailah dari pengelola paket, karena ia tahu pemasangan mana yang memiliki formula: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Jika yang terakhir mencetak jalur, formulanya ada dan pertanyaannya murni soal resolusi. Jika ia tidak mencetak apa pun, shell mencari di tempat yang salah sebuah paket yang tidak pernah dipasang, dan itu masalah lain dengan perbaikan lain.

Dua pemasangan Homebrew pada satu mesin adalah tempat hal ini paling penting: brew yang menjawab belum tentu brew yang memasang.

Mengapa shell tidak bisa melihat sbin

Shell login membangun PATH dari bawaan sistem ditambah apa pun yang ditambahkan berkas penyalaan Anda. Homebrew bin biasanya ditambahkan dan Homebrew sbin biasanya tidak, jadi setiap perintah berfungsi kecuali para daemon. command -v openvpn yang tidak mengembalikan apa pun sementara jalur berprefiks mengembalikan versi adalah seluruh diagnosis dalam dua perintah. Pastikan direktori itu benar-benar memuat tautannya dengan ls -l "$(brew --prefix)/sbin/openvpn".

Tautan yang hilang adalah kerusakan berbeda dari entri PATH yang hilang, dan hanya salah satunya diperbaiki dengan menyunting berkas shell.

Perbaiki jalurnya sekali, di satu tempat

Untuk uji cepat di shell saat ini, eval "$(brew shellenv)" menyetel variabel pemasangan dan menaruh kedua direktori di depan. Untuk penataan permanen, taruh baris shellenv di satu berkas penyalaan yang dibaca shell Anda untuk mode login yang Anda pakai, alih-alih menebar ekspor ke berkas bash dan zsh.

Lalu buka terminal baru dan ulangi kueri versi, karena shell yang ter-cache terus melaporkan PATH lama.

Pisahkan penemuan dari layanan

Menemukan biner tidak sama dengan menjalankan layanan VPN. Menjalankan openvpn secara otomatis menambahkan persyaratan profil, kredensial, hak istimewa, dan siklus hidup yang tidak pernah disentuh penemuan paket. Tunnelblick juga membawa mesinnya sendiri, jadi versi yang baru saja Anda cetak mungkin tidak ada hubungannya dengan versi yang dipakai aplikasi.

Catat eksekutabel mana yang menghasilkan keluaran versi. Satu baris itu menghemat satu jam saat dua versi tidak sepakat lain kali.

Artikel terkait