Repositori paket adalah koleksi paket yang dikurasi beserta indeksnya, diakses apt melalui alamat yang tercatat pada berkas sumber (sources). Topik ini membahas struktur berkas sumber format deb822, arti suite dan komponen, repositori pihak ketiga beserta PPA, dan model kepercayaan kriptografis yang membuat sistem berani memasang paket dari jaringan. Setelah menyelesaikannya, setiap baris berkas sumber dapat dibaca dan risiko menambahkan sumber baru dapat dinilai dengan dasar yang jelas.
Repositori paket dan alurnya#
Secara bentuk, sebuah repositori adalah server HTTP yang menyimpan tiga kelompok berkas, yaitu arsip .deb, berkas indeks yang memetakan nama paket ke arsipnya, dan berkas Release yang menandatangani indeks tersebut. apt tidak pernah menerima paket dari tempat lain selain repositori yang terdaftar, karena daftar itulah satu-satunya sumber kandidat versi yang dikenalnya. Perubahan pada daftar sumber tidak berlaku seketika, melainkan setelah indeks disegarkan dengan apt update.
Alurnya berjalan berlapis dan setiap lapisnya meninggalkan jejak yang dapat diperiksa. Berkas sumber menyatakan alamat repositori, apt update mengunduh indeksnya ke disk lokal, kemudian apt install membaca indeks itu, mengunduh arsip yang diperlukan, memverifikasinya, lalu menyerahkannya kepada dpkg untuk dipasang. Diagram berikut merangkum alur tersebut dari berkas sumber sampai paket terpasang.
Susunan berlapis ini menertibkan pemeliharaan sistem. Seluruh perangkat lunak yang masuk melalui apt berasal dari daftar sumber yang pendek dan dapat diaudit. Pertanyaan dari mana sebuah program berasal pun selalu memiliki jawaban yang pasti.
Berkas sumber paket#
Sejak Debian 12 dan Ubuntu 24.04, sumber paket ditulis dalam format deb822 pada berkas .sources di dalam /etc/apt/sources.list.d/. Generasi sebelumnya menggunakan format satu baris pada /etc/apt/sources.list, dan format itu masih didukung. Sandbox ini menggunakan format baru, dan berkasnya dapat dibaca langsung karena berhak baca untuk semua pengguna.
# berkas sumber bawaan Debian 13 dalam format deb822
cat /etc/apt/sources.list.d/debian.sourcesTypes: deb
# http://snapshot.debian.org/archive/debian/20260505T000000Z
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgp
Types: deb
# http://snapshot.debian.org/archive/debian-security/20260505T000000Z
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgpSetiap blok pada berkas itu disebut stanza dan mendeklarasikan satu sumber. Bidang Types: deb menyatakan arsip biner, sedangkan deb-src digunakan bila kode sumbernya juga diambil. Bidang URIs memuat alamat cermin, Suites menyebut lini rilis, Components membatasi cakupan lisensi, dan Signed-By menunjuk kunci yang wajib menandatangani sumber tersebut. Berkas di atas memuat dua stanza, yaitu satu untuk trixie beserta trixie-updates dan satu lagi khusus trixie-security, sehingga pembaruan keamanan mendapat jalurnya sendiri.
Padanan format lamanya menempatkan keempat bidang itu pada satu baris, dengan urutan tipe arsip, alamat, suite, dan komponen.
deb http://deb.debian.org/debian trixie main
deb http://deb.debian.org/debian trixie-updates main
deb http://deb.debian.org/debian-security trixie-security mainKedua format setara secara fungsi, dan apt membaca keduanya. Yang perlu dijaga adalah tidak mengaktifkan sumber yang sama dua kali, misalnya membiarkan berkas lama tetap berisi sementara berkas baru sudah mendeklarasikan hal yang sama. Kondisi semacam itu membuat apt mengeluarkan peringatan entri ganda pada setiap operasinya.
Suite dan komponen#
Suite adalah lini rilis yang dilayani sebuah repositori. Pada sandbox ini terdapat trixie sebagai rilis dasarnya, trixie-updates untuk perbaikan antarrilis, dan trixie-security untuk pembaruan keamanan. Pemisahan ini membuat administrator dapat membedakan pembaruan yang bersifat keamanan murni dari perbaikan umum. Pembaruan keamanan biasanya didahulukan pada server, sedangkan perbaikan umum bisa menunggu jendela pemeliharaan.
Komponen membatasi cakupan lisensi. Pada Debian, main memuat paket yang sepenuhnya bebas sesuai pedoman distro, contrib memuat paket bebas yang bergantung pada isi non-free, dan non-free memuat paket yang tidak memenuhi kriteria kebebasan, dengan non-free-firmware sebagai komponen khusus firmware perangkat keras. Sandbox ini hanya mengaktifkan main, dan itu sudah mencakup ribuan paket termasuk seluruh peralatan yang dibahas pada jalur ini.
# sumber aktif beserta prioritasnya menurut apt-cache
apt-cache policy | head -n 12Package files:
100 /var/lib/dpkg/status
release a=now
500 https://deb.nodesource.com/node_24.x nodistro/main amd64 Packages
release o=. nodistro,a=nodistro,n=nodistro,l=. nodistro,c=main,b=amd64
origin deb.nodesource.com
500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=amd64
origin deb.debian.org
500 http://deb.debian.org/debian trixie-updates/main amd64 Packages
release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=amd64
origin deb.debian.orgKeluaran tersebut memperlihatkan setiap sumber yang aktif beserta prioritasnya. Angka 500 adalah prioritas bawaan repositori, sedangkan entri dengan angka 100 berasal dari /var/lib/dpkg/status, yaitu basis data paket terpasang. Prioritas inilah yang menentukan kandidat versi apabila beberapa sumber menawarkan versi berbeda untuk paket yang sama.
PPA dan repositori pihak ketiga#
Repositori resmi distro tidak menutup kebutuhan semua pengguna. Pengembang perangkat lunak sering memelihara repositori sendiri agar versi terbarunya dapat dipasang tanpa menunggu paket distro, dan pola ini dijumpai pada lingkungan runtime seperti Node.js. Sandbox ini memang memuat satu contoh nyatanya, dan berkasnya dapat dibaca seperti berkas bawaan Debian.
# repositori pihak ketiga yang terdaftar pada sandbox ini
cat /etc/apt/sources.list.d/nodesource.sourcesTypes: deb
URIs: https://deb.nodesource.com/node_24.x
Suites: nodistro
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/nodesource.gpgBentuknya sama dengan stanza bawaan, tetapi Signed-By menunjuk berkas kunci milik pengelolanya, yaitu /usr/share/keyrings/nodesource.gpg, dan Suites berisi nodistro karena sumber ini tidak mengikuti lini rilis Debian. Kunci itu harus dipasang terlebih dahulu secara terpisah, biasanya diunduh dari situs resmi pengelolanya, karena apt menolak sumber yang tandatangannya tidak dikenal.
Pada Ubuntu tersedia pula PPA, singkatan dari Personal Package Archive, yaitu repositori pribadi pada layanan Launchpad yang diisi pembangunan paket oleh siapa saja. PPA ditambahkan dengan add-apt-repository dan tidak pernah ditinjau oleh distro, sehingga kualitas dan keamanannya sepenuhnya bergantung pada pembuatnya.
# tidak-dijalankan
# menambahkan repositori pihak ketiga membutuhkan hak root
sudo add-apt-repository ppa:nama/ppa
# indeks wajib disegarkan setelah daftar sumber berubah
sudo apt updateModel kepercayaan paket#
Kepercayaan pada apt dibangun berlapis dan setiap lapisnya diverifikasi sebelum lapis berikutnya digunakan. Repositori menandatangani berkas Release dengan kunci GPG pengelolanya, berkas Release memuat checksum untuk seluruh berkas indeks, dan berkas indeks memuat hash serta ukuran setiap arsip .deb. apt memeriksa tanda tangan terlebih dahulu, lalu checksum indeks, lalu hash arsip yang diunduh, sehingga satu paket tidak pernah dipasang tanpa melewati ketiga pemeriksaan itu. Mekanisme ini didokumentasikan sebagai apt-secure, dan berlaku sama untuk repositori resmi maupun pihak ketiga.
Kunci yang dipercaya sistem tersimpan sebagai berkas keyring, dan kunci arsip resmi Debian dibawa oleh paket debian-archive-keyring.
# kunci arsip Debian yang dipercaya sistem ini
ls /etc/apt/trusted.gpg.d/ | head -n 5debian-archive-bookworm-automatic.asc
debian-archive-bookworm-security-automatic.asc
debian-archive-bookworm-stable.asc
debian-archive-bullseye-automatic.asc
debian-archive-bullseye-security-automatic.ascBidang Signed-By pada stanza kemudian menambatkan sumber tertentu kepada kunci tertentu, sehingga kunci tambahan tidak otomatis berlaku untuk semua sumber. Apabila tanda tangan tidak valid atau kuncinya tidak dikenal, apt menolak sumber tersebut dengan pesan error dan tidak melanjutkan pemasangan secara diam-diam. Kesimpulan praktisnya sederhana. Memasang sebuah kunci berarti mempercayai siapa pun yang memegang kunci privat pasangannya, sehingga keputusan itu layak diperlakukan seperti pemberian akses, bukan sekadar langkah teknis.
Kesalahan umum#
- Menyunting berkas sumber tanpa menjalankan
apt updatesesudahnya. Perubahan baru terbaca setelah indeks disegarkan, bukan pada saat berkas disimpan. - Mencampur suite dari rilis berbeda, misalnya bookworm bersama trixie, pada satu sistem. Versi pustaka antarrilis berbenturan dan pembaruan macet. Satu sistem mengikuti satu rilis.
- Mengaktifkan sumber yang sama dua kali, misalnya format lama di
/etc/apt/sources.listsekaligus format baru disources.list.d. apt mengeluarkan peringatan duplikat, dan salah satu dari keduanya perlu dihapus. - Mematikan verifikasi dengan opsi
[trusted=yes]hanya agar pesan error hilang. Yang hilang adalah jaminan integritasnya, bukan penyebab errornya. - Memasang kunci pihak ketiga tanpa memeriksa sidik jarinya dari saluran resmi pengelolanya. Kunci yang salah membuat seluruh rantai kepercayaan berlaku bagi pihak yang keliru.
Ringkasan#
- Repositori menyimpan arsip
.deb, indeks, dan berkasReleaseyang ditandatangani, dan apt hanya mengambil paket dari sumber yang terdaftar pada berkas sumbernya. - Berkas sumber format deb822 di
/etc/apt/sources.list.d/mendeklarasikanTypes,URIs,Suites,Components, danSigned-By, dengan format satu baris pada/etc/apt/sources.listsebagai padanan lamanya. - Suite menentukan lini rilis dan komponen menentukan cakupan lisensi, sedangkan PPA dan repositori vendor memperluas katalog di luar sumber resmi distro.
- Kepercayaan dibangun berlapis, yaitu tanda tangan
Release, checksum indeks, dan hash arsip, sehingga sumber tanpa tanda tangan yang valid ditolak apt.
Referensi#
- sources.list(5) — Ubuntu manpages — Format deb822, format satu baris, dan arti setiap bidang berkas sumber.
- apt-secure(8) — Ubuntu manpages — Rantai verifikasi tanda tangan dan checksum pada apt.
- Repositori Pihak Ketiga — Debian Wiki — Langkah aman menambahkan repositori pihak ketiga beserta kuncinya.
- add-apt-repository(1) — Ubuntu manpages — Menambah dan mencabut entri repositori, termasuk PPA Launchpad.