Linux Tutorial (4): Package Management: apt, dnf, dan Compiling from Source
Install, update, dan remove software dengan apt/dnf, repository management, pinning, serta compile dari source code.
Package manager adalah cara Linux mengelola software: dependency resolution, update keamanan, dan rollback. Di production, hampir semua software diinstall lewat package manager, bukan download manual.
Ekosistem Package Manager
| Distro | Manager | Format |
|---|---|---|
| Debian/Ubuntu | apt / apt-get | .deb |
| Fedora/RHEL | dnf / yum | .rpm |
| Arch | pacman | .pkg.tar.zst |
Tutorial ini fokus apt (Debian/Ubuntu), konsepnya transferable ke dnf.
apt: Perintah Sehari-hari
# Update daftar paket (tidak install apapun)
sudo apt update
# Upgrade semua paket terinstall
sudo apt upgrade
# Full upgrade (bisa remove paket obsolete)
sudo apt full-upgrade
# Install paket
sudo apt install nginx curl htop
# Remove paket (keep config)
sudo apt remove nginx
# Purge paket + config
sudo apt purge nginx
# Hapus dependency orphan
sudo apt autoremove
# Cari paket
apt search "web server"
apt show nginxRepository Management
File repository ada di /etc/apt/sources.list dan /etc/apt/sources.list.d/:
# Tambah PPA (Ubuntu)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
# Tambah repo third-party manual
echo "deb [signed-by=/usr/share/keyrings/example.gpg] https://repo.example.com stable main" \
| sudo tee /etc/apt/sources.list.d/example.list
# Import GPG key
curl -fsSL https://repo.example.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpgBest practice production: pin versi paket kritis, hindari PPA random di server.
apt Pinning: Kontrol Versi
File /etc/apt/preferences:
Package: nginx
Pin: version 1.24.*
Pin-Priority: 1001
Package: *
Pin: release o=Ubuntu
Pin-Priority: 500# Hold paket: cegah auto-upgrade
sudo apt-mark hold nginx
sudo apt-mark unhold nginx
sudo apt-mark showholddpkg: Level Lebih Rendah
# Install .deb manual
sudo dpkg -i package.deb
# Fix broken dependency setelah dpkg -i gagal
sudo apt --fix-broken install
# List file dari paket terinstall
dpkg -L nginx
# Cari paket yang memiliki file
dpkg -S /usr/bin/nginx
# List semua paket terinstall
dpkg -l | grep nginxdnf (Fedora/RHEL): Referensi Cepat
sudo dnf check-update
sudo dnf install nginx
sudo dnf remove nginx
sudo dnf search nginx
sudo dnf info nginx
sudo dnf history # riwayat transaksi
sudo dnf history undo last # rollbackSnap dan Flatpak
# Snap (Ubuntu)
sudo snap install code --classic
snap list
sudo snap refresh
# Flatpak
flatpak install flathub org.gimp.GIMP
flatpak updateDi server production, hindari snap untuk service kritis, startup lambat dan isolasi kadang mengganggu integrasi systemd.
Compile from Source
Kadang paket tidak tersedia atau butuh patch custom:
# Install build dependencies
sudo apt build-dep nginx # dari source package
sudo apt install build-essential autoconf libpcre3-dev zlib1g-dev
# Download, configure, compile
wget https://nginx.org/download/nginx-1.26.0.tar.gz
tar -xzf nginx-1.26.0.tar.gz && cd nginx-1.26.0
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module
make -j$(nproc)
sudo make install
# Verifikasi
/usr/local/nginx/sbin/nginx -vCatatan: software dari source tidak terupdate otomatis oleh apt upgrade. Dokumentasikan versi dan langkah build.
Update Keamanan Otomatis
# Ubuntu: unattended-upgrades
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# Cek log
cat /var/log/unattended-upgrades/unattended-upgrades.logLatihan Praktis
- Install
nginx,htop,tree, verifikasi denganwhichdandpkg -L - Cari paket yang menyediakan
/usr/bin/zipdengandpkg -S - Hold versi nginx saat ini, lalu coba
apt upgrade, pastikan nginx tidak terupdate - Remove nginx dengan
purgedanautoremove
Rangkuman
Package manager adalah fondasi operasional Linux. Kuasai apt update/upgrade/install, repository, dan pinning sebelum mengelola proses dan service di tutorial berikutnya.