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.