Perintah apt adalah antarmuka utama untuk mengelola paket pada keluarga Debian dan Ubuntu, mencakup penyegaran daftar paket, pemasangan dan pencabutan aplikasi, serta pencarian paket yang belum dikenal. Topik ini membahas perbedaan apt update dan apt upgrade, siklus install dan remove, kemudian penelusuran katalog dengan search dan show. Setelah menyelesaikannya, alur kerja paket harian dapat dijalankan sambil memahami apa yang sebenarnya terjadi pada setiap subperintahnya.
Peran apt di atas dpkg#
Alat apt bekerja pada lapisan atas manajemen paket Debian. Alat tersebut membaca indeks paket dari repositori, menyelesaikan dependensi (dependency), mengunduh arsip .deb yang diperlukan, lalu menyerahkan pemasangan teknisnya kepada dpkg. Alat dpkg sendiri hanya menangani satu berkas .deb pada satu waktu dan tidak mengenal repositori, sehingga penelusuran katalog dan penyelesaian dependensi merupakan pekerjaan yang ditambahkan oleh apt. Pembagian kedudukan ini dibahas lebih rinci pada topik dpkg, sedangkan topik ini berfokus pada lapisan apt.
Kata apt pada Ubuntu 16.04 ke atas menunjuk antarmuka yang dirancang untuk terminal interaktif, dengan keluaran berwarna dan indikator kemajuan unduhan. Padanannya untuk skrip adalah apt-get, yang antarmukanya dijamin stabil antarversi. Apabila apt digunakan di dalam skrip, perintah itu mencetak peringatan bahwa antarmukanya tidak stabil untuk otomatisasi, dan itulah alasan dokumentasi menyarankan apt-get untuk pekerjaan semacam itu. Versi apt pada sandbox ini dapat dilihat pada keluaran berikut.
# versi apt yang terpasang pada sandbox ini
apt --versionapt 3.0.3 (amd64)apt update: menyegarkan indeks paket#
Perintah apt update mengunduh salinan terbaru indeks paket dari setiap repositori yang terdaftar. Indeks (index) adalah katalog metadata yang memuat nama, versi, dependensi, dan alamat unduhan setiap paket yang tersedia, tanpa memuat isi paket itu sendiri. Seluruh informasi tentang versi mana yang tersedia bersumber dari indeks inilah, sehingga kualitas keputusan apt sangat ditentukan oleh kesegaran salinan indeks.
Proses tersebut tidak menyentuh satu pun paket terpasang, sehingga perintah ini aman dijalankan kapan saja. Karena menulis berkas baru ke /var/lib/apt/lists, perintah ini memerlukan hak root. Keluarannya berupa deretan baris per repositori, dengan label Hit untuk indeks yang tidak berubah dan Get untuk indeks yang benar-benar diunduh. Perintah ini juga menjadi langkah yang wajib didahulukan sebelum memasang paket pada sistem yang jarang diperbarui, karena kandidat versi yang dibaca apt berasal dari salinan indeks terakhir, bukan dari repositori secara langsung.
# tidak-dijalankan
# apt update menulis indeks baru ke /var/lib/apt/lists sehingga memerlukan hak root
sudo apt updateapt upgrade: memasang versi terbaru#
Perintah apt upgrade memasang versi terbaru untuk paket-paket yang sudah terpasang, menggunakan kandidat versi yang tercatat pada indeks. Proses ini satu tingkat lebih dalam daripada update karena benar-benar mengunduh dan mengganti program pada sistem. Aturan main upgrade konservatif, yaitu perintah ini tidak pernah menghapus paket terpasang dan tidak memasang paket baru, sehingga paket yang pembaruannya menuntut dependensi tambahan ditahan sampai diurus secara terpisah. Aturan konservatif itu menjaga sistem tetap utuh, karena perubahan yang menuntut paket baru atau penghapusan paket lama berdampak lebih luas dan layak diputuskan secara sadar. Perintah apt full-upgrade melonggarkan aturan tersebut dan mengizinkan penghapusan paket bila memang diperlukan, sehingga sebaiknya dijalankan setelah daftar perubahannya dibaca.
Pada sandbox ini, status pemasangan bash memperlihatkan keadaan yang menunggu upgrade. Paket bash terpasang pada versi 5.2.37-2+b8, sedangkan repositori menawarkan kandidat 5.2.37-2+b10, dan apt mencatat selisih itu secara eksplisit pada daftar paket terpasangnya. Selisih semacam ini baru hilang setelah apt upgrade dijalankan.
# paket bash tercatat dapat ditingkatkan pada sandbox ini
apt list --installed 2>/dev/null | grep -E '^bash/'bash/now 5.2.37-2+b8 amd64 [installed,upgradable to: 5.2.37-2+b10]# tidak-dijalankan
# apt upgrade mengganti setiap paket dengan kandidat versinya
sudo apt upgradePerbedaan update dan upgrade#
Kedua perintah ini sering tertukar karena namanya berdekatan, padahal objek kerjanya berbeda sama sekali. update bekerja pada katalog, sedangkan upgrade bekerja pada program yang terpasang. Keduanya juga berbeda durasi, karena mengunduh metadata jauh lebih ringan daripada mengunduh dan mengonfigurasi arsip program.
| Aspek | apt update | apt upgrade |
|---|---|---|
| Objek yang diubah | indeks paket di /var/lib/apt/lists | paket-paket yang sudah terpasang |
| Data yang diunduh | metadata katalog | arsip .deb versi terbaru |
| Durasi umum | detik hingga belasan detik | menit, tergantung jumlah pembaruan |
| Risiko | hampir tidak ada | program berjalan ikut diganti, sehingga daftar perubahan perlu dibaca |
| Ketergantungan | boleh berdiri sendiri | sebaiknya didahului apt update |
Urutan yang benar adalah update terlebih dahulu, lalu baca ringkasan yang ditampilkan, baru upgrade dijalankan. Apabila urutan itu dibalik, upgrade bekerja dengan kandidat versi lama dan hasilnya bisa tidak lengkap. Praktik yang dianjurkan adalah memperlakukan pasangan ini sebagai satu rangkaian, bukan dua perintah yang saling menggantikan.
Memasang dan mencabut paket#
Perintah apt install memasang satu atau beberapa paket sekaligus, lengkap dengan dependensinya yang dipecahkan secara otomatis dari indeks. Sebelum memutuskan memasang, kandidat versi suatu paket dapat diperiksa terlebih dahulu dengan apt-cache policy, yang juga memperlihatkan apakah paket tersebut sudah terpasang atau belum. Pemeriksaan semacam ini berjalan tanpa hak root karena hanya membaca indeks.
# kandidat versi htop menurut indeks yang tersimpan
apt-cache policy htophtop:
Installed: (none)
Candidate: 3.4.1-5
Version table:
3.4.1-5 500
500 http://deb.debian.org/debian trixie/main amd64 PackagesKeluaran di atas menyatakan bahwa htop belum terpasang, sedangkan kandidatnya adalah 3.4.1-5 dari repositori trixie. Bila keputusan pemasangan diambil, apt mengunduh arsip .deb yang dibutuhkan, lalu menyerahkan pemasangan teknisnya kepada dpkg. Pencabutannya menggunakan apt remove, yang menghapus program tetapi membiarkan berkas konfigurasinya tetap ada agar pemasangan ulang berikutnya menemukan pengaturan lama. Untuk menghapus sampai bersih, apt purge mencabut paket beserta konfigurasinya, dan apt autoremove membereskan dependensi yang tidak lagi digunakan paket mana pun.
# tidak-dijalankan
# memasang htop beserta seluruh dependensinya
sudo apt install htop
# mencabut htop dengan berkas konfigurasinya dibiarkan tetap ada
sudo apt remove htopMencari dan memeriksa paket#
Perintah apt-cache search menelusuri nama dan deskripsi setiap paket pada indeks, sehingga paket dapat ditemukan meskipun namanya tidak dihafal. Keluarannya berupa pasangan nama dan deskripsi singkat per baris, dan pencariannya tidak memerlukan hak root. Pencarian ini bekerja sepenuhnya dari indeks lokal, sehingga hasilnya tetap tersedia ketika koneksi sedang tidak ada. Kata kunci yang lebih spesifik mempersempit hasil, sedangkan kata kunci yang umum menghasilkan daftar panjang yang lazim dipotong dengan head.
# mencari paket dari kata kunci deskripsinya
apt-cache search image editor | head -n 6showfoto - image viewer/editor for KDE
emacs-common - GNU Emacs editor's shared, architecture independent infrastructure
jupyterlab - Node.js modules for JupyterLab
kimagemapeditor - HTML image map editor
kolourpaint - simple image editor and drawing application
kquickimageeditor-dev - Image editing components - devel filesUntuk memeriksa satu paket secara rinci, apt show menampilkan metadata kandidat versinya, seperti versi, ukuran terpasang, daftar dependensi, dan alamat situs resminya. Perintah berikut menyembunyikan pesan peringatan antarmuka yang tidak stabil dengan mengalihkan stderr ke /dev/null, lalu membatasi keluaran pada dua belas baris teratas.
# metadata kandidat versi bash dari indeks repositori
apt show bash 2>/dev/null | head -n 12Package: bash
Version: 5.2.37-2+b10
Priority: required
Essential: yes
Section: shells
Source: bash (5.2.37-2)
Maintainer: Matthias Klose <[email protected]>
Installed-Size: 7369 kB
Pre-Depends: libc6 (>= 2.38), libtinfo6 (>= 6)
Depends: base-files (>= 2.1.12), debianutils (>= 5.6-0.1)
Recommends: bash-completion
Suggests: bash-docPerlu dicatat bahwa apt show bash menampilkan versi kandidat 5.2.37-2+b10, sedangkan versi yang benar-benar terpasang pada sandbox ini adalah 5.2.37-2+b8. Metadata paket terpasang dibaca dari basis data dpkg dengan dpkg -s, sehingga kedua perintah itu saling melengkapi dan tidak saling menggantikan.
Kesalahan umum#
- Menjalankan
apt installpada sistem yang sudah lama tidak diperbarui. Kandidat versinya basi dan paket baru bisa gagal ditemukan dengan pesanUnable to locate package. Segarkan indeks denganapt updateterlebih dahulu. - Menganggap
apt upgradeakan memasang atau menghapus paket. Paket yang pembaruannya menuntut dependensi baru justru ditahan. Gunakanapt full-upgradesetelah membaca daftar perubahannya. - Menggunakan
aptdi dalam skrip. Antarmukanya tidak stabil untuk otomatisasi, dan apt mencetak peringatan pada setiap penggunaannya. Ganti denganapt-getuntuk pekerjaan semacam itu. - Mengira
apt removemenghapus berkas konfigurasi. Paket yang sudah dicabut masih menyisakan konfigurasi dengan statusrcpadadpkg -l, danapt purgeyang menghapusnya sampai bersih. - Mengetik nama paket dengan huruf besar yang keliru. Nama paket bersifat peka huruf, sehingga
apt install Bashberakhir dengan pesan tidak ditemukan, sedangkanbashditemukan.
Ringkasan#
aptadalah antarmuka tingkat atas yang menyelesaikan dependensi dan mengunduh paket dari repositori, sedangkan pemasangan teknisnya dikerjakan dpkg.apt updatemenyegarkan indeks tanpa menyentuh paket terpasang, sedangkanapt upgradememasang kandidat versi terbaru untuk paket yang sudah ada dan tidak pernah menghapus paket.apt installdanapt removedigunakan untuk mengelola siklus hidup paket. Perintahpurgemenghapus paket beserta berkas konfigurasinya, sedangkanautoremovemenghapus dependensi yang tidak lagi diperlukan oleh paket lain.apt-cache searchdanapt showmenelusuri katalog tanpa hak root, dan keduanya membaca indeks, bukan basis data paket terpasang.
Referensi#
- apt(8) — Ubuntu manpages — Subperintah apt, kebijakan antarmuka yang tidak stabil, dan perbandingannya dengan apt-get.
- apt-get(8) — Ubuntu manpages — Bentuk perintah dengan antarmuka stabil untuk skrip dan otomatisasi.
- Pengelolaan Paket — Debian FAQ — Pembagian tugas antara apt, apt-get, dan dpkg pada keluarga Debian.