TDCTF Academy Logo TDCTF ACADEMY

Package Management

Konsep Package Management di Linux

Package manager mengotomatiskan instalasi, upgrade, konfigurasi, dan penghapusan software. Tanpa package manager, user harus mengompilasi dari source dan mengelola dependency secara manual - proses yang rawan error dan sulit di-scale.

Dua ekosistem utama:

Distro Format Paket Package Manager
Debian, Ubuntu .deb apt, dpkg
RHEL, CentOS, Fedora .rpm dnf, yum, rpm

APT (Advanced Package Tool)

APT adalah front-end untuk dpkg yang menangani dependency secara otomatis.

Perintah dasar:

apt update # Sinkronisasi index paket dari repository
apt upgrade # Upgrade semua paket terinstall
apt install nginx # Install paket + dependency-nya
apt remove nginx # Hapus paket (konfigurasi tersisa)
apt purge nginx # Hapus paket + konfigurasi
apt autoremove # Hapus dependency yang tidak diperlukan
apt search "web server" # Cari paket
apt show nginx # Tampilkan detail paket
apt list --installed # Daftar semua paket terinstall

apt-get adalah pendahulu apt dengan sintaks mirip. apt dirancang lebih user-friendly dengan progress bar dan color output.

dpkg - Low-Level Package Manager

dpkg bekerja langsung dengan file .deb tanpa resolusi dependency otomatis.

dpkg -i package.deb # Install paket lokal
dpkg -r package # Remove paket
dpkg -l # List semua paket
dpkg -L nginx # Tampilkan file milik paket
dpkg -S /etc/nginx/nginx.conf # Cari paket pemilik file

Jika dpkg -i gagal karena dependency, jalankan apt --fix-broken install.

Repository APT

Konfigurasi repository disimpan di /etc/apt/sources.list dan /etc/apt/sources.list.d/.

Format baris repository:

deb http://archive.ubuntu.com/ubuntu jammy main restricted
deb-src http://archive.ubuntu.com/ubuntu jammy universe
Komponen Deskripsi
main Paket resmi yang didukung Canonical
universe Paket komunitas, tidak mendapat dukungan keamanan resmi
restricted Driver proprietary
multiverse Paket yang mungkin tidak bebas secara legal

PPA (Personal Package Archive)

PPA adalah repository tidak resmi via Launchpad. Berguna untuk mendapatkan versi terbaru software.

sudo add-apt-repository ppa:nginx/stable
sudo apt update
sudo apt install nginx

PPA adalah sumber tidak resmi - gunakan dengan hati-hati. Hanya tambah PPA dari maintainer terpercaya.

Snap dan Flatpak

Package manager universal yang bekerja lintas distribusi:

Snap (Canonical):

snap install lxd # Install snap package
snap list # List snap packages
snap refresh # Update semua snap

Snap ter-sandbox dengan confinement ketat. Paket di-mount read-only.

Flatpak (komunitas):

flatpak install flathub org.gimp.GIMP
flatpak run org.gimp.GIMP
flatpak list

Flatpak menggunakan sandbox Bubblewrap dan direkomendasikan untuk aplikasi desktop.

Deb vs RPM

Aspek .deb .rpm
Distribusi Debian, Ubuntu, Mint RHEL, CentOS, Fedora, OpenSUSE
Package Manager dpkg rpm
Front-end apt, aptitude dnf, yum, zypper
Konvensi naming name_version_arch.deb name-version-arch.rpm

Keduanya bisa dikonversi dengan alien, tapi tidak disarankan untuk produksi.

Verifikasi Paket

Memverifikasi integritas paket penting untuk keamanan.

# Debian
dpkg --verify nginx # Cek file yang dimodifikasi
apt-cache policy nginx # Lihat versi dan repository asal

# RPM
rpm -V nginx # Verifikasi paket terinstall

GPG signature pada repository memastikan paket tidak dimodifikasi di perjalanan (man-in-the-middle).

Dependency Resolution

Salah satu fitur terpenting package manager adalah resolusi dependency otomatis:

# Simulasi sebelum install
apt install --dry-run nginx

# Tampilkan dependency tree
apt-cache depends nginx

# Cari paket yang menyediakan file tertentu
apt-file search /usr/lib/libssl.so

Jika terjadi konflik dependency, hindari --force - lebih baik cari solusi dengan apt-cache policy atau repository alternatif. Dependency hell bisa diminimalkan dengan rutin menjalankan apt update && apt upgrade.

PADA HALAMAN INI