<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Manajemen_Paket_dan_Repositori_Debian</id>
	<title>Linux : Manajemen Paket dan Repositori Debian - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Manajemen_Paket_dan_Repositori_Debian"/>
	<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Manajemen_Paket_dan_Repositori_Debian&amp;action=history"/>
	<updated>2026-11-03T13:14:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Manajemen_Paket_dan_Repositori_Debian&amp;diff=1675&amp;oldid=prev</id>
		<title>Maintenance script: Protected &quot;Linux : Manajemen Paket dan Repositori Debian&quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Manajemen_Paket_dan_Repositori_Debian&amp;diff=1675&amp;oldid=prev"/>
		<updated>2026-11-02T07:03:26Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Linux_:_Manajemen_Paket_dan_Repositori_Debian&quot; title=&quot;Linux : Manajemen Paket dan Repositori Debian&quot;&gt;Linux : Manajemen Paket dan Repositori Debian&lt;/a&gt;&amp;quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:03, 2 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Manajemen_Paket_dan_Repositori_Debian&amp;diff=1674&amp;oldid=prev</id>
		<title>Maintenance script: Artikel baru: manajemen paket &amp; repositori Debian (Gaya Editorial v2)</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Manajemen_Paket_dan_Repositori_Debian&amp;diff=1674&amp;oldid=prev"/>
		<updated>2026-11-02T07:03:19Z</updated>

		<summary type="html">&lt;p&gt;Artikel baru: manajemen paket &amp;amp; repositori Debian (Gaya Editorial v2)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Kalau kamu pernah mengetik &amp;lt;code&amp;gt;apt install nginx&amp;lt;/code&amp;gt; lalu tiba-tiba ada belasan paket lain ikut terpasang, kamu baru saja memakai salah satu alat paling penting di Linux. Di Debian, alat inilah yang menjaga semua program di server tetap saling cocok versinya.&lt;br /&gt;
&lt;br /&gt;
Tanpa manajer paket, kamu harus menebak sendiri: library apa yang dibutuhkan, versi berapa, dan siapa yang harus dipasang lebih dulu. Artikel ini membedah cara Debian mengelola paket dan repositori, supaya kamu tidak lagi memasang sesuatu hanya karena &amp;quot;katanya jalan&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== 🎯 Tujuan ==&lt;br /&gt;
&lt;br /&gt;
Setelah membaca dan mempraktikkan artikel ini, kamu diharapkan bisa:&lt;br /&gt;
&lt;br /&gt;
* membedakan tugas &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; tanpa tertukar;&lt;br /&gt;
* membaca isi repositori Debian: suite, component, dan alamatnya;&lt;br /&gt;
* menjelaskan kenapa &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; wajib dijalankan sebelum &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt;;&lt;br /&gt;
* menentukan versi paket yang dipakai saat satu paket tersedia di dua repo;&lt;br /&gt;
* memulihkan server yang &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt;-nya macet tanpa memasang ulang sistem.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; semua perintah di artikel ini dijalankan sebagai root atau lewat &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;. Kalau kamu memakai VM latihan, ambil snapshot dulu — salah repo adalah kesalahan yang paling mahal untuk dipelajari tanpa cadangan.&lt;br /&gt;
&lt;br /&gt;
== 📍 Konteks nyata ==&lt;br /&gt;
&lt;br /&gt;
Bayangkan bengkel motor. Di gudang ada ribuan spare part yang tertata di rak, lengkap dengan katalog: nomor part, merek, dan motor apa saja yang cocok.&lt;br /&gt;
&lt;br /&gt;
Mekaniknya tidak menebak. Ia membuka katalog, mencari &amp;quot;kampas rem Vario 125&amp;quot;, lalu mengambil part yang nomornya cocok. Kalau part itu butuh baut khusus, katalog juga menyebutkan bautnya.&lt;br /&gt;
&lt;br /&gt;
Repositori Debian adalah gudang itu. Katalognya adalah daftar paket yang diunduh &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt;. Mekaniknya adalah &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; sendiri, dan yang benar-benar memasang part ke motor adalah &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; di lab TKJ sebuah SMK, siswa diminta memasang web server. Karena tutorial di internet menyebut versi PHP yang lebih baru, ia menambahkan repo &amp;lt;code&amp;gt;sid&amp;lt;/code&amp;gt; (unstable) ke server lab yang berjalan di stable. Satu perintah &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt; kemudian menarik &amp;lt;code&amp;gt;libc6&amp;lt;/code&amp;gt; dari unstable. Server tidak mau boot lagi, dan praktikum dua kelas tertunda dua hari. Pemulihannya bukan &amp;lt;code&amp;gt;apt remove&amp;lt;/code&amp;gt;, tapi memilih ulang versi lewat repositori dan pin.&lt;br /&gt;
&lt;br /&gt;
== 🧠 Konsep singkat ==&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Tiga lapis yang sering tertukar ===&lt;br /&gt;
&lt;br /&gt;
Banyak siswa mengira &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; adalah dua nama untuk hal yang sama. Padahal keduanya bekerja di lapis berbeda.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lapis !! Tugasnya !! Kalau lapis ini rusak&lt;br /&gt;
|-&lt;br /&gt;
| Repositori || menyimpan file &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; dan indeksnya || &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; gagal, paket tidak ditemukan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; || mengambil indeks, menghitung dependensi, mengunduh || resolusi versi salah, paket &amp;quot;held back&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; || membongkar &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; ke sistem dan mencatat status || paket &amp;quot;setengah terpasang&amp;quot;, &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; macet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jadi urutannya selalu: &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; menyiapkan bahan, &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; yang memasang. Saat kamu memakai &amp;lt;code&amp;gt;dpkg -i&amp;lt;/code&amp;gt; langsung, kamu melewati petugas dependensi — dan itu sumber sebagian besar masalah paket di server pemula.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Isi repositori: suite dan component ===&lt;br /&gt;
&lt;br /&gt;
Satu baris repo Debian punya tiga bagian: alamat, suite, dan component. Contohnya &amp;lt;code&amp;gt;deb http://deb.debian.org/debian bookworm main&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Suite&amp;#039;&amp;#039;&amp;#039; adalah rilisnya. Nama kode seperti &amp;lt;code&amp;gt;bookworm&amp;lt;/code&amp;gt; (Debian 12) atau &amp;lt;code&amp;gt;trixie&amp;lt;/code&amp;gt; (Debian 13) lebih aman dipakai daripada &amp;lt;code&amp;gt;stable&amp;lt;/code&amp;gt;, karena &amp;lt;code&amp;gt;stable&amp;lt;/code&amp;gt; ikut berpindah saat rilis baru keluar.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;bookworm&amp;#039;&amp;#039;&amp;#039; — paket inti rilis tersebut.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;bookworm-updates&amp;#039;&amp;#039;&amp;#039; — perbaikan bug yang tidak mendesak.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;bookworm-security&amp;#039;&amp;#039;&amp;#039; — patch keamanan. Ini yang paling penting untuk server.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;bookworm-backports&amp;#039;&amp;#039;&amp;#039; — paket versi lebih baru, tidak diaktifkan otomatis.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Component&amp;#039;&amp;#039;&amp;#039; menunjukkan status lisensi paketnya.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Component !! Isi !! Catatan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; || perangkat lunak bebas sepenuhnya || mayoritas paket server ada di sini&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contrib&amp;lt;/code&amp;gt; || bebas, tapi butuh paket non-bebas || contoh: driver yang butuh firmware&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;non-free&amp;lt;/code&amp;gt; || tidak bebas || lisensi membatasi penggunaan ulang&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;non-free-firmware&amp;lt;/code&amp;gt; || firmware biner || dipisah sejak Debian 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; indeks paket component &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; saja bisa mencapai 10–16 MB data terkompresi. Itu sebabnya &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; terasa lama di koneksi sekolah, padahal belum ada satu paket pun yang diunduh.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Kenapa harus apt update dulu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; tidak meng-upgrade apa pun. Tugasnya hanya menyegarkan katalog di &amp;lt;code&amp;gt;/var/lib/apt/lists/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Kalau kamu langsung menjalankan &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; memakai katalog terakhir yang tersimpan. Di server yang jarang dirawat, katalog itu bisa berumur berbulan-bulan.&lt;br /&gt;
&lt;br /&gt;
Akibatnya bukan error, tapi sesuatu yang lebih berbahaya: perintahnya sukses, hanya saja versi yang dipasang bukan versi terbaru. Patch keamanan tidak masuk, dan tidak ada pesan gagal yang bisa kamu baca.&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt; tidak pernah menghapus paket. Kalau sebuah paket butuh dependensi baru yang memaksa paket lain dicopot, &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; akan menahannya dan menulis &amp;quot;held back&amp;quot;. Jangan buru-buru pindah ke &amp;lt;code&amp;gt;full-upgrade&amp;lt;/code&amp;gt; sebelum tahu paket apa yang akan dicopot.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 deb822: format baru yang lebih rapi ===&lt;br /&gt;
&lt;br /&gt;
Sejak apt versi 1.1, Debian mengenal dua format sumber repo. Yang lama satu baris di &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;. Yang baru berbentuk blok dan disimpan sebagai file &amp;lt;code&amp;gt;.sources&amp;lt;/code&amp;gt; di &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Debian 12 ke atas memakai deb822 sebagai default. Bentuknya seperti ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: http://deb.debian.org/debian&lt;br /&gt;
Suites: bookworm bookworm-updates&lt;br /&gt;
Components: main&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bedanya dengan format lama: nilai dipisah spasi, bukan koma; dan setiap sumber punya blok sendiri. Untuk mematikan satu sumber, cukup tambahkan &amp;lt;code&amp;gt;Enabled: no&amp;lt;/code&amp;gt; — tidak perlu menghapus barisnya.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; nama file di &amp;lt;code&amp;gt;sources.list.d/&amp;lt;/code&amp;gt; hanya boleh berisi huruf, angka, garis bawah, strip, dan titik. File dengan nama lain akan diabaikan &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; dengan pesan notice — sering tidak terbaca karena terlewat di antara output panjang.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Prioritas: siapa menang kalau paket ada di dua repo ===&lt;br /&gt;
&lt;br /&gt;
Ini bagian yang paling jarang diajarkan, padahal paling sering menyakitkan. Kalau paket yang sama tersedia di dua repositori, &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; memilih berdasarkan prioritas, bukan berdasarkan urutan baris.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Prioritas !! Arti&lt;br /&gt;
|-&lt;br /&gt;
| kurang dari 0 || tidak akan pernah dipasang&lt;br /&gt;
|-&lt;br /&gt;
| 1–99 || hanya jika belum ada versi lain terpasang&lt;br /&gt;
|-&lt;br /&gt;
| 100–499 || hanya jika tidak ada versi lebih baru&lt;br /&gt;
|-&lt;br /&gt;
| 500–989 || hanya jika tidak ada versi lebih baru di rilis target&lt;br /&gt;
|-&lt;br /&gt;
| 990–1000 || dipasang, kecuali versi terpasang lebih baru&lt;br /&gt;
|-&lt;br /&gt;
| di atas 1000 || selalu dipasang, boleh menurunkan versi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nilai bawaannya: versi yang sudah terpasang 100, versi yang belum terpasang 500, dan rilis target 990. Artinya repo pihak ketiga dengan versi lebih tinggi bisa menang tanpa kamu sadari.&lt;br /&gt;
&lt;br /&gt;
🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;apt-cache policy nama-paket&amp;lt;/code&amp;gt; menampilkan semua kandidat versi beserta prioritas dan asal repo. Kalau muncul dua kandidat, baca kolom prioritas sebelum mengetik &amp;lt;code&amp;gt;apt install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Hold: menyimpan versi yang sudah terbukti ===&lt;br /&gt;
&lt;br /&gt;
Kadang kamu tidak ingin sebuah paket ikut naik versi. Contohnya kernel yang drivernya sudah terbukti stabil, atau aplikasi produksi yang hanya diuji di versi tertentu.&lt;br /&gt;
&lt;br /&gt;
Perintahnya &amp;lt;code&amp;gt;apt-mark hold nama-paket&amp;lt;/code&amp;gt;. Untuk melihat daftar yang ditahan, &amp;lt;code&amp;gt;apt-mark showhold&amp;lt;/code&amp;gt;. Untuk melepas, &amp;lt;code&amp;gt;apt-mark unhold nama-paket&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Efek sampingnya: paket yang ditahan akan muncul sebagai &amp;quot;held back&amp;quot; setiap kali kamu upgrade. Kalau daftarnya panjang, biasanya ada dependensi yang ikut tertahan — bukan hanya satu paket.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Dari .deb lepas sampai paket setengah terpasang ===&lt;br /&gt;
&lt;br /&gt;
File &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; adalah paket mentah: arsip berisi file program plus metadata dependensi. &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; bisa memasangnya, tapi ia tidak mengunduh dependensi.&lt;br /&gt;
&lt;br /&gt;
Kalau dependensi tidak ada, status paket menjadi &amp;lt;code&amp;gt;iU&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;iF&amp;lt;/code&amp;gt; di &amp;lt;code&amp;gt;dpkg -l&amp;lt;/code&amp;gt;: terpasang, tapi belum terkonfigurasi. Selama statusnya begitu, paket lain yang bergantung padanya ikut tertahan.&lt;br /&gt;
&lt;br /&gt;
Perbaikannya bukan &amp;lt;code&amp;gt;dpkg -i&amp;lt;/code&amp;gt; ulang, tapi menyuruh &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; melengkapi yang kurang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt --fix-broken install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🧩 Istilah penting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Istilah !! Arti singkat !! Analogi&lt;br /&gt;
|-&lt;br /&gt;
| Paket || satu unit program siap pasang || satu kotak spare part&lt;br /&gt;
|-&lt;br /&gt;
| Dependensi || paket lain yang wajib ada || baut yang wajib ikut kampas rem&lt;br /&gt;
|-&lt;br /&gt;
| Repositori || kumpulan paket + indeks || gudang spare part&lt;br /&gt;
|-&lt;br /&gt;
| Indeks || daftar isi paket yang diunduh || katalog gudang&lt;br /&gt;
|-&lt;br /&gt;
| Suite || nama rilis repo || edisi katalog tahun tertentu&lt;br /&gt;
|-&lt;br /&gt;
| Component || kelompok lisensi dalam suite || rak berdasarkan merek&lt;br /&gt;
|-&lt;br /&gt;
| Pin || aturan prioritas versi || siapa yang didahulukan saat stok dobel&lt;br /&gt;
|-&lt;br /&gt;
| Hold || versi dikunci || part yang tidak boleh diganti&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; || format paket Debian || kotak partnya&lt;br /&gt;
|-&lt;br /&gt;
| Meta-paket || paket yang isinya hanya daftar dependensi || paket bundling&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🔧 Praktik: Manajemen Paket dan Repositori Debian ==&lt;br /&gt;
&lt;br /&gt;
Praktik ini memakai satu VM Debian. Kalau belum punya, kamu bisa memakai &amp;lt;code&amp;gt;debian:12&amp;lt;/code&amp;gt; di container — perintahnya sama, hanya saja tidak ada systemd.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 1: baca identitas sistem ===&lt;br /&gt;
&lt;br /&gt;
Sebelum menyentuh repo, pastikan kamu tahu sistem apa yang sedang dipegang.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat /etc/os-release&lt;br /&gt;
uname -m&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yang kamu cari: &amp;lt;code&amp;gt;VERSION_CODENAME&amp;lt;/code&amp;gt; dan arsitektur. Repo untuk &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; tidak sama isinya dengan &amp;lt;code&amp;gt;amd64&amp;lt;/code&amp;gt;, dan mencampurnya adalah cara cepat merusak sistem.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 2: periksa sumber repo yang aktif ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls -l /etc/apt/sources.list /etc/apt/sources.list.d/&lt;br /&gt;
grep -rhE &amp;#039;^(deb|URIs)&amp;#039; /etc/apt/sources.list /etc/apt/sources.list.d/ 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Baca hasilnya dengan tiga pertanyaan: suite-nya apa, component-nya apa, dan apakah ada alamat yang tidak kamu kenali. Satu baris asing di sini adalah temuan yang harus dijelaskan sebelum upgrade apa pun.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 3: segarkan indeks lalu baca kandidat ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
apt list --upgradable&lt;br /&gt;
apt-cache policy openssh-server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhatikan jumlah paket yang bisa di-upgrade dan asal repo masing-masing. Kalau &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; berhenti dengan pesan &amp;lt;code&amp;gt;GPG error&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;404&amp;lt;/code&amp;gt;, jangan lanjut — perbaiki sumbernya dulu.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 4: pasang, lacak asal file, lalu hapus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install nginx -y&lt;br /&gt;
dpkg -S /usr/sbin/nginx&lt;br /&gt;
dpkg -L nginx-core | head&lt;br /&gt;
sudo apt remove nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dpkg -S&amp;lt;/code&amp;gt; menjawab &amp;quot;file ini milik paket apa&amp;quot;, &amp;lt;code&amp;gt;dpkg -L&amp;lt;/code&amp;gt; sebaliknya: &amp;quot;paket ini menaruh file di mana&amp;quot;. Dua perintah ini yang membedakan admin yang menebak dan yang tahu.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;apt remove&amp;lt;/code&amp;gt; menyisakan file konfigurasi. Pakai &amp;lt;code&amp;gt;apt purge&amp;lt;/code&amp;gt; kalau kamu memang ingin bersih total — misalnya saat mengulang praktik dari nol.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 5: tahan versi dan bersihkan cache ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-mark hold nginx&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
sudo apt-mark unhold nginx&lt;br /&gt;
sudo apt autoremove --purge&lt;br /&gt;
sudo apt clean&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cache unduhan disimpan di &amp;lt;code&amp;gt;/var/cache/apt/archives/&amp;lt;/code&amp;gt;. Di VM lab yang disknya kecil, folder ini bisa jadi penyebab &amp;quot;disk penuh&amp;quot; yang tidak disangka.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 6: pulihkan dpkg yang macet ===&lt;br /&gt;
&lt;br /&gt;
Gejalanya khas: setiap perintah &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; menolak jalan dan menyuruh menyelesaikan &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; dulu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg --configure -a&lt;br /&gt;
sudo apt --fix-broken install&lt;br /&gt;
sudo apt install -f&lt;br /&gt;
dpkg -l | grep -v &amp;#039;^ii&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Baris terakhir adalah pemeriksa paling jujur: paket dengan status selain &amp;lt;code&amp;gt;ii&amp;lt;/code&amp;gt; berarti belum beres, walau &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; sudah tidak protes.&lt;br /&gt;
&lt;br /&gt;
== 🏭 Dipakai di dunia kerja ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sekolah/lab TKJ:&amp;#039;&amp;#039;&amp;#039; satu server dipakai bergantian oleh beberapa kelas. Tanpa disiplin repo, satu siswa yang menambah repo unstable bisa menjatuhkan server untuk semua kelas.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kantor cabang:&amp;#039;&amp;#039;&amp;#039; server file dan aplikasi internal di-update bulanan. Admin perlu tahu paket mana yang ditahan, supaya laporan &amp;quot;sudah di-update&amp;quot; tidak menutupi patch yang sebenarnya belum masuk.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hosting/ISP kecil:&amp;#039;&amp;#039;&amp;#039; satu mesin melayani puluhan domain. Upgrade yang menarik dependensi tak terduga bisa mematikan banyak layanan sekaligus, jadi urutan update dan snapshot menjadi standar kerja.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Industri/manufaktur:&amp;#039;&amp;#039;&amp;#039; mesin HMI dan gateway produksi sering dikunci versinya karena sudah lolos uji. &amp;lt;code&amp;gt;apt-mark hold&amp;lt;/code&amp;gt; di sini bukan kemalasan, tapi bagian dari prosedur keselamatan.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Rumah sakit/klinik:&amp;#039;&amp;#039;&amp;#039; aplikasi rekam medis tidak boleh berubah versi tanpa uji. Repo dikunci, dan patch keamanan masuk lewat jadwal pemeliharaan.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cloud/VPS:&amp;#039;&amp;#039;&amp;#039; image dasar dibangun ulang, bukan ditambal. Manajemen paket dipakai saat membangun image, bukan saat mesin sudah melayani pengguna.&lt;br /&gt;
&lt;br /&gt;
== ✅ Verifikasi ==&lt;br /&gt;
&lt;br /&gt;
Jalankan berurutan setelah praktik. Semua harus memberi hasil yang diharapkan.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Perintah !! Hasil yang diharapkan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt; || berakhir tanpa &amp;lt;code&amp;gt;GPG error&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;404&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apt-cache policy nginx&amp;lt;/code&amp;gt; || satu kandidat jelas, prioritas terbaca&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apt-mark showhold&amp;lt;/code&amp;gt; || hanya paket yang sengaja kamu tahan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dpkg -l &amp;amp;#124; grep -vc &amp;#039;^ii&amp;#039;&amp;lt;/code&amp;gt; || tidak ada paket berstatus aneh&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dpkg -S /usr/sbin/nginx&amp;lt;/code&amp;gt; || menyebut nama paket pemilik file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apt list --upgradable&amp;lt;/code&amp;gt; || daftar paket, bukan &amp;quot;held back&amp;quot; yang tak dijelaskan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; jalankan &amp;lt;code&amp;gt;apt-get check&amp;lt;/code&amp;gt;. Kalau keluarannya hanya &amp;quot;Reading package lists&amp;quot; tanpa error, struktur dependensi sistemmu sedang sehat.&lt;br /&gt;
&lt;br /&gt;
== ⚠️ Kesalahan umum &amp;amp; troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Gejala !! Penyebab !! Perbaikan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Unable to locate package&amp;lt;/code&amp;gt; || indeks belum disegarkan atau repo mati || &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;, cek alamat repo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GPG error: NO_PUBKEY&amp;lt;/code&amp;gt; || kunci repo pihak ketiga belum ada || impor kunci resmi ke &amp;lt;code&amp;gt;/usr/share/keyrings&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;404 Not Found&amp;lt;/code&amp;gt; pada suite || suite sudah pindah (mis. rilis lama) || pakai &amp;lt;code&amp;gt;archive.debian.org&amp;lt;/code&amp;gt; atau ganti codename&lt;br /&gt;
|-&lt;br /&gt;
| Paket &amp;quot;held back&amp;quot; banyak || ada hold atau pin yang menahan || &amp;lt;code&amp;gt;apt-cache policy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;apt-mark showhold&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; minta diselesaikan || paket setengah terpasang || &amp;lt;code&amp;gt;dpkg --configure -a&amp;lt;/code&amp;gt; lalu &amp;lt;code&amp;gt;apt -f install&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| File hilang setelah upgrade || paket digantikan paket lain || &amp;lt;code&amp;gt;dpkg -S&amp;lt;/code&amp;gt; pada path lama&lt;br /&gt;
|-&lt;br /&gt;
| Disk &amp;lt;code&amp;gt;/var&amp;lt;/code&amp;gt; penuh || cache dan indeks menumpuk || &amp;lt;code&amp;gt;apt clean&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;apt autoremove --purge&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Dua versi terpasang || pemasangan &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; manual || &amp;lt;code&amp;gt;dpkg -l&amp;lt;/code&amp;gt;, pasang lewat &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; jangan menyalin baris repo dari blog tanpa membaca suite-nya. Satu kata &amp;lt;code&amp;gt;sid&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;testing&amp;lt;/code&amp;gt; di server produksi bisa mengubah seluruh sistem pada upgrade berikutnya — dan efeknya baru terasa saat reboot.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; tidak akan menurunkan versi paket kecuali prioritasnya di atas 1000 atau kamu memintanya eksplisit, misalnya &amp;lt;code&amp;gt;apt install nginx=1.22.1-9&amp;lt;/code&amp;gt;. Ini yang membuat &amp;quot;kembali ke versi lama&amp;quot; terasa tidak bisa, padahal bisa.&lt;br /&gt;
&lt;br /&gt;
🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; sebuah kantor distributor memakai repo pihak ketiga untuk mendapatkan versi Nginx lebih baru. Setahun kemudian upgrade rutin menarik versi terbaru dari repo itu, yang mengubah lokasi file konfigurasi. Situs internal mati pagi hari, dan tim menuduh jaringan. Penyebab sebenarnya terlihat dari satu baris: paket berasal dari repo yang prioritasnya tidak pernah diatur. Perbaikannya adalah pin ke repo resmi distro, lalu menguji ulang konfigurasi.&lt;br /&gt;
&lt;br /&gt;
== 🔐 Catatan keamanan &amp;amp; etika ==&lt;br /&gt;
&lt;br /&gt;
Menambahkan repositori berarti memberi hak menjalankan kode sebagai root kepada pemilik repo tersebut. Tidak ada pemeriksaan tambahan setelah paketnya lolos verifikasi tanda tangan.&lt;br /&gt;
&lt;br /&gt;
* Verifikasi terjadi lewat kunci GPG. Jangan sekali-kali memakai &amp;lt;code&amp;gt;trusted=yes&amp;lt;/code&amp;gt; hanya agar error hilang.&lt;br /&gt;
* Simpan kunci pihak ketiga di &amp;lt;code&amp;gt;/usr/share/keyrings/&amp;lt;/code&amp;gt; dan rujuk lewat &amp;lt;code&amp;gt;Signed-By&amp;lt;/code&amp;gt;, jangan menaruhnya di direktori yang bisa ditulis user biasa.&lt;br /&gt;
* Repo resmi Debian ditandatangani; unduhan lewat HTTP tetap terverifikasi isinya, tapi HTTPS mengurangi risiko pengalihan.&lt;br /&gt;
* Patch keamanan hanya masuk kalau suite &amp;lt;code&amp;gt;-security&amp;lt;/code&amp;gt; aktif. Server tanpa repo security bisa tampak rapi, padahal celah yang sudah publik belum ditutup.&lt;br /&gt;
* Jangan memasang &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; dari sumber tidak jelas di mesin yang memegang data siswa atau pasien.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; sebelum upgrade besar, catat keadaan sekarang: &amp;lt;code&amp;gt;dpkg --get-selections &amp;amp;gt; paket-sebelum.txt&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;apt-mark showhold&amp;lt;/code&amp;gt;. Dua file kecil ini sering menyelamatkan waktu berjam-jam saat harus mengembalikan kondisi.&lt;br /&gt;
&lt;br /&gt;
== 📌 Kesimpulan ==&lt;br /&gt;
&lt;br /&gt;
Manajemen paket di Debian bukan soal hafal perintah, tapi soal tahu lapis mana yang sedang bekerja. Repositori menyimpan, indeks mencatat, &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt; memilih, dan &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; memasang.&lt;br /&gt;
&lt;br /&gt;
Kalau kamu memahami suite, component, dan prioritas, hampir semua masalah paket bisa dijelaskan sebelum menjadi insiden. Dan kalau &amp;lt;code&amp;gt;dpkg&amp;lt;/code&amp;gt; macet, kamu tahu harus ke mana — bukan memasang ulang sistem.&lt;br /&gt;
&lt;br /&gt;
Langkah berikutnya: buka &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; di server latihanmu, baca satu per satu isinya, lalu jelaskan ke temanmu asal setiap repo itu.&lt;br /&gt;
&lt;br /&gt;
== 🔗 Materi terkait ==&lt;br /&gt;
&lt;br /&gt;
* [[Menambahkan Repositori Debian Linux]] — praktik menulis isi &amp;lt;code&amp;gt;sources.list&amp;lt;/code&amp;gt; dari nol.&lt;br /&gt;
* [[Shell Scripting : Menambahkan Repositori Debian]] — versi otomatis untuk banyak mesin.&lt;br /&gt;
* [[Linux : Perintah Dasar Linux]] — bekal navigasi file sebelum mengurus paket.&lt;br /&gt;
* [[Linux : Cek Penggunaan Disk]] — penting saat &amp;lt;code&amp;gt;/var&amp;lt;/code&amp;gt; mulai penuh karena cache.&lt;br /&gt;
* [[Debian : Konfigurasi Web Server (Nginx)]] — layanan yang paling sering dipasang lewat &amp;lt;code&amp;gt;apt&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [[Linux : Cron Job]] — jadwalkan update terjadwal dengan aman.&lt;br /&gt;
&lt;br /&gt;
== 📚 Referensi ==&lt;br /&gt;
&lt;br /&gt;
* Debian Handbook, bagian 6.2 &amp;quot;aptitude, apt-get, and apt Commands&amp;quot; — https://www.debian.org/doc/manuals/debian-handbook/sect.apt-get.en.html&lt;br /&gt;
* Manual &amp;lt;code&amp;gt;sources.list(5)&amp;lt;/code&amp;gt; Debian bookworm — https://manpages.debian.org/bookworm/apt/sources.list.5.en.html&lt;br /&gt;
* Manual &amp;lt;code&amp;gt;apt-get(8)&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;apt-mark(8)&amp;lt;/code&amp;gt; — https://manpages.debian.org/bookworm/apt/&lt;br /&gt;
* Manual &amp;lt;code&amp;gt;dpkg(1)&amp;lt;/code&amp;gt; — https://manpages.debian.org/bookworm/dpkg/dpkg.1.en.html&lt;br /&gt;
* Debian Wiki, &amp;quot;DebianRepository/Format&amp;quot; — https://wiki.debian.org/DebianRepository/Format&lt;br /&gt;
&lt;br /&gt;
[[Category:TKJ]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Debian]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>