Di keluarga Debian — Debian, Ubuntu, dan Linux Mint — urusan software ditangani dua perintah yang bekerja berlapis: apt membaca repository dan menyelesaikan dependensi, dpkg menginstal file dan merawat database package di sistem. Model dua lapis ini sudah kita petakan di Chapter Package Manager Concepts; sekarang kita pegang perintahnya. Sebagian besar praktik di Chapter ini hanya membaca database dan tidak butuh hak root, sehingga bisa dicoba langsung di mesin Debian mana pun.

Dua Lapis: apt di Atas dpkg #

apt adalah frontend: membaca indeks repository, menghitung dependensi, lalu memanggil dpkg untuk memasangnya. dpkg adalah backend: menyalin file dari arsip .deb, menjalankan script maintainer, dan mencatat semuanya di database lokal /var/lib/dpkg. Ada juga apt-get — pendahulu apt dengan antarmuka yang dijanjikan stabil, sehingga lebih cocok dipakai di dalam script; apt sendiri dirancang untuk manusia dengan output yang lebih enak dibaca (perbedaan keduanya dirangkum di apt(8) ). Untuk perintah yang mengubah sistem, kita butuh hak root — perintah berikut adalah panduan untuk sistem Debian atau Ubuntu milik kita sendiri:

bash
sudo apt update
sudo apt install tree
sudo apt remove tree
sudo apt purge tree
sudo apt autoremove

Empat perintah terakhir berbeda peran: remove menghapus program tetapi menyisakan file konfigurasi, purge menghapus keduanya, dan autoremove membersihkan dependensi yang tak lagi dibutuhkan. Urutan update → install adalah ritual wajib: indeks harus segar agar resolver tahu versi yang tersedia.

Memperbarui Sistem: update, upgrade, full-upgrade #

Tiga perintah ini sering tertukar. apt update hanya memperbarui indeks dari repository — tidak ada software yang berubah. apt upgrade memasang versi baru dari package yang sudah terpasang, tetapi menolak memasang atau menghapus package lain bila itu syaratnya. apt full-upgrade lebih berani: package penghalang boleh dihapus supaya transaksi tetap jalan — pilihan untuk pembaruan antar rilis. Pembaruan harian cukup dengan apt update lalu apt upgrade; strateginya kita bahas di Chapter Updating dan Upgrading System.

Mencari dan Mengintip Package #

Sebelum memasang, kita bisa memeriksa kandidatnya: apt search nginx mencari nama dan deskripsi di indeks, apt show nginx menampilkan metadata lengkap — versi, ukuran, dependensi, sampai repository asalnya. Karena hanya membaca, keduanya bisa dijalankan tanpa root; bentuk outputnya sudah kita lihat saat membedah metadata tree di Chapter sebelumnya.

Menjelajahi Database dengan dpkg #

dpkg punya empat perintah query yang paling sering dipakai, dan semuanya aman dijalankan tanpa root (daftar lengkapnya di dpkg(1) ). Yang pertama, dpkg -l, mendaftar package yang terpasang:

bash
dpkg -l bash

Output yang Dihasilkan:

text
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  bash           5.2.37-2+b8  amd64        GNU Bourne Again SHell

Lima baris pertama adalah legenda kolom. Tiga huruf di awal baris data adalah kode status: huruf pertama pilihan kita (i = install), huruf kedua keadaan nyatanya (i = installed), huruf ketiga laporan error — kosong berarti sehat. Jadi ii pada baris bash berarti diminta terpasang dan memang sudah terpasang.

Perintah kedua, dpkg -s, menampilkan metadata satu package langsung dari database lokal:

bash
dpkg -s bash | grep -E '^(Package|Status|Priority|Essential|Section):'

Output yang Dihasilkan:

text
Package: bash
Essential: yes
Status: install ok installed
Priority: required
Section: shells

Baris Status: install ok installed terbaca aneh, tetapi maknanya: package dipilih untuk dipasang, script konfigurasinya sukses, dan file-filenya sudah terpasang. Kondisi seperti install ok half-configured menandakan script maintainer gagal di tengah jalan — skenario yang kita bedah di Chapter Troubleshooting Packages.

Dua Arah: File Milik Package Mana #

Pertanyaan paling sering saat merapikan sistem: file ini milik package mana? dpkg -S menjawab dari arah file, dpkg -L menjawab dari arah package:

bash
dpkg -S /usr/bin/ls /usr/bin/cat
echo ---
dpkg -L coreutils | grep -E '^/usr/bin/(ls|cat)$'

Output yang Dihasilkan:

text
coreutils: /usr/bin/ls
coreutils: /usr/bin/cat
---
/usr/bin/cat
/usr/bin/ls

Kedua arah saling menguatkan: dpkg -S melaporkan ls dan cat milik coreutils, lalu dpkg -L coreutils membalik dengan mendaftar isi package itu — kita saring dengan grep agar hanya ls dan cat yang tampil. Satu catatan path: pada Debian modern /bin adalah symlink ke /usr/bin, jadi keduanya menunjuk file yang sama; dpkg -L juga berguna untuk mencari letak file konfigurasi sebuah package.

Membedah File .deb #

Sebelum ada repository, software keluarga Debian didistribusikan sebagai file .deb — dan bentuknya tetap sama sampai sekarang. Kita bisa membuat file .deb sungguhan lalu membedah isinya:

bash
mkdir -p salam-1.0/DEBIAN salam-1.0/usr/bin
printf '#!/bin/sh\necho "Salam dari paket salam"\n' > salam-1.0/usr/bin/salam
printf 'Package: salam\nVersion: 1.0-1\nArchitecture: all\nSection: utils\nPriority: optional\nMaintainer: Budi <[email protected]>\nDescription: paket contoh untuk belajar struktur .deb\n' > salam-1.0/DEBIAN/control
dpkg-deb --root-owner-group --build salam-1.0 salam_1.0-1_all.deb
ar t salam_1.0-1_all.deb
dpkg-deb -f salam_1.0-1_all.deb Package Version Architecture

Output yang Dihasilkan:

text
dpkg-deb: building package 'salam' in 'salam_1.0-1_all.deb'.
debian-binary
control.tar.xz
data.tar.xz
Package: salam
Version: 1.0-1
Architecture: all

Bedah blok di atas baris per baris:

  1. Baris 1–3: menyiapkan isi package — program salam di usr/bin dan metadata standar di DEBIAN/control.
  2. Baris 4: dpkg-deb --build mengemas folder itu menjadi salam_1.0-1_all.deb; --root-owner-group menjadikan pemilik file netral seperti package sungguhan.
  3. Baris 5: ar t mendaftar isi arsip — file .deb adalah arsip ar berisi tiga anggota: debian-binary (versi format), control.tar.xz (metadata dan script), serta data.tar.xz (file sungguhan).
  4. Baris 6: dpkg-deb -f membaca metadata dari file .deb tanpa memasangnya — format lengkapnya ada di dpkg-deb(1) .

Memasangnya membutuhkan root: dpkg -i salam_1.0-1_all.deb, atau cara modern apt install ./salam_1.0-1_all.deb yang menyelesaikan dependensi dari repository — dpkg -i berhenti bila ada dependensi yang hilang.

Alur kerjanya sudah lengkap: indeks, instalasi, database, sampai file mentahnya. Keluarga Debian bukan satu-satunya — di sisi lain berdiri keluarga Red Hat dengan pasangan dnf dan rpm , yang kita jelajahi berikutnya.