Tutorial Ubuntu 26.04 / Menghapus, menahan, dan memperbaiki paket dengan aman
Pisahkan penghapusan, hold atau penahanan perubahan paket, kunci proses, dan kesalahan dependensi saat memperbaiki paket Ubuntu. Periksa keadaan serta usulan perubahan terlebih dahulu, simulasikan operasinya, lalu terapkan hanya tindakan yang memang diperlukan.
Bedakan cakupan tiap operasi
| Operasi | Dampak |
|---|---|
| remove | Menghapus program; sebagian konfigurasi sistem dapat tetap tersimpan. |
| purge | Juga menghapus konfigurasi yang dikelola paket; bukan menghapus semua file pengguna. |
| autoremove | Menghapus dependensi bertanda terpasang otomatis yang dinilai tidak diperlukan lagi. |
| hold | Menahan perubahan otomatis paket; pembaruan keamanan juga dapat tertahan. |
Gunakan paket latihan hello yang tidak dipakai untuk pekerjaan penting. Catat apakah paket tersebut sudah terpasang sebelum latihan; bila belum, ikuti alur instalasi APT sebelumnya. Jangan memakai paket kernel, jaringan, atau login untuk latihan penghapusan.
Simulasikan penghapusan dan baca daftar usulan
apt-get -s remove hello
apt-get -s purge hello
apt-get -s autoremove
Bandingkan paket yang akan dihapus oleh masing-masing operasi. Simulasi autoremove meninjau dependensi yang dianggap tidak diperlukan di seluruh sistem, bukan hanya paket latihan. Jangan lanjutkan jika usulan mencakup driver atau layanan yang masih dibutuhkan. Terapkan hanya cakupan yang disetujui, misalnya sudo apt remove hello, dan pertahankan konfirmasi interaktif tanpa -y.
Opsi -s tidak mengubah paket, tetapi hasilnya mengikuti keadaan saat simulasi. Perubahan paket lain setelah itu dapat mengubah usulan berikutnya. Tinjau ulang sebelum tindakan sebenarnya; simulasi tanpa root juga dapat terpengaruh oleh konfigurasi yang tidak dapat dibaca. Arti operasi dan simulasi tersedia dalam manual apt-get.
Periksa hold dan kembalikan keadaan awal
Pastikan hello masih terpasang sebelum bagian ini. Jika Anda benar-benar menghapusnya pada latihan sebelumnya, pasang kembali melalui prosedur yang sudah diperiksa sebelum mencoba hold. Jalankan contoh berikut di Bash pada Ubuntu; hak sudo diperlukan untuk mengubah hold.
(
set -eu
if [ "$(dpkg-query -W -f='${db:Status-Status} ${db:Status-Eflag}' hello 2>/dev/null)" != "installed ok" ]; then
printf 'Pasang dahulu paket latihan hello yang tidak penting.\n' >&2
exit 1
fi
holds=$(apt-mark showhold)
was_held=$(printf '%s\n' "$holds" | grep -x hello || true)
sudo apt-mark hold hello
apt-mark showhold
if [ "$was_held" != hello ]; then
sudo apt-mark unhold hello
fi
apt-mark showhold
)
Contoh memeriksa status terpasang dan tanda kesalahan secara terpisah dari pilihan hold. Bidang tersebut dijelaskan dalam manual dpkg-query. Dengan demikian, paket yang sudah terpasang dan sebelumnya ditahan tetap dapat diperiksa tanpa menganggapnya belum terpasang. Daftar hold harus berhasil dibaca sebelum ada perubahan; kegagalan pembacaannya menghentikan subshell melalui set -e.
Jika hello belum ditahan sebelumnya, contoh menambahkan hold lalu menghapus hold yang baru dibuat itu. Jika sudah ditahan, keadaan tersebut dipertahankan. Daftar akhir seharusnya tetap memuat hello hanya bila hold sudah ada sebelum latihan, dan hold paket lain tetap tersimpan. Manual apt-mark menjelaskan hold, unhold, dan showhold.
Melepas hold tidak langsung memasang pembaruan. Jika contoh terhenti setelah hold dibuat, periksa keluaran dan jalankan apt-mark showhold untuk melihat keadaan sebenarnya. Hanya bila catatan awal memastikan hold hello baru dibuat oleh latihan, gunakan sudo apt-mark unhold hello untuk mengembalikannya. Jangan melepas hold yang sudah ada sebelumnya. Catat alasan, tanggal peninjauan, dan pengaruh keamanan untuk hold jangka panjang.
Selidiki pekerjaan yang berjalan sebelum menangani kunci proses
systemctl status apt-daily.service apt-daily-upgrade.service --no-pager
ps -eo pid,etime,args | grep -E "[a]pt|[d]pkg|[u]nattended"
Jika pembaruan lain sedang berjalan normal, tunggu hingga selesai sebelum mengulang operasi paket. Menghapus file kunci atau menghentikan paksa proses paket tanpa mengetahui keadaannya dapat mengganggu operasi basis data. Status layanan inactive saja tidak membuktikan bahwa kunci sudah ditinggalkan: periksa proses terkait dan log, termasuk pesan kesalahan operasi yang gagal.
Perintah status atau pencarian proses dapat selesai dengan kode keluar bukan nol bila layanan tidak aktif atau tidak ada baris yang cocok. Baca hasil masing-masing; daftar proses ini membantu diagnosis, tetapi tidak membuktikan sendiri siapa pemegang kunci. Jangan menjalankan dua tindakan perbaikan secara bersamaan.
Perbaiki konfigurasi yang belum selesai dan dependensi
sudo dpkg --audit
apt-get -s --fix-broken install
dpkg --audit memeriksa konsistensi status paket, termasuk instalasi yang hanya selesai sebagian. Jika konfigurasi terputus, baca pesan kesalahan dan log di /var/log/dpkg.log, tinjau cadangan yang diperlukan, lalu pertimbangkan sudo dpkg --configure -a. Perintah tersebut mengonfigurasi paket yang sudah dibongkar tetapi belum dikonfigurasi, menjalankan skrip pemelihara paket, dan dapat memengaruhi layanan; itu bukan pemeriksaan baca-saja. Cakupannya dijelaskan dalam manual dpkg.
Untuk dependensi rusak, baca usulan apt-get -s --fix-broken install sebelum memutuskan apakah sudo apt-get --fix-broken install layak dijalankan. Usulannya dapat memasang atau menghapus paket; jangan menyetujuinya hanya karena nama perintahnya menyebut perbaikan. Bila perbaikan gagal, simpan pesan lengkap dan selidiki penyebabnya sebelum mengulang.
Jika penyebabnya adalah repositori yang tidak mendukung rilis atau mencampur versi rilis, perbaiki sumber paket alih-alih mengulang perintah pemulihan. Setelah tindakan selesai, jalankan sudo dpkg --audit dan sudo apt-get check, lalu uji fungsi layanan yang terdampak. Konsistensi paket dan keberhasilan pemulihan data aplikasi merupakan dua hasil yang berbeda. Dokumentasi pengelolaan paket Ubuntu menjelaskan dasar penghapusan dan penanganan dependensi.




