APT (Advanced Package Tool) adalah sistem manajemen paket yang powerful untuk distribusi berbasis Debian seperti Ubuntu dan Debian itu sendiri. Menguasai APT adalah skill fundamental yang akan membuat pengalaman menggunakan Linux lebih efisien dan menyenangkan. Artikel ini membahas segala aspek APT dari yang basic hingga advanced.
Dasar-dasar Perintah APT
Update Package List
Sebelum melakukan operasi apapun, selalu update package list untuk mendapatkan informasi terbaru.
# Update package list dari repository
sudo apt update
Output akan menampilkan repository yang di-fetch dan packages yang bisa di-upgrade
Upgrade Packages
# Upgrade semua packages yang ada versi barunya
sudo apt upgrade
Full upgrade (bisa menghapus packages jika dibutuhkan)
sudo apt full-upgrade
atau:
sudo apt dist-upgrade
Perbedaan upgrade vs full-upgrade:
– upgrade: Tidak menghapus packages, tidak menginstall dependencies baru yang konflik
– full-upgrade: Bisa menghapus packages dan menginstall dependencies yang dibutuhkan
Install Package
# Install single package
sudo apt install package-name
Install multiple packages
sudo apt install package1 package2 package3
Install dengan mengkonfirmasi otomatis (-y)
sudo apt install -y package-name
Install package dengan rekomendasi
sudo apt install package-name
Install package tanpa rekomendasi (minimal)
sudo apt install --no-install-recommends package-name
Install package versi spesifik
sudo apt install package-name=version-number
Install dari .deb file local
sudo apt install ./package-name.deb
Remove Package
# Remove package (tetap simpan konfigurasi)
sudo apt remove package-name
Remove package dan konfigurasinya (purge)
sudo apt purge package-name
atau:
sudo apt remove --purge package-name
Remove otomatis tanpa konfirmasi
sudo apt remove -y package-name
Remove Dependencies yang Tidak Terpakai
# Hapus dependencies yang tidak dipakai lagi
sudo apt autoremove
Hapus dengan konfirmasi otomatis
sudo apt autoremove -y
Hapus dependencies beserta konfigurasi
sudo apt autoremove --purge -y
Search Package
# Cari package berdasarkan nama
apt search package-name
Cari dengan filter (case insensitive)
apt search -i keyword
Cari yang sudah terinstall
apt list --installed | grep package-name
Cari dengan deskripsi
apt search description-keyword
Show package information
apt show package-name
Show dependencies
apt depends package-name
Show reverse dependencies (apa yang depend pada package ini)
apt rdepends package-name
Perintah APT Lanjutan
Download Packages tanpa Install
# Download package beserta dependencies
sudo apt download package-name
Download ke directory spesifik
sudo apt download -o Dir::Cache::Archives="/path/to/download" package-name
Download semua .deb files untuk offline install
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances package-name | grep "^\w")
Simulate Actions (Dry Run)
# Simulasikan install tanpa benar-benar install (buat test)
sudo apt install --dry-run package-name
# atau:
sudo apt install -s package-name
Simulasikan upgrade
sudo apt upgrade -s
Fix Broken Dependencies
# Fix broken dependencies (sangat berguna!)
sudo apt --fix-broken install
# atau:
sudo apt install -f
Kombinasi dengan update
sudo apt update && sudo apt --fix-broken install
Clean Up Package Cache
# Hapus downloaded package files (.deb) dari cache
sudo apt clean
Hapus old versions (hanya simpan versi terbaru)
sudo apt autoclean
Hapus cache konfigurasi lama
sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')
Mark Packages (Manual Override)
# Mark package sebagai automatically installed
sudo apt-mark auto package-name
Mark package sebagai manually installed
sudo apt-mark manual package-name
Show hold status
apt-mark showhold
Hold package (prevent upgrade)
sudo apt-mark hold package-name
Unhold package
sudo apt-mark unhold package-name
Repository Management
Konfigurasi Repository
File konfigurasi repository berada di:
# Main sources list
sudo nano /etc/apt/sources.list
Directory untuk additional sources
sudo nano /etc/apt/sources.list.d/additional-repositories.list
Format Repository Entry
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
Komponen repository:
– main: Officially supported software
– restricted: Supported software with legal restrictions
– universe: Community maintained software
– multiverse: Software with copyright/legal issues
Manage PPA (Personal Package Archives)
# Add PPA
sudo add-apt-repository ppa:user/ppa-name
Add PPA tanpa auto-update
sudo add-apt-repository -u ppa:user/ppa-name
Remove PPA
sudo add-apt-repository --remove ppa:user/ppa-name
List semua PPA yang aktif
ls /etc/apt/sources.list.d/
Disable PPA sementara (tanpa menghapus)
sudo sed -i 's/^deb /# deb /' /etc/apt/sources.list.d/ppa-file.list
Pinning Packages (APT Preferences)
Mengontrol versi package mana yang diinstall dari repository mana.
sudo nano /etc/apt/preferences
Contoh pinning:
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release a=testing
Pin-Priority: 400
Package: *
Pin: release a=unstable
Pin-Priority: -10
Pin specific package versi
Package: firefox
Pin: version 100.0*
Pin-Priority: 1001
APT Command Line Options
Common Options
# Quiet mode (minimal output)
sudo apt -qq install package-name
Verbose mode (detail output)
sudo apt -V install package-name
No progress indicator
sudo apt -q install package-name
Assume yes untuk semua prompts
sudo apt -y install package-name
Assume no untuk semua prompts
sudo apt --assume-no install package-name
Download only
sudo apt --download-only install package-name
Show versions
apt list -a package-name
Advanced APT Usage
Create Local Repository
# Buat directory untuk local repository
mkdir -p ~/local-repo/pool/main
Copy .deb files
cp *.deb ~/local-repo/pool/main/
Generate Packages.gz
cd ~/local-repo
dpkg-scanpackages pool/main /dev/null | gzip -9c > pool/main/Packages.gz
Add ke sources.list
echo "deb [trusted=yes] file:/home/user/local-repo ./" | sudo tee -a /etc/apt/sources.list
Update
sudo apt update
APT Logging
# Enable logging (biasanya sudah default)
# Log file locations:
# /var/log/apt/history.log
# /var/log/apt/term.log
View history
cat /var/log/apt/history.log
View dengan timestamp
cat /var/log/apt/term.log
APT with Proxy
# Temporary proxy
sudo apt -o Acquire::http::Proxy="http://proxy.example.com:8080" update
Permanent di /etc/apt/apt.conf
Acquire::http::Proxy "http://proxy.example.com:8080";
Acquire::https::Proxy "http://proxy.example.com:8080";
Troubleshooting APT
1. Hash Sum Mismatch Error
# Error: Hash Sum mismatch
Solusi 1: Clean cache
sudo apt clean
sudo apt update
Solusi 2: Change mirror
sudo sed -i 's/archive.ubuntu.com/mirrors.ocf.berkeley.edu/' /etc/apt/sources.list
sudo apt update
Solusi 3: Hapus lists dan regenerate
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
2. Could not get lock /var/lib/dpkg/lock
# Error: Could not get lock /var/lib/dpkg/lock
Solusi: Cek proses yang menggunakan lock
ps aux | grep apt
Kill proses jika hang
sudo kill -9 <PID>
Hapus lock file (hati-hati!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
Reconfigure dpkg
sudo dpkg --configure -a
Fix install
sudo apt --fix-broken install
3. Package has no installation candidate
# Error: Package 'xxx' has no installation candidate
Solusi: Update repository
sudo apt update
Solusi: Enable universe/multiverse repository
sudo add-apt-repository universe
sudo add-apt-repository multiverse
Solusi: Cek package tersedia di versi OS
apt-cache policy package-name
4. Broken Packages
# Fix broken packages
sudo apt --fix-broken install
sudo apt install -f
Jika masih bermasalah:
sudo dpkg --configure -a
sudo apt update
sudo apt upgrade
Remove package yang bermasalah
sudo dpkg --remove --force-remove-reinstreq package-name
Reinstall package
sudo apt reinstall package-name
5. No Pubkey / GPG Errors
# Error: The following signatures couldn't be verified because the public key is not available
Solusi: Add missing key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys MISSING_KEY_ID
Atau dengan gpg
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys MISSING_KEY_ID
sudo gpg --export MISSING_KEY_ID | sudo tee /etc/apt/trusted.gpg.d/missing-key.gpg
Update setelah add key
sudo apt update
6. Disk Space Issues
# Cek space
df -h
Hapus cache
sudo apt clean
Hapus packages tidak terpakai
sudo apt autoremove --purge -y
Hapus old kernels
sudo apt autoremove --purge -y
Hapus archived logs
sudo journalctl --vacuum-time=3d
Scripting dengan APT
Unattended Upgrades (Otomatis)
# Install unattended-upgrades
sudo apt install unattended-upgrades
Configure
sudo dpkg-reconfigure unattended-upgrades
Edit config
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
APT di Shell Scripts
#!/bin/bash
Non-interactive apt operations
export DEBIAN_FRONTEND=noninteractive
Update dan upgrade
apt-get update -qq
apt-get upgrade -y -qq
Install packages
apt-get install -y -qq package1 package2 package3
Clean up
apt-get autoremove -y -qq
apt-get clean
Batch Install dari File
# Buat file list-packages.txt:
# vim
# git
# curl
# wget
# htop
Install semua dari file
xargs sudo apt install -y < list-packages.txt
Atau dengan loop
while read package; do
sudo apt install -y "$package"
done < list-packages.txt
Best Practices APT
1. Selalu Update Sebelum Install
# Habit yang baik
sudo apt update && sudo apt install package-name
2. Gunakan apt (bukan apt-get untuk interaktif)
# Untuk command line interaktif, gunakan apt (punya progress bar dan warna)
sudo apt install package-name
Untuk scripting, gunakan apt-get (backward compatible)
sudo apt-get install -y package-name
3. Regular Cleanup
# Weekly cleanup routine
sudo apt autoremove --purge -y
sudo apt clean
sudo apt autoclean
4. Hold Critical Packages
# Hold kernel packages (jika menggunakan custom kernel)
sudo apt-mark hold linux-image-generic linux-headers-generic
Hold custom software
sudo apt-mark hold custom-package
5. Backup Important Configs
# Backup sources list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.backup
Backup preferences
sudo cp /etc/apt/preferences /etc/apt/preferences.backup
6. Test di Staging Environment
# Gunakan dry-run untuk testing
sudo apt upgrade -s
Review packages yang akan dihapus/diinstall sebelum lanjut
7. Monitor Disk Space
# Cek sebelum dan sesudah upgrade
df -h
sudo apt upgrade -y
df -h
Kesimpulan
APT adalah tool yang sangat powerful dan fleksibel untuk manajemen paket di Ubuntu dan Debian. Dengan menguasai perintah-perintah di atas, Anda bisa:
- Mengelola software dengan efisien – Install, remove, update tanpa masalah
- Menjaga sistem tetap bersih – Dengan cleanup dan autoremove rutin
- Menangani troubleshooting – Fix broken packages dan dependencies dengan percaya diri
- Mengotomatisasikan task – Scripting APT untuk deployment dan maintenance
- Mengelola repository – PPA, custom repositories, dan pinning dengan baik
APT adalah fondasi package management yang solid. Investasi waktu untuk memahami APT akan membuahkan hasil dalam produktivitas penggunaan Linux sehari-hari.
Ditulis oleh
Hendra Wijaya