Perintah apt: instalasi, pembaruan, dan penghapusan paket di Ubuntu dan Debian
apt adalah manajer paket Ubuntu dan Debian: sudo apt update memperbarui daftar paket, sudo apt upgrade memasang pembaruan, sudo apt install nama memasang paket, sudo apt remove menghapusnya (purge ikut menghapus konfigurasi), dan apt autoremove membuang dependensi yang tidak lagi dibutuhkan. Pencarian paket dibantu apt search dan apt show, sedangkan dependensi yang rusak diperbaiki dengan sudo apt --fix-broken install.
apt adalah manajer paket standar di Ubuntu, Debian, dan turunannya (Linux Mint, Pop!_OS). apt mengunduh program dari repositori, mengurus dependensi secara otomatis, dan memperbarui sistem dengan satu perintah. Di bawah ini semua perintah apt yang dibutuhkan dalam pekerjaan sehari-hari, dikelompokkan menurut tugas, beserta kesalahan umum dan solusinya.
Cara kerja apt
Paket adalah arsip .deb yang berisi program, metadata, dan daftar dependensi. Repositori adalah server tempat paket disimpan; alamatnya ditulis di /etc/apt/sources.list dan di direktori /etc/apt/sources.list.d/. apt menyimpan salinan lokal daftar paket yang tersedia dan saat instalasi merujuk ke salinan itu, sehingga salinan tersebut harus diperbarui secara berkala.
Di balik layar, apt memanggil dpkg tingkat rendah yang mengekstrak dan mencatat paket, tetapi dpkg tidak bisa menyelesaikan dependensi sendiri. Perintah apt-get dan apt-cache adalah antarmuka lama dengan fungsi yang sama: keluarannya stabil dan cocok untuk skrip. apt adalah pembungkus yang lebih baru untuk manusia: ada bilah progres, warna, dan perintahnya lebih pendek.
Hampir semua perintah yang mengubah sistem memerlukan hak administrator, sehingga dijalankan dengan sudo. Pencarian dan melihat informasi bisa dilakukan tanpa itu.
Cheat sheet: perintah apt utama
| Perintah | Fungsi |
|---|---|
sudo apt update | memperbarui daftar paket dari repositori |
sudo apt upgrade | memasang pembaruan tanpa menghapus paket |
sudo apt full-upgrade | memperbarui dengan menghapus/mengganti paket bila diperlukan |
sudo apt install paket | memasang paket beserta dependensinya |
sudo apt reinstall paket | memasang ulang paket |
sudo apt remove paket | menghapus paket, konfigurasi dibiarkan |
sudo apt purge paket | menghapus paket beserta konfigurasi sistemnya |
sudo apt autoremove | menghapus dependensi yang sudah tidak diperlukan |
apt search kata | mencari paket berdasarkan nama dan deskripsi |
apt show paket | deskripsi, versi, dependensi, ukuran |
apt list --installed | daftar paket yang terpasang |
apt list --upgradable | paket yang bisa diperbarui |
apt policy paket | versi terpasang dan yang tersedia, serta sumbernya |
sudo apt clean | membersihkan cache .deb yang sudah diunduh |
sudo apt --fix-broken install | memperbaiki dependensi yang rusak |
apt update dan apt upgrade: cara memperbarui sistem
Ini dua operasi yang berbeda, dan sering tertukar. apt update tidak memasang apa pun: ia hanya mengunduh daftar paket terbaru. apt upgrade baru memasang versi baru dari program yang sudah terpasang, dengan berpedoman pada daftar tersebut.
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ apt list --upgradable
$ sudo apt upgrade
Kombinasi umum untuk server dalam satu baris, dengan konfirmasi otomatis:
sudo apt update && sudo apt upgrade -y
Perbedaan upgrade dan full-upgrade
apt upgrade bisa memasang dependensi baru, tetapi tidak pernah menghapus paket yang sudah terpasang. Jika pembaruan memerlukan penghapusan sesuatu (misalnya saat versi kernel atau pustaka berganti), paket tersebut akan "ditahan" — muncul baris The following packages have been kept back. apt full-upgrade (setara dengan apt-get dist-upgrade) mengizinkan penghapusan dan menyelesaikan pembaruan sampai tuntas. Sebelum menjalankannya, baca dengan teliti apa saja yang akan dihapus oleh apt.
Memperbarui satu paket saja
sudo apt install --only-upgrade nginx
Jika paket belum terpasang, perintah dengan --only-upgrade tidak akan memasangnya — ini melindungi dari instalasi yang tidak disengaja.
apt install: memasang paket
sudo apt install nginx # satu paket
sudo apt install git curl htop # beberapa sekaligus
sudo apt install -y docker.io # tanpa pertanyaan Y/n
sudo apt install nginx=1.24.0-2ubuntu7 # versi tertentu
sudo apt install --no-install-recommends ffmpeg # tanpa paket yang direkomendasikan
sudo apt install ./google-chrome-stable_current_amd64.deb # file .deb lokal
Saat memasang, apt menampilkan paket apa saja yang akan ditambahkan dan berapa banyak ruang yang dipakai, lalu meminta konfirmasi. Flag -y menjawab "ya" secara otomatis — berguna di skrip dan Dockerfile, tetapi dalam pekerjaan interaktif sebaiknya baca daftarnya dulu.
Secara default apt memasang bukan hanya dependensi wajib (Depends), tetapi juga yang direkomendasikan (Recommends). Di server dan kontainer, --no-install-recommends mengurangi ukuran secara signifikan.
Memasang berkas .deb: apt atau dpkg -i
Berkas .deb yang sudah diunduh sebaiknya dipasang dengan apt install ./berkas.deb — path wajib diawali ./ atau berupa path lengkap, jika tidak apt akan mencari paket dengan nama itu di repositori. Berbeda dengan dpkg -i, apt sendiri akan mengunduh dependensi yang kurang. Jika Anda sudah memasang paket lewat dpkg dan muncul error dependensi, perbaikinya dengan sudo apt --fix-broken install.
sudo dpkg -i package.deb
sudo apt --fix-broken install
apt remove, purge, dan autoremove: menghapus paket
| Perintah | Program | Konfigurasi di /etc | Dependensi |
|---|---|---|---|
apt remove | dihapus | tetap ada | tetap ada |
apt purge | dihapus | ikut dihapus | tetap ada |
apt autoremove | — | — | yang tidak diperlukan dihapus |
sudo apt remove nginx
sudo apt purge nginx # sama dengan di atas + konfigurasi
sudo apt autoremove # sisa dependensi
sudo apt autoremove --purge # sisa dependensi beserta konfigurasinya
remove cocok jika Anda berencana memakai program itu lagi dan ingin menyimpan pengaturannya. purge dipakai untuk pemasangan ulang yang benar-benar bersih. Perlu diingat: berkas di direktori home pengguna (misalnya ~/.config) tidak dihapus oleh perintah apa pun.
Paket yang sudah dihapus tetapi konfigurasinya masih tersisa dapat dicari dengan status rc:
dpkg -l | grep '^rc'
Mencari paket dan informasinya
apt search postgresql # cari berdasarkan nama dan deskripsi
apt search --names-only '^php8' # hanya nama, dengan ekspresi reguler
apt show htop # versi, ukuran, dependensi, deskripsi
apt policy docker.io # versi yang tersedia dan asalnya
apt list --installed | grep python3
apt-cache depends curl # paket ini bergantung pada apa
apt-cache rdepends libssl3 # siapa yang bergantung pada paket ini
Paket mana yang memiliki sebuah berkas
$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl
$ dpkg -L curl # berkas apa saja yang dipasang paket ini
Jika perintah belum ada di sistem, Ubuntu akan menyarankan paketnya saat Anda mencoba menjalankannya (pesan Command 'tree' not found, but can be installed with: sudo apt install tree). Untuk mencari berkas di paket yang belum terpasang, ada utilitas apt-file: apt-file search bin/dig setelah menjalankan sudo apt-file update.
Mengunci versi: apt-mark hold
Kadang sebuah paket tidak boleh diperbarui — misalnya versi DBMS atau kernel di produksi hanya boleh diganti secara manual. Untuk itu paket "dibekukan":
sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16
Pasangan lain yang berguna adalah apt-mark manual dan apt-mark auto. Paket yang dipasang sebagai dependensi ditandai otomatis dan akan ikut terhapus oleh autoremove ketika tidak lagi dibutuhkan. Penanda manual melindungi paket dari penghapusan tersebut.
Repositori: cara menambah dan letaknya
Daftar sumber berada di /etc/apt/sources.list dan berkas /etc/apt/sources.list.d/*.list. Di Ubuntu 24.04 dan Debian 12+ semakin sering dipakai format deb822 dengan ekstensi .sources (misalnya /etc/apt/sources.list.d/ubuntu.sources).
Repositori pihak ketiga dengan kunci
Cara modern adalah menyimpan kunci repositori secara terpisah dan mengaitkannya melalui signed-by. Perintah apt-key sudah usang dan dihapus di versi baru.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce
PPA di Ubuntu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa
PPA adalah repositori pribadi di Launchpad. Pasang hanya dari yang Anda percaya: paket dari sana dipasang dengan hak root.
Cache dan ruang disk
Paket yang sudah diunduh tetap tersimpan di /var/cache/apt/archives/. Di disk kecil dan di image Docker, cache sebaiknya dibersihkan.
du -sh /var/cache/apt/archives
sudo apt clean # hapus seluruh cache .deb
sudo apt autoclean # hapus hanya versi yang sudah usang
Di Dockerfile, instalasi biasanya ditulis dalam satu layer dan daftar paket langsung dibersihkan:
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
Di skrip, yang dipakai adalah apt-get, bukan apt: antarmuka apt tidak stabil, dan ia sendiri memperingatkan hal ini (WARNING: apt does not have a stable CLI interface). Agar installer tidak menanyakan apa pun, tambahkan DEBIAN_FRONTEND=noninteractive.
Kesalahan apt yang umum dan cara memperbaikinya
Could not get lock /var/lib/dpkg/lock-frontend
Ada proses lain yang sedang bekerja dengan paket: terminal kedua yang menjalankan apt, "Pusat Aplikasi", atau pembaruan otomatis unattended-upgrades di latar belakang. Tunggu beberapa menit dan cek siapa yang memegang kunci:
ps aux | grep -E 'apt|dpkg'
Jangan menghapus berkas lock secara manual selama proses masih berjalan: instalasi yang terputus bisa membuat sistem tidak konsisten. Jika proses benar-benar macet atau sudah dihentikan paksa, setelah itu jalankan sudo dpkg --configure -a.
Unable to locate package
apt tidak menemukan paketnya. Penyebab tersering: belum menjalankan sudo apt update di sistem yang baru dipasang, salah ketik nama, atau paketnya berada di komponen yang tidak aktif (universe di Ubuntu). Komponen diaktifkan dengan sudo add-apt-repository universe.
Unmet dependencies / held broken packages
Dependensi tidak cocok — biasanya setelah memasang .deb secara manual atau mencampur repositori dari versi distribusi yang berbeda.
sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy paket-bermasalah
dpkg was interrupted
Instalasi terputus (terminal ditutup, listrik padam). Pesan error sudah menyebutkan solusinya: sudo dpkg --configure -a.
NO_PUBKEY saat apt update
Repositori pihak ketiga tidak memiliki kunci penandatangan, atau kuncinya sudah kedaluwarsa. Unduh kunci terbaru dari situs proyek ke /etc/apt/keyrings/ dan tuliskan di signed-by, seperti pada contoh Docker di atas.
Pembaruan keamanan otomatis
Di Ubuntu Server, paket unattended-upgrades terpasang secara default dan memasang pembaruan keamanan secara otomatis. Untuk memeriksa dan mengaktifkannya:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
Apakah perlu reboot setelah pembaruan terlihat dari berkas /var/run/reboot-required: jika berkas itu ada, berarti kernel atau pustaka penting sudah diperbarui.
Kesimpulan
Perintah apt dasar cukup dibayangkan sebagai siklus singkat: update sebelum melakukan apa pun, install untuk memasang, upgrade untuk memperbarui, remove atau purge untuk menghapus, dan autoremove untuk membersihkan sisa. Untuk versi tersedia apt policy dan apt-mark hold; untuk kerusakan tersedia --fix-broken install dan dpkg --configure -a; dan di skrip gunakan apt-get. Manajemen paket dibahas dalam praktik pada kursus Linux.
Pertanyaan umum
Apa bedanya apt dan apt-get?
Keduanya adalah antarmuka ke sistem paket yang sama. apt lebih nyaman dipakai di terminal (progres, warna, perintah pendek), sedangkan apt-get memiliki keluaran yang stabil dan direkomendasikan untuk skrip serta Dockerfile.
Perlukah menjalankan apt update sebelum setiap instalasi?
Sebaiknya, jika daftar paket sudah lama tidak diperbarui. Jika tidak, apt mungkin tidak menemukan paket, atau mencoba mengunduh versi yang sudah tidak ada di mirror dan menampilkan error 404.
Bagaimana cara melihat riwayat instalasi dan penghapusan lewat apt?
Riwayat disimpan di /var/log/apt/history.log (catatan lama ada di arsip history.log.N.gz), sedangkan log dpkg yang lebih rinci ada di /var/log/dpkg.log.
Bagaimana cara mengembalikan paket ke versi sebelumnya?
Lihat versi yang tersedia dengan apt policy paket, lalu pasang versi yang diinginkan dengan sudo apt install paket=versi, dan kunci versi itu dengan apt-mark hold agar pembaruan berikutnya tidak menggantinya dengan versi baru.
Bisakah apt dipakai di CentOS atau Fedora?
Tidak. Di sana format paketnya berbeda (rpm) dan manajernya dnf atau yum. apt bekerja di Debian, Ubuntu, dan distribusi turunannya.
Topik ini dibahas mendalam dengan praktik di kursus “Linux: с нуля до уверенного администрирования”.
Ke kursus