Package manager hanya bisa dipercaya selama sumbernya dipercaya. Daftar repository yang tertata menentukan software apa saja yang tersedia, versinya, dan siapa yang menandatanganinya. Pada Chapter ini kita membuka konfigurasi repository pada keluarga Debian dan mempelajari praktik yang aman: menambah sumber baru, memasang kunci GPG dengan cara modern, dan menangani sumber yang bermasalah.

Anatomi Konfigurasi apt #

Debian modern menyimpan definisi repository di /etc/apt/sources.list dan folder /etc/apt/sources.list.d/. Sejak Debian 12, format yang disarankan adalah deb822 dengan file berakhiran .sources. Mari kita lihat isi konfigurasi pada sistem nyata:

bash
ls /etc/apt/sources.list.d/

Output yang Dihasilkan:

text
debian.sources
nodesource.sources

Dua file pada folder tersebut adalah definisi repository aktif. Isi salah satunya bisa kita baca langsung:

bash
grep -vE '^\s*(#|$)' /etc/apt/sources.list.d/debian.sources | head -6

Output yang Dihasilkan:

text
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgp
Types: deb

Blok definisi tersebut memuat empat baris inti. Types: deb menyatakan tipe arsip paket biner; URIs: adalah alamat server repository; Suites: adalah nama rilis yang diikuti beserta cabang pembaruannya; dan Components: main memilih komponen paket mana yang diambil. Baris Signed-By: menunjuk berkas kunci publik yang dipakai memverifikasi tanda tangan repository — mekanisme yang akan kita bedah sebentar lagi.

Format lama satu baris di sources.list masih banyak dijumpai pada sistem yang lebih tua dan dokumentasi daring:

text
deb http://deb.debian.org/debian trixie main

Kelimanya memuat informasi yang sama: skema (deb), URI, suite (trixie), dan komponen (main). Kemampuan membaca dua format ini penting karena panduan instalasi software pihak ketiga hampir selalu memberikan salah satunya untuk disalin.

Komponen: Pembagian Kategori Paket #

Repository Debian dibagi menjadi komponen yang mencerminkan kebijakanlisensi dan dukungan:

KomponenIsi
mainpaket yang sepenuhnya memenuhi DFSG, dikelola resmi
contribbebas, tetapi bergantung pada paket non-bebas
non-freetidak memenuhi kriteria bebas
non-free-firmwarefirmware non-bebas yang terpisah sejak Debian 12

Ubuntu menamai ulang pembagian ini menjadi main (didukung Canonical), universe (komunitas), restricted (driver berpemilik), dan multiverse (bermasalah hak cipta atau paten). Memilih komponen berarti memilih kompromi antara kenyamanan dan kemurnian lisensi — keputusan yang sebaiknya disadari, bukan ditiru begitu saja.

Menambah Repository dan Kunci GPG #

Cara lama memasang kunci pihak ketiga — menyalinnya ke keyring apt melalui apt-key add — kini tidak lagi digunakan karena mencampur kepercayaan semua repository menjadi satu keyring global. Cara modernnya menyimpan kunci di direktori terpisah lalu merujuknya per repository:

bash
install -d /etc/apt/keyrings
curl -fsSL https://contoh.example.com/gpg.key -o /etc/apt/keyrings/contoh.asc
echo "deb [signed-by=/etc/apt/keyrings/contoh.asc] https://contoh.example.com/apt stable main" \
    > /etc/apt/sources.list.d/contoh.sources.list
apt update

Dengan pola signed-by ini, kunci contoh.asc hanya dipercaya untuk repository yang merujuknya. Bila suatu hari repository tersebut dihapus, kuncinya ikut tidak berlaku — tidak ada sisa kepercayaan yang tertinggal untuk dipakai pihak lain. Ubuntu mempermudah langkah-langkah ini dengan add-apt-repository ppa:nama/ppa yang sekaligus menambahkan sumber dan kuncinya.

Menonaktifkan dan Membersihkan Sumber #

Repository yang bermasalah — server mati, kunci kedaluwarsa, atau rilis sudah tidak tersedia — membuat apt update menampilkan galat dan menolak melanjutkan. Diagnosis selalu dimulai dengan membaca pesan galat tersebut, karena apt menyebutkan file dan alasan yang persis. Solusinya bervariasi: sumber lama bisa dihapus (rm /etc/apt/sources.list.d/lama.list) atau cukup dinonaktifkan sementara dengan mengganti awasan barisnya menjadi komentar.

Untuk pengelolaan yang lebih rapi, utilitas kecil berikut memilah baris aktif dari semua definisi format lama sehingga kita bisa memeriksa sumber apa saja yang sedang dipakai:

bash
grep -rhE '^\s*deb ' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null \
  | sed 's/^\s*deb\s*//' | awk '{print $1}' | sort -u

Output yang Dihasilkan:

text

Pipeline di atas bekerja bertahap: grep mengambil hanya baris deb aktif, sed membuang kata deb di awal baris, awk mengambil kolom pertama (alamat server), dan sort -u merapikannya tanpa duplikat. Hasil kosong pada sistem kita berarti semua repository didefinisikan dalam format deb822 .sources — pola yang berbeda tetapi mudah disesuaikan bila diperlukan.

Cermin Kepercayaan pada Manajer Lain #

Konsep yang sama berlaku di seluruh keluarga package manager, hanya dengan istilah berbeda. Fedora menaruh definisi di /etc/yum.repos.d/*.repo dengan kunci gpgkey= per repository; pacman memakai /etc/pacman.conf dengan directive Server dan SigLevel; zypper menyimpan repositori dalam database konfigurasi yang bisa diekspor-impor lewat zypper lr --export. Prinsip dasarnya seragam: satu sumber, satu kunci, satu tanggung jawab.

Dengan repository yang kini tertata, kita siap membahas siklus hidup paket itu sendiri — memasang, meningkatkan, dan menghapus dengan benar pada Chapter Installing dan Removing Packages.