Pemasangan selesai, brew berkata openvpn ada di situ, dan shell menjawab command not found. Binari itu wujud, ia hanya terletak dalam direktori yang tidak pernah diberitahu kepada shell. Homebrew memautkan binari gaya daemon ke dalam direktori sbin awalan, dan PATH lalai macOS biasanya menyertakan direktori bin dan bukan direktori sbin. Tiada apa yang rosak, dan tiada pemasangan semula akan mengubahnya.

Empat pemeriksaan mengesahkan mekanisme ini sebelum anda menyunting mana-mana fail shell.

Apa yang sebenarnya dipasang oleh formula

Formula openvpn membina daemon baris arahan, jadi fail boleh lakunya mendarat di bawah sbin dan bukan bin. Homebrew kemudian memautkan binari itu ke dalam direktori sbin awalan, dan sebab itulah "$(brew --prefix)/sbin/openvpn" --version berfungsi manakala panggilan kosong tidak. Direktori Cellar berversi juga menyimpan salinan, dan meletakkan laluan itu dalam fail permulaan ialah cara sesebuah mesin kekal terpaku pada binaan lama selepas peningkatan.

Pautan simbolik awalan ialah laluan yang stabil. Laluan Cellar ialah perincian pelaksanaan dengan nombor versi di dalamnya.

Tanya Homebrew, bukan sistem fail

Mulakan dengan pengurus pakej, kerana ia tahu pemasangan mana yang memiliki formula itu: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Jika yang terakhir mencetak laluan, formula itu ada dan persoalannya semata-mata tentang penyelesaian. Jika ia tidak mencetak apa-apa, shell mencari di tempat yang salah untuk pakej yang tidak pernah dipasang, dan itu masalah lain dengan pembetulan lain.

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

Mengapa shell tidak dapat melihat sbin

Shell log masuk membina PATH daripada lalai sistem serta apa sahaja yang ditambah oleh fail permulaan anda. Homebrew bin biasanya ditambah dan Homebrew sbin biasanya tidak, jadi setiap arahan berfungsi kecuali daemon. command -v openvpn yang tidak memulangkan apa-apa manakala laluan berawalan memulangkan versi ialah keseluruhan diagnosis dalam dua arahan. Sahkan direktori itu benar-benar memegang pautan itu dengan ls -l "$(brew --prefix)/sbin/openvpn".

Pautan yang hilang ialah kerosakan berbeza daripada entri PATH yang hilang, dan hanya satu daripadanya dibetulkan dengan menyunting fail shell.

Betulkan laluan sekali, di satu tempat

Untuk ujian pantas dalam shell semasa, eval "$(brew shellenv)" menetapkan pemboleh ubah pemasangan dan meletakkan kedua-dua direktori di hadapan. Untuk susunan kekal, letakkan baris shellenv dalam satu-satunya fail permulaan yang dibaca oleh shell anda untuk mod log masuk yang anda gunakan, bukannya menaburkan eksport merentas fail bash dan zsh.

Kemudian buka terminal baharu dan ulangi pertanyaan versi, kerana shell yang dicache terus melaporkan PATH lama.

Asingkan penemuan daripada perkhidmatan

Menemui binari bukanlah sama dengan menjalankan perkhidmatan VPN. Memulakan openvpn secara automatik menambah keperluan profil, kelayakan, keistimewaan dan kitaran hayat yang tidak pernah disentuh oleh penemuan pakej. Tunnelblick juga membawa enjinnya sendiri, jadi versi yang baru anda cetak mungkin tiada kaitan dengan versi yang digunakan oleh aplikasi.

Catat fail boleh laku mana yang menghasilkan output versi. Satu baris itu menjimatkan satu jam lain kali apabila dua versi tidak sependapat.

Artikel berkaitan