Cheat sheet

Perintah apt: instalasi, pembaruan, dan penghapusan paket di Ubuntu dan Debian

Diperbarui: · Skillaria.Top

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

PerintahFungsi
sudo apt updatememperbarui daftar paket dari repositori
sudo apt upgradememasang pembaruan tanpa menghapus paket
sudo apt full-upgradememperbarui dengan menghapus/mengganti paket bila diperlukan
sudo apt install paketmemasang paket beserta dependensinya
sudo apt reinstall paketmemasang ulang paket
sudo apt remove paketmenghapus paket, konfigurasi dibiarkan
sudo apt purge paketmenghapus paket beserta konfigurasi sistemnya
sudo apt autoremovemenghapus dependensi yang sudah tidak diperlukan
apt search katamencari paket berdasarkan nama dan deskripsi
apt show paketdeskripsi, versi, dependensi, ukuran
apt list --installeddaftar paket yang terpasang
apt list --upgradablepaket yang bisa diperbarui
apt policy paketversi terpasang dan yang tersedia, serta sumbernya
sudo apt cleanmembersihkan cache .deb yang sudah diunduh
sudo apt --fix-broken installmemperbaiki 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

PerintahProgramKonfigurasi di /etcDependensi
apt removedihapustetap adatetap ada
apt purgedihapusikut dihapustetap 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.

Pelajari topik ini lewat video

Topik ini dibahas mendalam dengan praktik di kursus “Linux: с нуля до уверенного администрирования”.

Ke kursus