Lewati ke konten
Kembali ke Blog

Panduan Lengkap Manajemen Paket APT di Ubuntu dan Debian

· · 9 menit baca

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:

  1. Mengelola software dengan efisien – Install, remove, update tanpa masalah
  2. Menjaga sistem tetap bersih – Dengan cleanup dan autoremove rutin
  3. Menangani troubleshooting – Fix broken packages dan dependencies dengan percaya diri
  4. Mengotomatisasikan task – Scripting APT untuk deployment dan maintenance
  5. 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

Tinggalkan Komentar

Email tidak akan ditampilkan.