Pakej VPN yang melaporkan Installed: (none) tidak hilang; ia cuma tidak dipasang. Baris yang menentukan sama ada anda boleh memasangnya ialah Candidate, yang diterbitkan APT daripada indeks, nama suite, seni bina dan sebarang peraturan pin yang berkuat kuasa. Kebanyakan laporan tentang pakej VPN yang hilang ternyata masalah calon dan bukan masalah pembungkusan. Baca kedua-dua baris sebelum anda menyentuh satu pun entri sumber.

Saya menyemak calon dahulu kerana ia hanya memerlukan satu arahan dan menyingkirkan separuh tekaan biasa.

Apa yang diberitahu oleh output apt-cache policy kepada anda

apt-cache policy membaca cache pakej tempatan, bukan rangkaian. Ia mencetak versi dipasang, versi calon dan jadual setiap indeks yang menawarkan pakej itu bersama keutamaan yang dilampirkan padanya.

apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpn

Calon ialah versi yang akan dipilih APT sekarang. madison menyenaraikan apa yang ditawarkan setiap sumber dengan keutamaannya, dan begitulah anda mengenal pasti pakej yang wujud dalam indeks tetapi kalah dalam persaingan pin. Manual apt-cache mendokumenkan kedua-duanya sebagai pembacaan cache, jadi kedua-duanya tidak membuktikan cermin boleh dicapai pada masa ini.

Jika baris calon kosong atau menunjukkan (none), tiada apa-apa dalam sumber yang dikonfigurasikan layak untuk sistem ini seperti yang dikonfigurasikan.

Empat sebab calon hilang

Dalam amalan puncanya hampir selalu salah satu daripada empat perkara, dan setiap satu mempunyai pembetulan berbeza.

Nama suite dalam sumber anda mesti sepadan dengan distribusi yang pakej itu dibina. Sistem Debian bookworm yang menuju ke cermin trixie, atau keluaran Ubuntu yang dinamakan semula dalam fail sources.list.d semasa peningkatan, tidak menyelesaikan apa-apa untuk pakej yang hanya wujud dalam suite yang lain. Bandingkan lsb_release -cs dengan medan suite dalam setiap entri.

APT hanya melihat pakej yang dibina untuk seni bina yang dikenali dpkg. Kontena 32-bit, imej arm64 atau pemasangan Raspberry Pi yang meminta pakej yang hanya dihantar untuk amd64 mendapat calon kosong dan bukannya mesej ralat. dpkg --print-architecture dan dpkg --print-foreign-architectures memberitahu anda dalam set mana anda sebenarnya berada.

Komponen juga penting. Pakej dalam contrib atau non-free tidak kelihatan apabila hanya main didayakan, dan universe Ubuntu berkelakuan sama. Indeks itu wujud dan pakej itu ada di dalamnya; cuma senarai komponen didayakan anda tidak memasukkannya.

Pin ialah yang senyap. Fail dalam /etc/apt/preferences.d boleh mengehadkan pakej di bawah ambang pemasangan, dan kemudian calon yang cukup baik hilang daripada output sementara indeks masih menyenaraikannya. Kerana policy mencetak keutamaan di sebelah setiap sumber, pakej yang setiap sumbernya membawa nombor pin rendah ialah petunjuknya.

Indeks lapuk kelihatan seperti pakej yang hilang

Cache ialah syot kilat. Jika apt update terakhir gagal pada satu indeks, pertanyaan terus menjawab daripada salinan lama, dan pakej yang anda jangkakan mungkin tiada dalam salinan itu.

apt update mencetak ralat bagi setiap indeks, jadi bacalah dan jangan terus tatal ke baris terakhir.

Penyegaran yang gagal kerana ralat tandatangan, fail release tamat tempoh atau cermin tidak dapat dicapai membiarkan indeks sebelumnya di tempatnya. Itu reka bentuk yang wajar, kerana ia mengekalkan cache yang berfungsi apabila cermin mati sebentar. Kesan sampingannya ialah carian boleh berjaya walaupun repositori berada di luar talian. Ia juga bermakna ketiadaan pakej tidak membuktikan apa-apa sehingga anda tahu bila indeks itu kali terakhir diambil. Semak tarikh fail di bawah /var/lib/apt/lists sebelum menyalahkan nama pakej.

Namakan pakej yang anda benar-benar perlukan

OpenVPN ialah daemon, dan bahagian yang orang biasanya mahu ialah pakej berasingan.

Enjin, pemalam NetworkManager dan penyunting desktop ialah tiga pakej dengan tiga nama, dan pemalam itu mempunyai varian GTK yang namanya berbeza antara distribusi. apt-cache search --names-only openvpn memadankan nama dan nama yang disediakan dan bukannya penerangan, dan itulah yang anda mahu apabila anda kira-kira tahu apa nama benda itu.

Jika namanya benar-benar tidak diketahui, cari dalam penerangan sekali, kemudian kembali kepada nama tepat. Jangan tambah akhiran -gui yang dipinjam daripada distribusi lain dan membuat kesimpulan bahawa pakej itu tidak lagi wujud.

Tukar sumber terakhir, kemudian sahkan transaksi

Menambah repositori mengubah siapa yang membekalkan kemas kini anda, jadi ia tergolong di penghujung penyiasatan, bukan di permulaan.

Sebelum itu, sahkan keluaran, seni bina, komponen dan status pin. Catat mana antara empat yang anda semak, supaya orang seterusnya tidak mengulangi sapuan itu. Jika keempat-empatnya betul dan calon masih tiada, kesimpulan jujurnya ialah keluaran ini tidak menghantar pakej itu. Pilihan yang tinggal ialah backport, pakej vendor atau keluaran lain yang disokong, dan setiap satunya pilihan sedar dan bukan tekaan.

Apabila calon muncul, simulasi sebelum menggunakan: apt-get install --simulate dengan nama pakej menunjukkan apa yang akan ditarik masuk dan apa yang akan dibuang. Ketersediaan pakej, pemasangan dan terowong yang berfungsi kekal tiga peringkat berasingan, dan terowong itu masih memerlukan profil, kelayakan, laluan dan DNS sebelum membawa trafik.

Artikel berkaitan