Mengapa apt-cache menampilkan terpasang (tidak ada) untuk paket VPN Anda
Terpasang (tidak ada) berarti paket VPN tidak terpasang, bukan bahwa paket itu hilang. Baca baris kandidat, pin, dan arsitektur sebelum mengedit sumber.
Paket VPN yang melaporkan Installed: (none) tidak hilang; paket itu memang tidak terpasang. Baris yang menentukan apakah Anda dapat memasangnya adalah Candidate, yang diturunkan APT dari indeks, nama suite, arsitektur, dan aturan pinning yang berlaku. Sebagian besar laporan tentang paket VPN yang menghilang ternyata masalah kandidat, bukan masalah pengemasan. Baca kedua baris sebelum Anda menyentuh satu pun entri sumber.
Saya memeriksa kandidat lebih dulu karena hanya perlu satu perintah dan menyingkirkan separuh dugaan umum.
Apa yang dikatakan keluaran apt-cache policy kepada Anda
apt-cache policy membaca cache paket lokal, bukan jaringan. Perintah ini mencetak versi terpasang, versi kandidat, dan tabel setiap indeks yang menawarkan paket itu beserta prioritas yang melekat padanya.
apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpnKandidat adalah versi yang akan dipilih APT saat ini. madison mencantumkan apa yang ditawarkan setiap sumber beserta prioritasnya, dan begitulah Anda mengenali paket yang ada di sebuah indeks tetapi kalah dalam persaingan pin. Panduan apt-cache mendokumentasikan keduanya sebagai pembacaan cache, jadi tidak satu pun membuktikan bahwa cermin dapat dijangkau saat ini.
Jika baris kandidat kosong atau menampilkan (none), tidak ada apa pun di sumber yang dikonfigurasi yang layak untuk sistem ini sebagaimana dikonfigurasi.
Empat alasan kandidat menghilang
Dalam praktik penyebabnya hampir selalu salah satu dari empat hal, dan masing-masing punya perbaikan berbeda.
Nama suite di sumber Anda harus cocok dengan distribusi tempat paket dibangun. Sistem Debian bookworm yang diarahkan ke cermin trixie, atau rilis Ubuntu yang diganti namanya di berkas sources.list.d saat peningkatan, tidak menyelesaikan apa pun untuk paket yang hanya ada di suite lain. Bandingkan lsb_release -cs dengan bidang suite di setiap entri.
APT hanya melihat paket yang dibangun untuk arsitektur yang dikenal dpkg. Kontainer 32-bit, image arm64, atau pemasangan Raspberry Pi yang meminta paket yang hanya dikirim untuk amd64 mendapat kandidat kosong alih-alih pesan galat. dpkg --print-architecture dan dpkg --print-foreign-architectures memberi tahu Anda di kumpulan mana Anda sebenarnya berada.
Komponen juga penting. Paket di contrib atau non-free tidak terlihat saat hanya main yang diaktifkan, dan universe Ubuntu berperilaku sama. Indeksnya ada dan paketnya ada di sana; daftar komponen aktif Anda saja yang tidak memuatnya.
Pinning adalah yang senyap. Berkas di /etc/apt/preferences.d dapat membatasi paket di bawah ambang pemasangan, lalu kandidat yang sepenuhnya baik menghilang dari keluaran sementara indeks masih mencantumkannya. Karena policy mencetak prioritas di samping setiap sumber, paket yang setiap sumbernya membawa nomor pin rendah adalah petunjuknya.
Indeks usang tampak seperti paket yang hilang
Cache adalah cuplikan. Jika apt update terakhir gagal pada satu indeks, kueri terus menjawab dari salinan lama, dan paket yang Anda harapkan mungkin tidak ada di salinan itu.
apt update mencetak galat per indeks, jadi bacalah, bukan menggulir langsung ke baris terakhir.
Penyegaran yang gagal karena galat tanda tangan, berkas release kedaluwarsa, atau cermin tak terjangkau membiarkan indeks sebelumnya di tempatnya. Itu desain yang masuk akal, karena menjaga cache yang berfungsi ketika cermin mati sebentar. Efek sampingnya adalah pencarian bisa berhasil sementara repositori sedang offline. Ini juga berarti ketiadaan paket tidak membuktikan apa pun sampai Anda tahu kapan indeks terakhir diambil. Periksa tanggal berkas di bawah /var/lib/apt/lists sebelum menyalahkan nama paket.
Sebutkan paket yang benar-benar Anda butuhkan
OpenVPN adalah daemon, dan bagian yang biasanya diinginkan orang adalah paket terpisah.
Mesin, plugin NetworkManager, dan editor desktop adalah tiga paket dengan tiga nama, dan plugin itu punya varian GTK yang namanya berbeda antar distribusi. apt-cache search --names-only openvpn mencocokkan nama dan nama yang disediakan alih-alih deskripsi, dan itulah yang Anda inginkan ketika Anda tahu kira-kira apa nama benda itu.
Jika namanya benar-benar tidak dikenal, cari di deskripsi sekali, lalu kembali ke nama persis. Jangan menambahkan akhiran -gui yang dipinjam dari distribusi lain lalu menyimpulkan paket itu tidak ada lagi.
Ubah sumber terakhir, lalu verifikasi transaksi
Menambahkan repositori mengubah siapa yang memasok pembaruan Anda, jadi itu termasuk di akhir penyelidikan, bukan di awal.
Sebelum itu, pastikan rilis, arsitektur, komponen, dan status pin. Catat mana dari empat itu yang Anda periksa, agar orang berikutnya tidak mengulang penyisiran. Jika keempatnya benar dan kandidat masih hilang, kesimpulan jujurnya adalah rilis ini tidak mengirim paket itu. Pilihan yang tersisa adalah backport, paket vendor, atau rilis lain yang didukung, dan masing-masing adalah pilihan sadar, bukan tebakan.
Ketika kandidat benar-benar muncul, simulasikan sebelum menerapkan: apt-get install --simulate dengan nama paket menunjukkan apa yang akan ditarik dan apa yang akan dihapus. Ketersediaan paket, pemasangan, dan tunnel yang berfungsi tetap tiga tahap terpisah, dan tunnel masih memerlukan profil, kredensial, rute, dan DNS sebelum membawa lalu lintas.