Bab 2. Manajemen paket Debian

# Bab 2. Manajemen paket Debian

| Catatan
Bab ini ditulis dengan asumsi rilis stabil terbaru adalah nama kode: `trixie`. Sumber data dari sistem APT secara kolektif diacu sebagai daftar sumber dalam dokumen ini. Ini dapat didefinisikan di mana saja dalam berkas "`/etc/apt/sources.list`", berkas-berkas "`/etc/apt/sources.list.d/*.list`", atau berkas-berkas "`/etc/apt/sources.list.d/*.sources`".

## 2.1. Prasyarat manajemen paket Debian

### 2.1.1. Sistem manajemen paket Debian

Debian adalah organisasi sukarelawan yang membangun distribusi yang konsisten dari paket biner perangkat lunak bebas yang diprakompilasi dan mendistribusikan mereka dari arsipnya.

Arsip Debian ditawarkan oleh banyak situs cermin jarak jauh untuk akses melalui metode HTTP dan FTP. Ini juga tersedia sebagai CD-ROM/DVD.

Sistem manajemen paket Debian saat ini yang dapat memanfaatkan semua sumber daya ini adalah Advanced Packaging Tool (APT).

Sistem manajemen paket Debian, bila digunakan dengan benar, menawarkan pengguna untuk memasang set paket biner yang konsisten ke sistem dari arsip. Saat ini, ada 77003 paket yang tersedia untuk arsitektur amd64.

Sistem manajemen paket Debian memiliki sejarah yang kaya dan banyak pilihan untuk front end program pengguna dan metode akses arsip back end yang akan digunakan. Saat ini, kami merekomendasikan hal-hal berikut.

- apt(8) untuk semua operasi baris perintah interaktif, termasuk instalasi paket, penghapusan, dan dist-upgrade.

- apt-get(8) untuk memanggil sistem manajemen paket Debian dari skrip. Ini juga merupakan pilihan fallback ketika `apt` tidak tersedia (sering dengan sistem Debian yang lebih tua).

- aptitude(8) bagi antarmuka teks interaktif untuk mengelola paket yang dipasang dan untuk mencari paket yang tersedia.

Tabel 2.1. Daftar alat manajemen paket Debian

paket | popcon | ukuran | deskripsi
--- | --- | --- | ---
`dpkg` | V:905, I:1000 | 6399 | sistem manajemen paket tingkat rendah untuk Debian (berbasis berkas)
`apt` | V:896, I:1000 | 4682 | Front-end APT untuk mengelola paket dengan CLI: `apt`/`apt-get`/`apt-cache`
`aptitude` | V:34, I:172 | 4621 | Front-end APT untuk mengelola paket secara interaktif dengan konsol layar penuh: aptitude(8)
`tasksel` | V:37, I:984 | 346 | Front-end APT untuk memasang tugas yang dipilih: tasksel(8)
`unattended-upgrades` | V:128, I:183 | 317 | paket peningkatan bagi APT untuk mengaktifkan instalasi otomatis peningkatan keamanan
`gnome-software` | V:160, I:262 | 4715 | Pusat Perangkat Lunak untuk GNOME (front-end APT GUI)
`synaptic` | V:32, I:281 | 7788 | manajer paket grafis (front-end APT GTK)
`apt-utils` | V:417, I:998 | 1139 | Program utilitas APT: apt-extracttemplates(1), apt-ftparchive(1), dan apt-sortpkgs(1)
`apt-listchanges` | V:400, I:891 | 563 | alat pemberitahuan riwayat perubahan paket
`apt-listbugs` | V:5.2, I:7.1 | 512 | menampilkan daftar bug kritis sebelum setiap instalasi APT
`apt-file` | V:15, I:55 | 89 | Utilitas pencarian paket APT — antarmuka baris perintah
`apt-rdepends` | V:0.4, I:4.5 | 39 | mencantumkan dependensi paket secara rekursif

### 2.1.2. Konfigurasi paket

Berikut adalah beberapa poin penting untuk konfigurasi paket pada sistem Debian.

- Untuk lingkungan Desktop modern, mem-boot ulang sistem setelah perubahan konfigurasi paket dan peningkatan paket adalah ide yang baik untuk memastikan bahwa sistem berfungsi secara benar.

- Konfigurasi manual oleh administrator sistem dihormati. Dengan kata lain, sistem konfigurasi paket tidak membuat konfigurasi yang mengganggu demi kenyamanan.

- Setiap paket dilengkapi dengan skrip konfigurasi sendiri dengan antarmuka pengguna standar yang disebut debconf(7) untuk membantu proses instalasi awal paket.

- Para Pengembang Debian mencoba yang terbaik untuk membuat pengalaman peningkatan Anda sempurna dengan skrip konfigurasi paket.

- Fungsionalitas penuh perangkat lunak yang dikemas tersedia untuk administrator sistem. Tetapi yang memiliki risiko keamanan dinonaktifkan dalam instalasi baku.

- Jika Anda mengaktifkan layanan secara manual dengan beberapa risiko keamanan, Anda bertanggung jawab atas pengurungan (containment) risiko.

- Konfigurasi esoterik dapat diaktifkan secara manual oleh administrator sistem. Hal ini dapat membuat gangguan dengan program pembantu generik populer untuk konfigurasi sistem.

### 2.1.3. Tindakan pencegahan dasar

| Awas
Jangan menginstall paket dari campuran acak keluarga. Ini mungkin merusak konsistensi paket yang membutuhkan pengetahuan manajemen sistem yang mendalam, seperti ABI kompiler, versi pustaka, fitur interpreter, dll.

Administrator sistem Debian pemula harus tetap memakai rilis Debian `stable` sambil hanya menerapkan pembaruan keamanan. Sampai Anda memahami sistem Debian dengan sangat baik, Anda mesti mengikuti pencegahan berikut.

- Jangan sertakan `testing` atau `unstable` dalam daftar sumber.

- Jangan mencampur Debian standar dengan arsip non-Debian lainnya seperti Ubuntu di daftar sumber.

- Jangan membuat "`/etc/apt/preferences`".

- Jangan mengubah perilaku baku alat manajemen paket melalui berkas konfigurasi tanpa mengetahui dampak penuhnya.

- Jangan memasang paket acak dengan "`dpkg -i paket_acak`".

- Jangan pernah memasang paket acak dengan "`dpkg --force-all -i random_package`".

- Jangan menghapus atau mengubah berkas di "`/var/lib/dpkg/`".

- Jangan menimpa sistem berkas dengan memasang program perangkat lunak yang langsung dikompilasi dari sumber.

  - Pasang mereka ke dalam "`/usr/local`" atau "`opt`", jika diperlukan.

Efek tidak kompatibel yang disebabkan oleh tindakan pencegahan di atas pada sistem manajemen paket Debian dapat menyebabkan sistem Anda tidak bisa dipakai.

Administrator sistem Debian yang serius yang menjalankan server-server dengan misi penting, harus menerapkan tindakan pencegahan ekstra.

- Jangan memasang paket apa pun termasuk pembaruan keamanan dari Debian tanpa mengujinya secara menyeluruh dengan konfigurasi khusus Anda dalam kondisi aman.

  - Anda sebagai administrator sistem bertanggung jawab atas sistem Anda pada akhirnya.

  - Sejarah stabilitas panjang sistem Debian bukanlah jaminan dengan sendirinya.

### 2.1.4. Hidup dengan peningkatan abadi

| Perhatian
Untuk server produksi Anda, disarankan keluarga `stable` dengan pembaruan keamanan. Hal yang sama dapat dikatakan untuk PC desktop di mana Anda dapat menghabiskan upaya administrasi yang terbatas.

Terlepas dari peringatan saya di atas, saya tahu banyak pembaca dokumen ini mungkin ingin menjalankan keluarga `testing` atau `unstable` yang lebih baru.

Enlightenment dengan yang berikut menyelamatkan seseorang dari perjuangan karma abadi atas neraka peningkatan dan membiarkan dia mencapai sorga Debian.

Daftar ini ditargetkan untuk lingkungan Desktop yang dikelola sendiri.

- Gunakan keluarga `testing` karena praktis itu adalah rilis bergulir yang secara otomatis dikelola oleh infrastruktur QA arsip Debian seperti integrasi berkelanjutan Debian, praktik hanya mengunggah sumber, dan pelacakan transisi pustaka. Paket-paket di keluarga `testing` diperbarui cukup sering untuk menawarkan semua fitur terbaru.

- Mengatur nama kode yang sesuai dengan keluarga `testing` ("`forky`" selama `trixie` sebagai siklus rilis `stable`) dalam daftar sumber.

- Perbarui nama kode ini secara manual di "daftar sumber" ke yang baru hanya setelah menilai situasi sendiri selama sekitar satu bulan setelah rilis keluarga mayor. Milis pengguna Debian dan pengembang adalah sumber informasi yang baik untuk ini juga.

Penggunaan keluarga `unstable` tidak dianjurkan. Keluarga `unstable` baik untuk debugging paket sebagai pengembang tetapi cenderung mengekspos Anda untuk risiko yang tidak perlu untuk penggunaan Desktop normal. Meskipun keluarga sistem Debian `unstable` terlihat sangat stabil untuk sebagian besar waktu, ada beberapa masalah paket dan beberapa di antaranya tidak begitu sepele untuk diselesaikan.

Berikut adalah beberapa ide tindakan pencegahan dasar untuk memastikan pemulihan cepat dan mudah dari bug dalam paket Debian.

- Jadikan sistem penyelamat tersedia dengan mengikuti Bagian 3.2, “Sistem penyelamat”.

- Buat sistem boot ganda dengan memasang sistem Debian keluarga `stable` ke partisi lain

- Pertimbangkan untuk memasang `apt-listbugs` untuk memeriksa informasi Debian Bug Tracking System (BTS) sebelum peningkatan

- Pelajari infrastruktur sistem paket yang cukup untuk mengatasi masalah

| Perhatian
Jika Anda tidak dapat melakukan salah satu dari tindakan pencegahan ini, Anda mungkin tidak siap untuk keluarga `testing` dan `unstable`.

### 2.1.5. Dasar-dasar arsip Debian

| Tip
Kebijakan resmi arsip Debian didefinisikan di Manual Kebijakan Debian, Bab 2 - Arsip Debian.

Mari kita lihat arsip Debian dari perspektif pengguna sistem.

Untuk pengguna sistem, arsip Debian diakses menggunakan sistem APT.

Sistem APT menentukan sumber datanya sebagai daftar sumber dan itu dijelaskan dalam sources.list(5).

Untuk sistem `trixie` dengan akses HTTP biasa, daftar sumber disediakan dalam gaya deb822 modern di "`/etc/apt/sources.list.d/debian.sources`" sebagai berikut:

    Types: deb deb-src
    URIs: http://deb.debian.org/debian/
    Suites: trixie
    Components: main non-free-firmware contrib non-free

    Types: deb deb-src
    URIs: http://security.debian.org/debian-security/
    Suites: trixie-security
    Components: main non-free-firmware contrib non-free

| Tip

Jika daftar sumber disediakan dalam gaya satu baris lama yang sudah usang di berkas "`/etc/apt/sources.list`" atau "`/etc/apt/sources.list.d/*.list`", perbarui dengan:

     $ sudo apt modernize-sources

Poin-poin utama dari daftar sumber dalam gaya deb822 adalah sebagai berikut.

- Berkas definisinya ada dalam berkas-berkas "`/etc/apt/sources.list.d/*.sources`".

- Setiap blok baris dipisahkan oleh satu baris kosong mendefinisikan sumber data untuk sistem APT.

- Bait "`Types:`" mendefinisikan daftar jenis seperti "`deb`" dan "`deb-src`".

- Bait "`URIs:`" mendefinisikan daftar akar URIs dari arsip Debian.

- Bait "`Suites:`" mendefinisikan daftar nama distribusi menggunakan nama keluarga atau nama kode.

- Bait "`Components:`" mendefinisikan daftar nama wilayah arsip yang valid dari arsip Debian.

Definisi untuk "`deb-src`" dapat dengan aman dihilangkan jika itu hanya untuk `aptitude` yang tidak mengakses sumber data meta terkait. Ini mempercepat pembaruan data meta arsip.

URL bisa berupa "`https://`", "`http://`", "`ftp://`", "`file://`", ....

Baris yang diawali dengan "`#`" adalah komentar dan diabaikan.

Di sini, saya cenderung menggunakan nama kode "`trixie`" atau "`forky`" bukan nama keluarga "`stable`" atau "`testing`" untuk menghindari kejutan ketika `stable` dirilis.

| Tip
Jika "`sid`" digunakan dalam contoh di atas, bukan "`trixie`", baris "`deb: http://security.debian.org/ ...` " atau konten deb822 yang setara untuk pembaruan keamanan dalam daftar sumber tidak diperlukan. Ini karena tidak ada arsip pembaruan keamanan untuk "`sid`" (`unstable`).

Berikut adalah daftar URL situs arsip Debian dan nama keluarga atau nama kode yang digunakan dalam berkas konfigurasi setelah rilis `trixie`.

Tabel 2.2. Daftar situs arsip Debian

URL arsip | nama keluarga | nama kode | tujuan repositori
--- | --- | --- | ---
http://deb.debian.org/debian/ | `stable` | `trixie` | Rilis `stable` kuasi-statik setelah pemeriksaan yang ekstensif
http://deb.debian.org/debian/ | `testing` | `forky` | Rilis `testing` dinamis setelah pemeriksaan yang layak dan menunggu singkat
http://deb.debian.org/debian/ | `unstable` | `sid` | Rilis `unstable` dinamis setelah pemeriksaan minimum dan tanpa menunggu
http://deb.debian.org/debian/ | `experimental` | T/T | Eksperimen pra-rilis oleh para pengembang (opsional, hanya untuk pengembang)
http://deb.debian.org/debian/ | `stable-proposed-updates` | `trixie-proposed-updates` | Pembaruan untuk rilis titik `stable` berikutnya (opsional)
http://deb.debian.org/debian/ | `stable-updates` | `trixie-updates` | Subset dari keluarga `stable-proposed-updates` yang memerlukan pembaruan segera seperti misalnya data zona waktu (opsional)
http://deb.debian.org/debian/ | `stable-backports` | `trixie-backports` | Koleksi acak dari paket yang dikompilasi ulang kebanyakan dari rilis `testing` (opsional)
http://security.debian.org/debian-security/ | `stable-security` | `trixie-security` | Pembaruan keamanan bagi rilis `stable` (penting)
http://security.debian.org/debian-security/ | `testing-security` | `forky-security` | Ini tidak didukung secara aktif maupun dipakai oleh tim keamanan

| Perhatian

Hanya rilis `stable` murni dengan pembaruan keamanan yang memberikan stabilitas terbaik. Menjalankan sebagian besar rilis `stable` dicampur dengan beberapa paket dari `testing` atau rilis `unstable` lebih berrisiko daripada menjalankan rilis murni `unstable` untuk ketidakcocokan versi pustaka dll. Jika Anda benar-benar memerlukan versi terbaru dari beberapa program di bawah rilis `stable` silakan gunakan paket dari layanan stable-updates dan backports (lihat Bagian 2.7.4, “Pembaruan dan Backport”). Layanan ini harus digunakan dengan ekstra hati-hati.

| Perhatian

Anda pada dasarnya harus mencantumkan hanya satu keluarga `stable`, `testing`, atau `unstable` di baris "`deb`". Jika Anda mencantumkan kombinasi keluarga `stable`, `testing`, dan `unstable` di baris "`deb`", program APT melambat sementara hanya arsip terbaru yang efektif. Beberapa daftar masuk akal untuk ini ketika berkas "`/etc/apt/preferences`" digunakan dengan tujuan yang jelas (lihat Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning”).

| Tip
Untuk sistem Debian dengan keluarga `stable`, adalah ide yang baik untuk memasukkan baris dengan "`http://security.debian.org/`" dalam "daftar sumber" untuk mengaktifkan pembaruan keamanan seperti pada contoh di atas.

| Catatan

Bug keamanan untuk arsip `stable` diperbaiki oleh tim keamanan Debian. Kegiatan ini cukup ketat dan dapat diandalkan. Untuk arsip `testing` mungkin diperbaiki oleh tim keamanan testing Debian. Untuk beberapa alasan, kegiatan ini tidak seketat itu untuk `stable` dan Anda mungkin perlu menunggu migrasi paket `unstable` yang diperbaiki ke arsip `testing`. Untuk arsip `unstable` diperbaiki oleh pengelola individu. Paket-paket `unstable` yang dipelihara secara aktif biasanya dalam kondisi yang cukup baik dengan memanfaatkan perbaikan keamanan hulu terbaru. Lihat FAQ keamanan Debian untuk cara Debian menangani bug-bug keamanan.

Tabel 2.3. Daftar area arsip Debian

area | banyaknya paket | kriteria komponen paket
--- | --- | ---
`main` | 75525 | Patuh DFSG dan tidak ada ketergantungan terhadap `non-free`
`non-free-firmware` | 74 | tidak patuh DFSG, firmware diperlukan untuk pengalaman instalasi sistem yang cukup beralasan
`contrib` | 360 | Patuh DFSG tetapi memiliki ketergantungan ke `non-free`
`non-free` | 1044 | tidak patuh DFSG dan tidak dalam `non-free-firmware`

Di sini jumlah paket di atas adalah untuk arsitektur amd64. Area `main` menyediakan sistem Debian (lihat Bagian 2.1.6, “Debian adalah perangkat lunak 100% bebas”).

Organisasi arsip Debian dapat dipelajari paling baik dengan mengarahkan peramban Anda ke setiap URL arsip ditambah dengan `dists` atau `pool`.

Distribusi disebut dengan dua cara, keluarga atau nama kode. Kata distribusi secara alternatif digunakan sebagai sinonim untuk keluarga dalam banyak dokumentasi. Hubungan antara keluarga dan nama kode dapat diringkas sebagai berikut.

Tabel 2.4. Hubungan antara keluarga dan nama kode

Kapan | suite = `stable` | suite = `testing` | suite = `unstable`
--- | --- | --- | ---
setelah rilis `trixie` | codename = `trixie` | codename = `forky` | codename = `sid`
setelah rilis `forky` | codename = `forky` | codename = `duke` | codename = `sid`

Riwayat nama kode dijelaskan dalam DEBIAN FAQ: 6.2.1 Nama kode lain mana yang telah digunakan di masa lalu?

Dalam terminologi arsip Debian yang lebih ketat, kata "section" secara khusus digunakan untuk kategorisasi paket oleh area aplikasi. (Meskipun, kata "main section" kadang-kadang dapat digunakan untuk menggambarkan area arsip Debian bernama "main".)

Setiap kali pengunggahan baru, dilakukan oleh pengembang Debian (DD) ke arsip `unstable` (melalui pemrosesan incoming), DD perlu memastikan paket yang diunggah kompatibel dengan set paket terbaru dalam arsip `unstable` terakhir.

Jika DD merusak kompatibilitas ini dengan sengaja untuk peningkatan pustaka penting dll, biasanya ada pengumuman ke milis debian-devel dll.

Sebelum satu set paket dipindahkan oleh skrip pemeliharaan arsip Debian dari arsip `unstable` ke arsip `testing`, skrip pemeliharaan arsip tidak hanya memeriksa kematangan (sekitar 2-10 hari) dan status laporan bug RC untuk paket tetapi juga mencoba untuk memastikan mereka kompatibel dengan set paket terbaru dalam arsip `testing`. Proses ini membuat arsip `testing` sangat terkini dan dapat digunakan.

Melalui proses pembekuan arsip bertahap yang dipimpin oleh tim rilis, arsip `testing` matang untuk membuatnya benar-benar konsisten dan bebas bug dengan beberapa intervensi manual. Kemudian rilis `stable` baru dibuat dengan menetapkan nama kode untuk arsip `testing` lama ke arsip `stable` baru dan membuat nama kode baru untuk arsip `testing` baru. Isi awal dari arsip `testing` baru persis sama dengan arsip `stable` yang baru saja dirilis.

Baik arsip `unstable` dan `testing` mungkin menderita gangguan sementara karena beberapa faktor.

- Pengunggahan paket rusak ke arsip (kebanyakan untuk `unstable`)

- Penundaan menerima paket baru ke arsip (sebagian besar untuk `unstable`)

- Masalah waktu sinkronisasi arsip (baik untuk `testing` dan `unstable`)

- Intervensi manual ke arsip seperti penghapusan paket (lebih untuk `testing`) dll.

Jadi jika Anda pernah memutuskan untuk menggunakan arsip ini, Anda harus dapat memperbaiki atau mengatasi gangguan semacam ini.

| Perhatian

Selama sekitar beberapa bulan setelah rilis `stable` baru, sebagian besar pengguna desktop harus menggunakan arsip `stable` dengan pembaruan keamanannya bahkan jika mereka biasanya menggunakan arsip `unstable` atau `testing`. Untuk masa transisi ini, arsip `unstable` dan `testing` tidak baik bagi kebanyakan orang. Sistem Anda sulit untuk tetap dalam kondisi kerja yang baik dengan arsip `unstable` karena menderita lonjakan peningkatan mayor untuk paket-paket inti. Arsip `testing` juga tidak berguna karena berisi sebagian besar konten yang sama dengan arsip `stable` tanpa dukungan keamanannya (Debian testing-security-announce 2008-12). Setelah satu bulan atau lebih, arsip `unstable` atau `testing` mungkin menjadi berguna jika Anda berhati-hati.

| Tip
Saat melacak arsip `testing`, masalah yang disebabkan oleh paket yang dihapus biasanya diatasi dengan memasang paket yang sesuai dari arsip `unstable` yang diunggah untuk perbaikan bug.

Lihat Manual Kebijakan Debian untuk definisi arsip.

- "Bagian"

- "Prioritas"

- "Sistem dasar"

- "Paket esensial"

### 2.1.6. Debian adalah perangkat lunak 100% bebas

Debian adalah perangkat lunak 100% bebas karena yang berikut ini:

- Debian hanya memasang perangkat lunak bebas secara baku untuk menghormati kebebasan pengguna.

- Debian hanya menyediakan perangkat lunak bebas di `main`.

- Debian merekomendasikan untuk hanya menjalankan perangkat lunak bebas dari `main`.

- Tidak ada paket `main` yang bergantung atau merekomendasikan paket dalam `non-free`, `non-free-firmware`, maupun `contrib`.

Beberapa orang bertanya-tanya apakah 2 fakta berikut bertentangan atau tidak.

- "Debian akan tetap 100% bebas". (Istilah pertama dari Kontrak Sosial Debian)

- Server Debian mewadahi beberapa paket `non-free-firmware`, `non-free`, dan `contrib`.

Ini tidak bertentangan, karena hal-hal berikut.

- Sistem Debian adalah 100% bebas dan paketnya diwadahi oleh server Debian di area `main`.

- Paket di luar sistem Debian diwadahi oleh server Debian di area `non-free`, `non-free-firmware`, dan `contrib`.

Ini dijelaskan secara tepat dalam ketentuan ke-4 dan ke-5 dari Kontrak Sosial Debian:

- Prioritas kami adalah pengguna kami dan perangkat lunak bebas

  - Kami akan dipandu oleh kebutuhan pengguna kami dan komunitas perangkat lunak bebas. Kami akan menempatkan kepentingan mereka terlebih dahulu dalam prioritas kami. Kami akan mendukung kebutuhan pengguna kami untuk beroperasi di berbagai jenis lingkungan komputasi. Kami tidak akan keberatan dengan karya non-bebas yang dimaksudkan untuk digunakan pada sistem Debian, atau mencoba untuk membebankan biaya kepada orang-orang yang membuat atau menggunakan karya tersebut. Kami akan mengizinkan orang lain untuk membuat distribusi yang berisi sistem Debian dan karya lainnya, tanpa biaya apa pun dari kami. Sebagai kelanjutan dari tujuan ini, kami akan menyediakan sistem terpadu dengan bahan-bahan berkualitas tinggi tanpa batasan hukum yang akan mencegah penggunaan sistem tersebut.

- Karya yang tidak memenuhi standar perangkat lunak bebas kami

  - Kami mengakui bahwa beberapa pengguna kami memerlukan penggunaan karya yang tidak sesuai dengan Pedoman Perangkat Lunak Bebas Debian. Kami telah menciptakan area "`non-free`", "`non-free-firmware`", dan "`contrib`" dalam arsip kami untuk karya-karya ini. Paket-paket di area ini bukan bagian dari sistem Debian, meskipun telah dikonfigurasi untuk digunakan dengan Debian. Kami mendorong produsen CD untuk membaca lisensi paket di area ini dan menentukan apakah mereka dapat mendistribusikan paket pada CD mereka. Jadi, meskipun karya non-free bukan bagian dari Debian, kami mendukung penggunaannya dan menyediakan infrastruktur untuk paket-paket non-free (seperti sistem pelacakan bug dan milis kami). Media resmi Debian dapat menyertakan firmware yang sebenarnya bukan dari sistem Debian untuk memfungsikan penggunaan Debian dengan perangkat keras yang memerlukan firmware seperti itu.

| Catatan
Teks sebenarnya dari syarat ke-5 dalam Kontrak Sosial Debian 1.2 saat ini sedikit berbeda dari teks di atas. Deviasi editorial ini disengaja untuk membuat dokumen pengguna ini konsisten tanpa mengubah konten sebenarnya dari Kontrak Sosial.

Pengguna harus menyadari risiko menggunakan paket-paket di area `non-free`, `non-free-firmware`, dan `contrib`:

- ketiadaan kebebasan untuk paket perangkat lunak tersebut

- ketiadaan dukungan dari Debian pada paket perangkat lunak tersebut (Debian tidak dapat mendukung perangkat lunak dengan benar tanpa memiliki akses ke kode sumbernya.)

- kontaminasi sistem Debian 100% bebas Anda

Debian Free Software Guidelines (Panduan Perangkat Lunak Bebas Debian) adalah standar perangkat lunak bebas untuk Debian. Debian menafsirkan "perangkat lunak" dalam lingkup terluas termasuk dokumen, firmware, logo, dan data karya seni dalam paket. Hal ini membuat standar perangkat lunak bebas Debian sangat ketat.

Paket `non-free`, `non-free-firmware`, dan `contrib` umumnya termasuk paket yang dapat didistribusikan secara bebas dari jenis berikut:

- Paket dokumen di bawah GNU Free Documentation License (Lisensi Dokumentasi Bebas GNU) dengan bagian invarian seperti yang untuk GCC dan Make. (sebagian besar ditemukan di bagian `non-free/doc`.)

- Paket-paket firmware yang berisi data biner tanpa sumber seperti yang terdaftar dalam Bagian 9.10.5, “Driver perangkat keras dan firmware” sebagai `non-free-firmware`. (sebagian besar ditemukan di bagian `non-free-firmware/kernel`.)

- Paket=paket permainan dan fonta dengan pembatasan penggunaan komersial dan/atau modifikasi konten.

Harap dicatat bahwa cacah paket `non-free`, `non-free-firmware`, dan `contrib` kurang dari 2% dari paket-paket `main`. Memfungsikan akses ke area `non-free`, `non-free-firmware`, dan `contrib` tidak mengaburkan sumber paket. Penggunaan aptitude(8) layar penuh interaktif memberi Anda visibilitas penuh dan kontrol atas paket apa yang dipasang dari area mana untuk menjaga sistem Anda sebebas yang Anda inginkan.

### 2.1.7. Dependensi paket

Sistem Debian menawarkan serangkaian paket biner yang konsisten melalui mekanisme deklarasi ketergantungan biner versinya di ruas berkas control. Berikut adalah sedikit definisi yang disederhanakan untuk mereka.

- "Depends"

  - Ini menyatakan ketergantungan mutlak dan semua paket yang tercantum dalam ruas ini harus dipasang pada saat yang sama atau sebelumnya.

- "Pre-Depends"

  - Ini seperti Depends, kecuali bahwa itu memerlukan instalasi lengkap dari paket yang terdaftar sebelumnya.

- "Recommends"

  - Ini menyatakan ketergantungan yang kuat, tetapi tidak mutlak. Sebagian besar pengguna tidak menginginkan paket kecuali semua paket yang tercantum di ruas ini dipasang.

- "Suggests"

  - Ini menyatakan ketergantungan yang lemah. Banyak pengguna paket ini mungkin mendapat manfaat dari memasang paket yang tercantum di ruas ini tetapi dapat memiliki fungsi yang wajar tanpa mereka.

- "Enhances"

  - Ini menyatakan ketergantungan lemah seperti Suggests tetapi bekerja ke arah yang berlawanan.

- "Breaks"

  - Ini menyatakan ketidakcocokan paket biasanya dengan beberapa spesifikasi versi. Umumnya resolusinya adalah untuk meningkatkan semua paket yang tercantum dalam ruas ini.

- "Conflicts"

  - Ini menyatakan ketidakcocokan mutlak. Semua paket yang tercantum di ruas ini harus dihapus untuk memasang paket ini.

- "Replaces"

  - Ini dinyatakan ketika berkas yang dipasang oleh paket ini menggantikan berkas dalam paket yang terdaftar.

- "Provides"

  - Ini dinyatakan ketika paket ini menyediakan semua berkas dan fungsionalitas dalam paket yang terdaftar.

| Catatan
Harap dicatat bahwa mendefinisikan "Provides", "Conflicts", dan "Replaces" secara bersamaan ke paket virtual adalah konfigurasi yang waras. Ini memastikan bahwa hanya satu paket nyata yang menyediakan paket virtual ini yang dapat dipasang pada satu waktu.

Definisi resmi termasuk ketergantungan sumber dapat ditemukan dalam Manual Kebijakan: Bab 7 - Mendeklarasikan hubungan antar paket.

### 2.1.8. Alur kejadian manajemen paket

Berikut adalah ringkasan dari alur kejadian yang disederhanakan dari manajemen paket oleh APT.

- Pembaruan ("`apt update`", "`aptitude update`", atau "`apt-get update`"):

  1. Mengambil metadata arsip dari arsip jarak jauh

  2. Merekonstruksi dan memperbarui metadata lokal untuk digunakan oleh APT

- Peningkatan ("`apt upgrade`"dan"`apt full-upgrade`", atau"`aptitude safe-upgrade`" dan "`"aptitude full-upgrade`", atau "`apt-get upgrade`" dan "`apt-get dist-upgrade`"):

  1. Memilih versi kandidat yang biasanya merupakan versi terbaru yang tersedia untuk semua paket yang dipasang (lihat Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning” untuk pengecualian)

  2. Membuat resolusi ketergantungan paket

  3. Mengambil paket biner yang dipilih dari arsip jarak jauh jika versi kandidat berbeda dari versi terpasang

  4. Membuka kemasan paket biner yang diambil

  5. Jalankan skrip preinst

  6. Memasang berkas biner

  7. Jalankan skrip postinst

- Memasang ("`apt install …`", `aptitude install …`", atau "`apt-get install …`"):

  1. Memilih paket yang tercantum di baris perintah

  2. Membuat resolusi ketergantungan paket

  3. Mengambil paket biner yang dipilih dari arsip jarak jauh

  4. Membuka kemasan paket biner yang diambil

  5. Jalankan skrip preinst

  6. Memasang berkas biner

  7. Jalankan skrip postinst

- Menghapus ("`apt remove ...`", "`aptitude remove ...`", atau "`apt-get remove ...`"):

  1. Memilih paket yang tercantum di baris perintah

  2. Membuat resolusi ketergantungan paket

  3. Jalankan skrip prerm

  4. Menghapus berkas yang dipasang kecuali berkas konfigurasi

  5. Jalankan skrip postrm

- Pembersihan ("`apt purge`", "`aptitude purge …`", atau "`"apt-get purge …`"):

  1. Memilih paket yang tercantum di baris perintah

  2. Membuat resolusi ketergantungan paket

  3. Jalankan skrip prerm

  4. Menghapus berkas yang dipasang termasuk berkas konfigurasi

  5. Jalankan skrip postrm

Di sini, saya sengaja melewatkan detail teknis demi gambaran besar.

### 2.1.9. Tanggapan pertama terhadap masalah manajemen paket

Anda harus membaca dokumentasi resmi yang bagus. Dokumen pertama yang dibaca adalah spesifik Debian "`/usr/share/doc/nama_paket/README. Debian`". Dokumentasi lain dalam "`/usr/share/doc/nama_paket/`" harus dikonsultasikan juga. Jika Anda mengatur shell sebagai Bagian 1.4.2, “Menyesuaikan bash”, ketikkan yang berikut ini.

    $ cd package_name
    $ pager README.Debian
    $ mc

Anda mungkin perlu memasang paket dokumentasi yang sesuai yang memiliki nama dengan akhiran "`-doc`" untuk informasi terperinci.

Jika Anda mengalami masalah dengan paket tertentu, pastikan untuk terlebih dahulu memeriksa situs Debian bug tracking system (BTS).

Tabel 2.5. Daftar situs web kunci untuk menyelesaikan masalah dengan paket tertentu

situs web | perintah
--- | ---
Halaman beranda sistem pelacakan bug Debian (Bug Tracking System/BTS) | `sensible-browser "https://bugs.debian.org/"`
Laporan bug dari nama paket yang dikenal | `sensible-browser "https://bugs.debian.org/package_name"`
Laporan bug dari nomor bug yang diketahui | `sensible-browser "https://bugs.debian.org/bug_number"`

Cari di Google dengan kata-kata pencarian termasuk "`site:debian.org`", "`site:wiki.debian.org`", "`site:lists.debian.org`", dll.

Saat Anda mengajukan laporan bug, silakan gunakan perintah reportbug(1).

### 2.1.10. Cara memilih paket Debian

Ketika Anda menemukan lebih dari 2 paket serupa dan bertanya-tanya mana yang harus dipasang tanpa upaya "coba-coba", Anda harus menggunakan akal sehat. Saya menganggap poin-poin berikut adalah indikasi yang baik dari paket pilihan.

- Essential: yes > no

- Area: main > contrib > non-free

- Priority: required > important > standard > optional > extra

- Tugas: paket yang tercantum dalam tugas-tugas seperti "Lingkungan desktop"

- Packages selected by the dependency package (e.g., `gcc-15` by `gcc`)

- Popcon: lebih tinggi dalam perolehan suara dan cacah instalasi

- Changelog: pembaruan rutin oleh pengelola

- BTS: Tidak ada bug RC (tidak ada bug kritis, grave, dan serius)

- BTS: pengelola responsif terhadap laporan bug

- BTS: cacah bug yang lebih tinggi baru-baru ini diperbaiki

- BTS: cacah bug non-wishlist yang tersisa

Debian yang berupa proyek sukarela dengan model pengembangan terdistribusi, arsipnya berisi banyak paket dengan fokus dan kualitas yang berbeda. Anda harus membuat keputusan sendiri apa yang harus dilakukan dengan mereka.

### 2.1.11. Bagaimana menghadapi persyaratan yang bertentangan

Apa pun keluarga sistem Debian yang mungkin Anda putuskan untuk digunakan, Anda mungkin masih ingin menjalankan versi program yang tidak tersedia di keluarga tersebut. Bahkan jika Anda menemukan paket biner program tersebut di keluarga Debian lain atau dalam sumber non-Debian lainnya, persyaratan mereka dapat bertentangan dengan sistem Debian saat ini.

Walaupun Anda bisa men-tweak sistem manajemen paket dengan teknik apt-pinning dsb. seperti yang diuraikan dalam Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning” untuk memasang paket biner tak selaras seperti itu, pendekatan tweaking seperti itu hanya memiliki use case terbatas karena mereka mungkin merusak program itu dan sistem Anda.

Sebelum secara brutal memasang paket tak selaras seperti itu, Anda harus mencari semua alternatif solusi teknis yang lebih aman yang kompatibel dengan sistem Debian Anda saat ini.

- Pasang program-program seperti itu memakai paket biner hulu ter-sandbox yang sesuai (lihat Bagian 7.7, “Sandbox”).

  - Kebanyakan program GUI seperti aplikasi LibreOffice dan GNOME tersedia sebagai paket Flatpak, Snap, atau AppImage.

- Buat chroot atau lingkungan serupa dan jalankan program-program seperti itu di dalamnya (lihat Bagian 9.11, “Sistem tervirtualisasi”).

  - Perintah CLI dapat dengan mudah dieksekusi di bawah chroot-nya yang kompatibel (lihat Bagian 9.11.4, “Sistem chroot”).

  - Beberapa lingkungan desktop lengkap dapat dicoba dengan mudah tanpa reboot (lihat Bagian 9.11.5, “Beberapa sistem desktop”).

- Bangun versi yang diinginkan dari paket biner yang kompatibel dengan sistem Debian Anda saat ini oleh Anda sendiri.

  - Ini adalah suatu tugas yang tidak mudah (lihat Bagian 2.7.13, “Mem-port paket ke sistem stable”).

## 2.2. Operasi manajemen paket dasar

Operasi manajemen paket berbasis repositori pada sistem Debian dapat dilakukan oleh banyak alat manajemen paket berbasis APT yang tersedia pada sistem Debian. Di sini, kami menjelaskan 3 alat manajemen paket dasar: `apt`, `apt-get` / `apt-cache`, dan `aptitude`.

Untuk operasi manajemen paket yang melibatkan instalasi paket atau pembaruan metadata paket, Anda harus memiliki hak istimewa root.

### 2.2.1. `apt` vs. `apt-get` / `apt-cache` vs. `aptitude`

Meskipun `aptitude` adalah alat interaktif yang sangat bagus yang terutama digunakan penulis, Anda harus mengetahui beberapa fakta peringatan:

- Perintah `aptitude` tidak dianjurkan untuk meningkatkan sistem rilis ke rilis pada sistem Debian `stable` setelah rilis baru.

  - Penggunaan "`apt full-upgrade`" atau "`apt-get dist-upgrade`" direkomendasikan untuk itu. Lihat Bug #411280.

- Perintah `aptitude` kadang menyarankan penghapusan paket massal untuk peningkatan sistem pada sistem Debian `testing` atau `unstable`.

  - Situasi ini telah membuat takut banyak administrator sistem. Jangan panik.

  - Hal ini tampaknya sebagian besar disebabkan oleh ketidaksepakatan versi di antara paket-paket yang tergantung atau direkomendasikan oleh paket meta seperti `gnome-core`.

  - Hal ini dapat diselesaikan dengan memilih "Batalkan tindakan yang tertunda" di menu perintah `aptitude`, keluar dari `aptitude`, dan menggunakan "`apt full-upgrade`".

Perintah `apt-get` dan `apt-cache` adalah alat manajemen paket berbasis APT yang paling dasar.

- `apt-get` dan `apt-cache` hanya menawarkan antarmuka pengguna baris perintah.

- `apt-get` paling cocok untuk peningkatan sistem mayor antara rilis, dll.

- `apt-get` menawarkan pengurai ketergantungan paket yang kuat.

- `apt-get` kurang menuntut sumber daya perangkat keras. Ini mengkonsumsi lebih sedikit memori dan berjalan lebih cepat.

- `apt-cache` menawarkan pencarian berbasis regex standar pada nama dan deskripsi paket.

- `apt-get` dan `apt-cache` dapat mengelola beberapa versi paket menggunakan `/etc/apt/preferences` tetapi cukup rumit.

Perintah `apt` adalah antarmuka baris perintah tingkat tinggi untuk manajemen paket. Ini pada dasarnya adalah pembungkus `apt-get`, `apt-cache`, dan perintah-perintah serupa, awalnya dimaksudkan sebagai antarmuka pengguna akhir dan memungkinkan beberapa opsi yang lebih cocok untuk penggunaan interaktif secara default.

- `apt` menyediakan bilah kemajuan yang ramah saat memasang paket menggunakan `apt install`.

- `apt` akan menghapus paket `.deb` yang disinggahkan secara baku setelah instalasi paket yang diunduh dengan sukses.

| Tip
Pengguna disarankan untuk menggunakan perintah apt(8) baru untuk penggunaan interaktif dan menggunakan perintah apt-get(8) dan apt-cache(8) dalam skrip shell.

Perintah `aptitude` adalah alat manajemen paket berbasis APT yang paling serbaguna.

- `aptitude` menawarkan antarmuka pengguna teks interaktif layar penuh.

- `aptitude` menawarkan antarmuka pengguna baris perintah juga.

- `aptitude` paling cocok untuk manajemen paket interaktif harian seperti memeriksa paket yang dipasang dan mencari paket yang tersedia.

- `aptitude` lebih menuntut pada sumber daya perangkat keras. Ini mengkonsumsi lebih banyak memori dan berjalan lebih lambat.

- `aptitude` menawarkan pencarian berbasis regex yang disempurnakan pada semua metadata paket.

- `aptitude` dapat mengelola beberapa versi paket tanpa menggunakan `/etc/apt/preferences` dan itu cukup intuitif.

### 2.2.2. Operasi manajemen paket dasar dengan barus perintah

Berikut adalah operasi manajemen paket dasar dengan baris perintah menggunakan apt(8), aptitude(8), dan apt-get(8) /apt-cache(8).

Tabel 2.6. Operasi manajemen paket dasar dengan baris perintah menggunakan apt(8), aptitude(8), dan apt-get(8) /apt-cache(8)

sintaks `apt` | `aptitude` syntax | sintaks `apt-get`/`apt-cache` | deskripsi
--- | --- | --- | ---
`apt update` | `aptitude update` | `apt-get update` | memperbarui metadata arsip paket
`apt install foo` | `aptitude install foo` | `apt-get install foo` | memasang versi kandidat paket "`foo`" dengan dependensinya
`apt upgrade` | `aptitude safe-upgrade` | `apt-get upgrade` | memasang versi kandidat dari paket yang terpasang tanpa menghapus paket lain
`apt full-upgrade` | `aptitude full-upgrade` | `apt-get dist-upgrade` | memasang versi kandidat paket yang terpasang sambil menghapus paket lain jika diperlukan
`apt remove foo` | `aptitude remove foo` | `apt-get remove foo` | menghapus paket "`foo`" sambil membiarkan berkas konfigurasinya
`apt autoremove` | T/T | `apt-get autoremove` | menghapus paket yang terpasang secara otomatis yang tidak lagi diperlukan
`apt purge foo` | `aptitude purge foo` | `apt-get purge foo` | membersihkan paket "`foo`" dengan berkas-berkas konfigurasinya
`apt clean` | `aptitude clean` | `apt-get clean` | membersihkan sepenuhnya repositori lokal dari berkas-berkas paket yang diambil
`apt autoclean` | `aptitude autoclean` | `apt-get autoclean` | membersihkan repositori lokal dari berkas-berkas paket yang diambil untuk paket-paket usang
`apt show foo` | `aptitude show foo` | `apt-cache show foo` | menampilkan informasi terperinci tentang paket "`foo`"
`apt search regex` | `aptitude search regex` | `apt-cache search regex` | mencari paket-paket yang cocok dengan regex
T/T | `aptitude why regex` | T/T | menjelaskan alasan mengapa paket-paket yang cocok regex harus dipasang
T/T | `aptitude why-not regex` | T/T | menjelaskan alasan mengapa paket-paket yang cocok regex tidak dapat dipasang
`apt list --manual-installed` | `aptitude search '~i!~M'` | `apt-mark showmanual` | menampilkan daftar paket yang dipasang secara manual

`apt` / `apt-get` dan `aptitude` dapat dicampur tanpa masalah besar.

"`aptitude why regex`" dapat mencantumkan lebih banyak informasi dengan "`"aptitude -v why regex`". Informasi serupa dapat diperoleh dengan "`apt rdepends paket`" atau "`apt-cache rdepends paket`".

Ketika perintah `aptitude` dimulai dalam mode baris perintah dan menghadapi beberapa masalah seperti konflik paket, Anda dapat beralih ke mode interaktif layar penuh dengan menekan tombol "`e`" nanti di prompt.

| Catatan
Meskipun perintah `aptitude` dilengkapi dengan fitur yang kaya seperti resolver paket yang disempurnakan, kompleksitas ini telah menyebabkan (atau mungkin masih menyebabkan) beberapa regresi seperti Bug # 411123, Bug # 514930, dan Bug # 570377. Jika terjadi keraguan, silakan gunakan perintah `apt`, `apt-get`, dan `apt-cache` atas perintah `aptitude`.

Anda dapat memberikan opsi perintah tepat setelah "`aptitude`".

Tabel 2.7. Opsi perintah penting untuk aptitude(8)

opsi perintah | deskripsi
--- | ---
`-s` | mensimulasikan hasil perintah
`-d` | unduh saja tetapi jangan pasang/tingkatkan
`-D` | menampilkan penjelasan singkat sebelum instalasi dan penghapusan otomatis

Lihat aptitude(8) dan "manual pengguna aptitude" di "`/usr/share/doc/aptitude/README`" untuk lebih lanjut.

### 2.2.3. Penggunaan aptitude interaktif

Untuk manajemen paket interaktif, Anda memulai `aptitude` dalam mode interaktif dari prompt shell konsol sebagai berikut.

    $ sudo aptitude -u
    Password:

Ini memperbarui salinan lokal dari informasi arsip dan menampilkan daftar paket di layar penuh dengan menu. Aptitude menempatkan konfigurasinya di "`~/.aptitude/config`".

| Tip
Jika Anda ingin menggunakan konfigurasi root sebagai pengganti milik pengguna, gunakan "`sudo -H aptitude …`" bukan "`sudo aptitude …`" dalam ekspresi di atas.

| Tip
`Aptitude` secara otomatis menetapkan tindakan yang tertunda karena dimulai secara interaktif. Jika Anda tidak menyukainya, Anda dapat mengatur ulang dari menu: "Tindakan" → "Batalkan tindakan yang tertunda".

### 2.2.4. Pengikatan tombol dari aptitude

Ketukan kunci penting untuk menelusuri status paket dan untuk mengatur "tindakan yang direncanakan" pada mereka dalam mode layar penuh ini adalah sebagai berikut.

Tabel 2.8. Daftar pengikatan tombol untuk aptitude

tombol | pengikatan tombol
--- | ---
`F10` atau `Ctrl-t` | menu
`?` | menampilkan bantuan untuk ketukan tombol (daftar yang lebih lengkap)
`F10` → Bantuan → Manual Pengguna | menampilkan Manual Pengguna
`u` | memperbarui informasi arsip paket
`+` | menandai paket untuk peningkatan atau instalasi
`-` | menandai paket untuk dihapus (menyimpan berkas konfigurasi)
`_` | menandai paket untuk pembersihan (menghapus berkas-berkas konfigurasi)
`=` | menempatkan paket ke keadaan ditahan
`U` | menandai semua paket yang dapat ditingkatkan (berfungsi sebagai full-upgrade)
`g` | mulai mengunduh dan memasang paket-paket yang dipilih
`q` | keluar dari layar saat ini dan menyimpan perubahan
`x` | keluar dari layar saat ini dan membuang perubahan
`Enter` | melihat informasi tentang paket
`C` | melihat changelog paket
`l` | mengubah batas untuk paket yang ditampilkan
`/` | mencari kecocokan pertama
`\` | mengulangi pencarian terakhir

Spesifikasi nama berkas dari baris perintah dan prompt menu setelah menekan "`l`" dan "`//`" menerima regex aptitude seperti yang dijelaskan di bawah ini. Regex aptitude dapat secara eksplisit mencocokkan nama paket menggunakan string yang dimulai dengan "`~n`" dan diikuti dengan nama paket.

| Tip
Anda perlu menekan "`U`" agar semua paket yang terpasang ditingkatkan ke versi kandidat di antarmuka visual. Jika tidak, hanya paket yang dipilih dan paket tertentu dengan ketergantungan versi kepada mereka yang ditingkatkan ke versi kandidat.

### 2.2.5. Tampilan paket di bawah aptitude

Dalam mode aptitude(8) layar penuh interaktif, paket-paket dalam daftar paket ditampilkan seperti contoh berikutnya.

    idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

Di sini, baris ini berarti dari kiri sebagai berikut.

- Bendera "keadaan saat ini" (huruf pertama)

- Bendera "tindakan yang direncanakan" (huruf kedua)

- Bendera "otomatis" (huruf ketiga)

- Nama paket

- Perubahan penggunaan ruang disk yang dikaitkan dengan "tindakan yang direncanakan"

- Versi paket saat ini

- Versi kandidat dari paket

| Tip
Daftar lengkap bendera diberikan di bagian bawah layar Bantuan yang ditampilkan dengan menekan "`?`".

Versi kandidat dipilih sesuai dengan preferensi lokal saat ini (lihat apt_preferences(5) dan Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning”).

Beberapa jenis tampilan paket tersedia di bawah menu "`Tampilan`".

Tabel 2.9. Daftar tampilan untuk aptitude

tampilan | deskripsi tampilan
--- | ---
`Package View` | lihat Tabel 2.10, “Kategorisasi tampilan paket standar” (baku)
`Audit Recommendations` | menampilkan daftar paket yang direkomendasikan oleh beberapa paket yang terpasang tetapi belum dipasang
`Flat Package List` | menampilkan daftar paket tanpa kategorisasi (untuk digunakan dengan regex)
`Debtags Browser` | menampilkan daftar paket yang dikategorikan menurut entri debtags mereka
`Source Package View` | menmpilkan daftar paket yang dikelompokkan menurut paket sumber

| Catatan
Tolong bantu kami memperbaiki penandaan paket dengan debtags!

"`Tampilan Paket`" standar mengkategorikan paket kurang lebih seperti `dselect` dengan beberapa fitur tambahan.

Tabel 2.10. Kategorisasi tampilan paket standar

kategori | deskripsi tampilan
--- | ---
`Upgradable Packages` | menampilkan daftar paket yang disusun sebagai `bagian` → `area` → `paket`
`New Packages` | , ,
`Installed Packages` | , ,
`Not Installed Packages` | , ,
`Obsolete and Locally Created Packages` | , ,
`Virtual Packages` | daftar paket dengan fungsi yang sama
`Tasks` | menampilkan daftar paket dengan fungsi berbeda yang umumnya diperlukan untuk suatu tugas

| Tip
Tampilan `Tugas` dapat digunakan untuk memilih paket untuk tugas Anda.

### 2.2.6. Opsi metode pencarian dengan aptitude

Aptitude menawarkan beberapa pilihan bagi Anda untuk mencari paket menggunakan rumus regex-nya.

- Baris perintah shell:

  - "`aptitude search 'regex_aptitude'`" untuk daftar status instalasi, nama paket, dan deskripsi singkat dari paket yang cocok

  - "`aptitude show 'nama_paket'`" untuk daftar deskripsi rinci dari paket

- Mode layar penuh interaktif:

  - "`l`" untuk membatasi tampilan paket ke paket-paket yang cocok

  - "`/`" untuk pencarian ke paket yang cocok

  - "`\`" untuk pencarian mundur ke paket yang cocok

  - "`n`" untuk cari-berikutnya

  - "`N`" untuk cari-berikutnya (mundur)

| Tip
String untuk nama_paket diperlakukan sebagai pencocokan string yang tepat dengan nama paket kecuali dimulai secara eksplisit dengan "`~`" untuk menjadi rumus regex.

### 2.2.7. Rumus regex aptitude

Rumus regex aptitude adalah ERE diperluas mirip mutt (lihat Bagian 1.6.2, “Ekspresi reguler”) dan arti dari ekstensi aturan kecocokan khusus spesifik `aptitude` adalah sebagai berikut.

Tabel 2.11. Daftar rumus regex aptitude

deskripsi aturan pencocokan yang diperluas | rumus regex
--- | ---
cocok pada nama paket | `~nregex_name`
cocok pada deskripsi | `~dregex_description`
cocokkan pada nama task | `~tregex_task`
cocok dengan debtag | `~Gregex_debtag`
cocok pada maintainer | `~mregex_maintainer`
cocok pada bagian paket | `~sregex_section`
cocok pada versi paket | `~Vregex_version`
cocok arsip | `~A{trixie,forky,sid`}
cocok asal | `~O{debian,…`}
cocok prioritas | `~p{extra,important,optional,required,standard`}
cocok paket esensial | `~E`
cocok paket virtual | `~v`
cocok paket baru | `~N`
cocok dengan tindakan yang tertunda | `~a{install,upgrade,downgrade,remove,purge,hold,keep`}
cocok paket terpasang | `~i`
cocok dengan paket yang dipasang dengan tanda A (paket yang dipasang otomatis) | `~M`
cocok dengan paket terpasang tanpa tanda M (paket yang dipilih administrator) | `~i!~M`
cocok dengan paket-paket yang dipasang dan dapat ditingkatkan | `~U`
cocok dengan paket-paket yang dihapus tetapi belum dibersihkan | `~c`
cocok dengan paket-paket yang dihapus, dibersihkan, atau dapat-dihapus | `~g`
cocok dengan paket-paket yang menyatakan ketergantungan yang rusak | `~b`
cocok dengan paket yang menyatakan ketergantungan tipe yang rusak | `~Btype`
cocok dengan pola paket yang menyatakan ketergantungan tipe | `~D[type:]pattern`
cocok dengan pola paket yang menyatakan ketergantungan tipe yang rusak | `~DB[type:]pattern`
cocok dengan paket yang memiliki pola sesuai dengan paket yang menyatakan ketergantungan tipe | `~R[type:]pattern`
cocok dengan paket yang memiliki pola sesuai dengan paket yang menyatakan ketergantungan tipe yang rusak | `~RB[type:]pattern`
cocok dengan paket yang beberapa paket terpasang lainnya bergantung pada mereka | `~R~i`
cocok dengan paket yang tidak bergantung pada paket terpasang lainnya | `!~R~i`
cocok dengan paket yang beberapa paket terpasang lainnya bergantung atau direkomendasikan pada mereka | `~R~i|~Rrecommends:~i`
cocok dengan pola paket dengan versi yang difilter | `~S filter pattern`
cocok dengan semua paket (benar) | `~T`
tidak cocok dengan paket apa pun (salah) | `~F`

- Bagian regex adalah ERE yang sama dengan yang biasa digunakan dalam alat teks mirip Unix memakai "`^`", "`.*`", "`$`" dll. seperti pada egrep(1), awk(1), dan perl(1).

- Tipe ketergantungan adalah satu dari (depends, predepends, recommends, suggests, conflicts, replaces, provides) yang menyatakan keterkaitan paket.

- Tipe kebergantungan baku adalah "depends".

| Tip
Ketika pola_regex adalah string null, tempatkan "`~T`" segera setelah perintah.

Berikut adalah beberapa pintasan.

- "`~Pistilah`" == "`~Dprovides:istilah`"

- "`~Cistilah`" == "`~Dconflicts:istilah`"

- "`…~W istilah`" == "`(…|istilah)`"

Pengguna yang akrab dengan `mutt` belajar dengan cepat, karena mutt adalah inspirasi untuk sintaks ekspresi. Lihat "MENCARI, MEMBATASI, DAN EKSPRESI" di "Manual Pengguna" "`/usr/share/doc/aptitude/README`".

| Catatan
Dengan versi `lenny` aptitude(8), sintaks bentuk panjang baru seperti "`?broken`" dapat digunakan untuk pencocokan regex di tempat untuk bentuk pendek lama yang setara "`~ b`". Sekarang karakter spasi "`` " dianggap sebagai salah satu karakter regex pengakhiran selain karakter tilde "`~`". Lihat "Manual Pengguna" untuk sintaks bentuk panjang yang baru.

### 2.2.8. Resolusi ketergantungan aptitude

Pemilihan paket dalam `aptitude` tidak hanya menarik paket yang didefinisikan dalam daftar "`Depends:`" tetapi juga didefinisikan dalam daftar "`Recommends:`" jika menu "Opsi →`F10` → Preferensi → Penanganan Ketergantungan" diatur sesuai dengan itu. Paket yang dipasang otomatis ini dihapus secara otomatis jika tidak lagi diperlukan di bawah `aptitude`.

Bendera yang mengendalikan perilaku "pemasangan otomatis" dari perintah `aptitude` juga dapat dimanipulasi menggunakan perintah apt-mark(8) dari paket `apt`.

### 2.2.9. Log aktivitas paket

Anda dapat memeriksa riwayat aktivitas paket di berkas-berkas log.

Tabel 2.12. Berkas-berkas log untuk aktivitas paket

berkas | isi
--- | ---
`/var/log/dpkg.log` | Log kegiatan tingkat `dpkg` untuk semua kegiatan paket
`/var/log/apt/term.log` | Log aktivitas APT generik
`/var/log/aptitude` | Log aktivitas perintah `aptitude`

Pada kenyataannya, tidak mudah untuk mendapatkan pemahaman yang berarti dengan cepat dari log ini. Lihat Bagian 9.3.9, “Merekam perubahan dalam berkas konfigurasi” untuk cara yang lebih mudah.

## 2.3. Contoh operasi aptitude

Berikut adalah beberapa contoh operasi aptitude(8).

### 2.3.1. Mencari paket yang menarik

Anda dapat mencari paket yang memenuhi kebutuhan Anda dengan `aptitude` dari deskripsi paket atau dari daftar di bawah "Tugas".

### 2.3.2. Menampilkan daftar paket dengan pencocokan regex pada nama paket

Perintah berikut mencantumkan paket dengan pencocokan regex pada nama paket.

    $ aptitude search '~n(pam|nss).*ldap'
    p libnss-ldap - NSS module for using LDAP as a naming service
    p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces

Ini sangat berguna bagi Anda untuk menemukan nama yang tepat dari sebuah paket.

### 2.3.3. Meramban dengan pencocokan regex

Regex "`~dipv6`" dalam tampilan "Daftar Paket Datar baru" dengan prompt "`l`", membatasi tampilan ke paket dengan deskripsi yang cocok dan memungkinkan Anda menelusuri informasinya secara interaktif.

### 2.3.4. Membersihkan paket yang dihapus untuk selamanya

Anda dapat membersihkan semua berkas konfigurasi yang tersisa dari paket yang dihapus.

Periksa hasil perintah berikut.

    # aptitude search '~c'

Jika Anda berpikir paket yang terdaftar baik-baik saja untuk dibersihkan, jalankan perintah berikut.

    # aptitude purge '~c'

Anda mungkin ingin melakukan hal yang sama dalam mode interaktif untuk kontrol yang lebih halus.

Anda memberikan regex "`~c`" dalam tampilan "Tampilan Paket Baru" dengan prompt "`l`. Ini membatasi tampilan paket hanya untuk paket yang cocok regex, yaitu, "dihapus tetapi tidak dibersihkan". Semua paket yang cocok regex ini dapat ditunjukkan dengan menekan "`[`" pada judul tingkat puncak.

Kemudian Anda menekan "`_`" pada judul tingkat puncak seperti "Pakat Tidak Terpasang". Hanya paket yang cocok regex di bawah judul yang ditandai untuk dibersihkan oleh ini. Anda dapat mengecualikan beberapa paket untuk dibersihkan dengan menekan "`=`" secara interaktif untuk masing-masing.

Teknik ini cukup berguna dan bekerja untuk banyak tombol perintah lainnya.

### 2.3.5. Merapikan status pemasangan otomatis/manual

Berikut adalah cara saya merapikan status pemasangan otomatis/manual untuk paket (setelah menggunakan pemasang paket non-aptitude dll.).

1. Mulai `aptitude` dalam mode interaktif sebagai root.

2. Ketik "`u`", "`U`", "`f`", dan "`g`" untuk memperbarui dan meningkatkan daftar paket dan paket-paket.

3. Ketik "`l`" untuk memasukkan batas tampilan paket sebagai "`~i(~R~i|~Rrecommends:~i)`" dan ketik "`M`" di atas "`Paket Terpasang`" sebagai terpasang otomatis.

4. Ketik "`l`" untuk memasukkan batas tampilan paket sebagai "`~prequired|~pimportant|~pstandard|~E`" dan ketik "`m`" di atas "`Paket Terpasang`" sebagai terpasang manual.

5. Ketik "`l`" untuk memasukkan batas tampilan paket sebagai "`~i!~M`" dan hapus paket yang tidak terpakai dengan mengetik "`-`" di atas masing-masing setelah mengekspos mereka dengan mengetik "`[`" di atas "`Paket Terpasang`".

6. Ketik "`l`", untuk memasukkan batas tampilan paket sebagai "`~i`"; kemudian ketik "`m`" di atas "`Tugas`" untuk menandai paket itu sebagai terpasang manual.

7. Keluar dari `aptitude`.

8. Mulai "`apt-get -s autoremove|less`" sebagai root untuk memeriksa apa yang tidak digunakan.

9. Mulai ulang `aptitude` dalam mode interaktif dan tandai paket yang dibutuhkan sebagai "`m`".

10. Jalankan ulang "`apt-get -s autoremove|less`" sebagai root untuk memeriksa ulang bahwa DIHAPUS hanya berisi paket yang diharapkan.

11. Mulai "`apt-get autoremove|less`" sebagai root untuk menghapus otomatis paket yang tidak terpakai.

Tindakan "`m`" atas "`Tugas`" adalah tindakan opsional untuk mencegah situasi penghapusan paket massal di masa depan.

### 2.3.6. Peningkatan seluruh sistem

| Catatan

Saat pindah ke rilis baru dll, Anda harus mempertimbangkan untuk melakukan instalasi yang bersih dari sistem baru meskipun Debian dapat ditingkatkan seperti yang dijelaskan di bawah ini. Ini memberi Anda kesempatan untuk membuang sampah yang dikumpulkan dan menghadapkan Anda ke kombinasi terbaik dari paket terbaru. Tentu saja, Anda harus membuat cadangan penuh sistem ke tempat yang aman (lihat Bagian 10.2, “Pencadangan dan pemulihan”) sebelum melakukan ini. Saya sarankan untuk membuat konfigurasi boot ganda menggunakan partisi yang berbeda untuk mendapatkan transisi yang paling mulus.

Anda dapat melakukan peningkatan seluruh sistem ke rilis yang lebih baru dengan mengubah isi daftar sumber yang menunjuk ke rilis baru dan menjalankan perintah "`apt update; apt dist-upgrade`".

Untuk meningkatkan dari `stable` ke `testing` atau `unstable`, selama siklus rilis `trixie`-sebagai-`stable`, Anda mengganti "`trixie`" dalam contoh daftar sumber dari Bagian 2.1.5, “Dasar-dasar arsip Debian” dengan "`forky`" atau "`sid`".

Kenyataannya, Anda mungkin menghadapi beberapa komplikasi karena beberapa masalah transisi paket, sebagian besar karena ketergantungan paket. Semakin besar perbedaan peningkatan, semakin besar kemungkinan Anda menghadapi masalah yang lebih besar. Untuk transisi dari `stable` lama ke `stable` baru setelah rilis, Anda dapat membaca Catatan Rilis baru dan mengikuti prosedur yang tepat dijelaskan di dalamnya untuk meminimalkan masalah.

Ketika Anda memutuskan untuk berpindah dari `stable` ke `testing` sebelum rilis resminya, tidak ada Catatan Rilis untuk membantu Anda. Perbedaan antara `stable` dan `testing` bisa tumbuh cukup besar setelah rilis `stable` sebelumnya dan membuat situasi peningkatan rumit.

Anda harus membuat langkah pencegahan untuk peningkatan penuh sambil mengumpulkan informasi terbaru dari milis dan menggunakan akal sehat.

1. Membaca "Catatan Rilis" sebelumnya.

2. Cadangkan seluruh sistem (terutama data dan informasi konfigurasi).

3. Memiliki media yang dapat di-boot yang siap untuk bootloader rusak.

4. Informasikan ke para pengguna sistem jauh sebelumnya.

5. Rekam aktivitas peningkatan dengan script(1).

6. Terapkan "unmarkauto" ke paket yang diperlukan, mis., "`aptitude unmarkauto vim`", untuk mencegah penghapusan.

7. Minimalkan paket yang dipasang untuk mengurangi kemungkinan konflik paket, mis., menghapus paket tugas desktop.

8. Hapus berkas "`/etc/apt/preferences`" (nonaktifkan apt-pinning).

9. Cobalah untuk meningkatkan secara bertahap: `oldstable` → `stable` → `testing` → `unstable`.

10. Perbarui daftar sumber agar menunjuk hanya ke arsip baru dan jalankan "`aptitude update`".

11. Pasang terlebih dahulu, secara opsional, paket-paket inti baru, mis.,"`aptitude install perl`".

12. Jalankan perintah "`apt-get -s dist-upgrade`" untuk menilai dampak.

13. Pada akhirknya jalankan perintah "`apt-get dist-upgrade`".

| Perhatian
Tidak bijaksana untuk melewatkan rilis Debian mayor ketika meningkatkan antar rilis `stable`.

| Perhatian
Dalam "Catatan Rilis" sebelumnya, GCC, Kernel Linux, initrd-tools, Glibc, Perl, rantai alat APT, dll. membutuhkan perhatian khusus untuk peningkatan seluruh sistem.

| Perhatian
"Catatan Rilis" mungkin tidak mencakup semua kasus yang mungkin. Bila Anda mengubah konfigurasi tingkat rendah, peningkatan berikutnya mungkin gagal dengan buruk sebagai "... segfault setelah peningkatan ...".

Untuk peningkatan harian dalam `unstable`, lihat Bagian 2.4.3, “Menjaga masalah paket”.

## 2.4. Operasi manajemen paket tingkat lanjut

### 2.4.1. Operasi manajemen paket tingkat lanjut dengan baris perintah

Berikut adalah daftar operasi manajemen paket lain dimana `aptitude` tingkatnya terlalu tinggi atau tidak memiliki fungsi yang diperlukan.

Tabel 2.13. Daftar operasi manajemen paket tingkat lanjut

perintah | aksi
--- | ---
`COLUMNS=120 dpkg -l package_name_pattern` | menampilkan daftar status paket yang dipasang untuk laporan bug
`dpkg -L package_name` | menampilkan daftar isi paket yang dipasang
`dpkg -L package_name | egrep '/usr/share/man/man.*/.+'` | menampilkan daftar halaman man untuk paket yang dipasang
`dpkg -S file_name_pattern` | daftar paket terpasang yang memiliki nama berkas yang cocok
`apt-file search file_name_pattern` | tampilkan daftar paket dalam arsip yang memiliki nama berkas yang cocok
`apt-file list package_name_pattern` | menampilkan daftar isi paket yang cocok dalam arsip
`dpkg-reconfigure package_name` | mengonfigurasi ulang paket yang tepat
`dpkg-reconfigure -plow package_name` | mengonfigurasi ulang paket yang tepat dengan pertanyaan paling rinci
`configure-debian` | mengonfigurasi ulang paket dari menu layar penuh
`dpkg --audit` | mengaudit sistem untuk paket-paket yang terpasang sebagian
`dpkg --configure -a` | mengonfigurasi semua paket yang terpasang sebagian
`apt-cache policy binary_package_name` | menampilkan versi yang tersedia, prioritas, dan informasi arsip dari suatu paket biner
`apt-cache madison package_name` | menampilkan versi yang tersedia, informasi arsip paket
`apt-cache showsrc binary_package_name` | menampilkan informasi paket sumber dari suatu paket biner
`apt-get build-dep package_name` | memasang paket-paket yang diperlukan untuk membangun paket
`aptitude build-dep package_name` | memasang paket-paket yang diperlukan untuk membangun paket
`apt-get source nama_paket` | mengunduh suatu sumber (dari arsip standar)
`dget URL for dsc file` | mengunduh suatu paket sumber (dari arsip lainnya)
`dpkg-source -x package_name_version-debian.revision.dsc` | membangun pohon sumber dari satu set paket sumber ("`*.orig.tar.gz`" dan "`*.debian.tar.gz`"/"`*.diff.gz`")
`debuild binary` | membangun paket dari pohon sumber lokal
`make-kpkg kernel_image` | membangun paket kernel dari pohon sumber kernel
`make-kpkg --initrd kernel_image` | membangun paket kernel dari pohon sumber kernel dengan initramfs diaktifkan
`dpkg -i package_name_version-debian.revision_arch.deb` | memasang sebuah paket lokal ke sistem
`apt install /path/to/package_filename.deb` | memasang paket lokal ke sistem, sambil mencoba untuk menyelesaikan ketergantungan secara otomatis
`debi package_name_version-debian.revision_arch.dsc` | memasang paket lokal ke sistem
`dpkg --get-selections '*' >selection.txt` | menyimpan informasi keadaan pemilihan paket tingkat `dpkg`
`dpkg --set-selections <selection.txt` | mengatur informasi keadaan pemilihan paket tingkat `dpkg`
`echo nama_paket hold | dpkg --set-selections` | menata status pemilihan paket tingkat `dpkg` untuk paket yang akan ditahan (setara dengan "`aptitude hold nama_paket`")

| Catatan
Untuk paket dengan fitur multi-arch, Anda mungkin perlu menyatakan nama arsitektur untuk beberapa perintah. Misalnya, gunakan "`dpkg -L libglib2.0-0:amd64`" untuk mencantumkan isi paket `libglib2.0-0` bagi arsitektur `amd64`.

| Perhatian
Alat paket tingkat rendah seperti "`dpkg -i …`" dan`"debi …`" harus hati-hati digunakan oleh administrator sistem. Itu tidak secara otomatis mengurus dependensi paket yang diperlukan. Opsi baris perintah dpkg "`--force-all`" dan yang serupa (lihat dpkg(1)) dimaksudkan untuk digunakan oleh para ahli saja. Menggunakannya tanpa sepenuhnya memahami efeknya dapat merusak seluruh sistem Anda.

Harap catat hal-hal berikut.

- Semua konfigurasi sistem dan perintah instalasi harus dijalankan dari root.

- Tidak seperti `aptitude` yang menggunakan regex (lihat Bagian 1.6.2, “Ekspresi reguler”), perintah manajemen paket lainnya menggunakan pola seperti glob shell (lihat Bagian 1.5.6, “Glob shell”).

- apt-file(1) yang disediakan oleh paket `apt-file` harus menjalankan "`apt-file update`" terlebih dahulu.

- configure-debian(8) yang disediakan oleh paket `configure-debian` menjalankan dpkg-reconfigure(8) sebagai backend-nya.

- dpkg-reconfigure(8) menjalankan skrip paket menggunakan debconf(1) sebagai backend-nya.

- Perintah "`apt-get build-dep`", "`apt-get source`", dan "`apt-cache showsrc`" memerlukan entri "`deb-src`" di daftar sumber.

- dget(1), debuild(1), dan debi(1) memerlukan paket `devscripts`.

- Lihat prosedur pengemasan (ulang) menggunakan "`apt-get source`" dalam Bagian 2.7.13, “Mem-port paket ke sistem stable”.

- Perintah `make-kpkg` memerlukan paket `kernel-package` (lihat Bagian 9.10, “Kernel”).

- Lihat Bagian 12.9, “Membuat paket Debian” untuk pengemasan umum.

### 2.4.2. Verifikasi berkas-berkas paket yang terpasang

Pemasangan `debsum` memungkinkan verifikasi berkas paket yang terpasang terhadap nilai MD5sum dalam berkas "`/var/lib/dpkg/info/*.md5sums`" dengan debsum(1). Lihat Bagian 10.3.5, “Sidikjari MD5” untuk cara kerja MD5sum.

| Catatan
Karena database MD5sum dapat dirusak oleh penyusup, penggunaan debsum(1) terbatas sebagai alat keamanan. Ini hanya baik untuk memeriksa modifikasi lokal oleh administrator atau kerusakan karena kesalahan media.

### 2.4.3. Menjaga masalah paket

Banyak pengguna lebih memilih untuk mengikuti rilis sistem Debian testing (atau unstable) untuk fitur dan paket barunya. Hal ini membuat sistem lebih rentan terkena bug paket kritis.

Instalasi paket `apt-listbugs` melindungi sistem Anda dari bug kritis dengan memeriksa Debian BTS secara otomatis untuk bug kritis saat memutakhirkan dengan sistem APT.

Pemasangan paket `apt-listchanges` memberikan berita penting dalam "`NEWS.Debian`" saat memutakhirkan dengan sistem APT.

### 2.4.4. Mencari pada data meta paket

Meskipun mengunjungi situs Debian https://packages.debian.org/ memfasilitasi cara mudah untuk mencari data meta paket akhir-akhir ini, mari kita lihat cara yang lebih tradisional.

Perintah grep-dctrl(1), grep-status(1), dan grep-available(1) dapat digunakan untuk mencari berkas apa pun yang memiliki format umum berkas kontrol paket Debian.

"`dpkg -S pola_nama_berkas`" dapat digunakan untuk mencari nama paket yang berisi berkas dengan nama yang cocok yang dipasang oleh `dpkg`. Tapi ini mengabaikan berkas-berkas yang dibuat oleh skrip pengelola.

Jika Anda perlu melakukan pencarian yang lebih rumit pada data meta dpkg, Anda perlu menjalankan perintah "`grep -e pola_regex *`" di direktori "`/var/lib/dpkg/info/`". Hal ini membuat Anda mencari kata-kata yang disebutkan dalam skrip paket dan teks kueri instalasi.

Jika Anda ingin mencari ketergantungan paket secara rekursif, Anda harus menggunakan apt-rdepends(8).

## 2.5. Internal manajemen paket Debian

Mari kita pelajari cara kerja sistem manajemen paket Debian secara internal. Ini akan membantu Anda membuat solusi sendiri untuk beberapa masalah paket.

### 2.5.1. Meta data arsip

Berkas meta data untuk setiap distribusi disimpan di bawah "`dist/namakode`" pada setiap situs cermin Debian, mis., "`http://deb.debian.org/debian/`". Struktur arsipnya dapat ditelusuri oleh peramban web. Ada 6 jenis data meta kunci.

Tabel 2.14. Isi data meta arsip Debian

berkas | lokasi | isi
--- | --- | ---
`Release` | puncak distribusi | deskripsi arsip dan informasi integritas
`Release.gpg` | puncak distribusi | berkas tanda tangan untuk berkas "`Release`" yang ditandatangani dengan kunci arsip
`Contents-architecture` | puncak distribusi | daftar semua berkas untuk semua paket dalam arsip yang bersangkutan
`Release` | puncak dari setiap kombinasi distribusi/area/arsitektur | deskripsi arsip yang digunakan untuk aturan apt_preferences(5)
`Packages` | puncak dari setiap kombinasi distribusi/area/arsitektur biner | `debian/control` gabungan untuk paket biner
`Sources` | puncak dari setiap kombinasi distribusi/area/sumber | `debian/control` gabungan untuk paket sumber

Dalam arsip baru-baru ini, data meta ini disimpan sebagai berkas terkompresi dan diferensial untuk mengurangi lalu lintas jaringan.

### 2.5.2. Berkas "Release" tingkat puncak dan keaslian

| Tip
Berkas "`Release`" tingkat puncak digunakan untuk menandatangani arsip di bawah sistem APT yang aman.

Setiap keluarga arsip Debian memiliki berkas "`Release`" tingkat puncak, mis., "`http://deb.debian.org/debian/dists/unstable/Release`", sebagai berikut.

    Origin: Debian
    Label: Debian
    Suite: unstable
    Codename: sid
    Date: Sat, 14 May 2011 08:20:50 UTC
    Valid-Until: Sat, 21 May 2011 08:20:50 UTC
    Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
    Components: main contrib non-free
    Description: Debian x.y Unstable - Not Released
    MD5Sum:
     bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
     9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
     3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
    ...

| Catatan
Di sini, Anda dapat menemukan alasan saya untuk menggunakan "keluarga", dan "nama kode" di Bagian 2.1.5, “Dasar-dasar arsip Debian”. "Distribusi" digunakan ketika mengacu pada "keluarga" dan "nama kode". Semua nama "area" arsip yang ditawarkan oleh arsip tercantum di bawah "Komponen".

Integritas berkas "`Release`" tingkat puncak diverifikasi oleh infrastruktur kriptografi yang disebut apt aman sebagaimana diuraikan dalam apt-secure(8).

- Berkas tanda tangan kriptografis "`Release.gpg`" dibuat dari berkas "`Release`" tingkat puncak yang otentik dan kunci arsip Debian rahasia.

- Kunci arsip Debian publik dipasang secara lokal oleh paket `debian-archive-keyring` terbaru.

- Sistem APT aman memverifikasi secara otomatis integritas berkas "`Release`" tingkat puncak yang diunduh secara kriptografis memakai berkas "`Release.gpg`" ini dan kunci arsip Debian publik yang terpasang secara lokal.

- Integritas semua berkas "`Packages`" dan "`Sources`" diverifikasi dengan menggunakan nilai MD5sum dalam berkas "`Release`" tingkat puncak. Integritas semua berkas paket diverifikasi dengan menggunakan nilai MD5sum dalam berkas "`Packages`" dan "`Sources`". Lihat debsum(1) dan Bagian 2.4.2, “Verifikasi berkas-berkas paket yang terpasang”.

- Karena verifikasi tanda tangan kriptografis adalah proses yang jauh lebih intensif CPU daripada perhitungan nilai MD5sum, penggunaan nilai MD5sum untuk setiap paket saat menggunakan tanda tangan kriptografis untuk berkas "`Releases`" tingkat puncak memberikan keamanan yang baik dengan kinerja (lihat Bagian 10.3, “Infrastruktur keamanan data”).

Bila entri daftar sumber menyatakan opsi "`signed-by`", integritas berkas "`Release`" tingkat puncaknya yang diunduh diverifikasi memakai kunci publik yang dinyatakan. Ini berguna ketika daftar sumber menmuat arsip-arsip non-Debian.

| Tip
Penggunaan perintah apt-key(8) untuk manajemen kunci APT tidak berlaku lagi.

Anda juga dapat memverifikasi secara manual integritas dari berkas "`Release`" dengan berkas "`Release.gpg`" dan kunci arsip Debian publik yang diumumkan di ftp-master.debian.org memakai `gpg`.

### 2.5.3. Berkas "Release" tingkat arsip

| Tip
Berkas "`Release`" tingkat arsip digunakan untuk aturan apt_preferences(5).

Ada berkas "`Release`" tingkat arsip untuk semua lokasi arsip yang ditentukan oleh daftar sumber, seperti "`http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release`" atau "`http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release`" sebagai berikut.

    Archive: unstable
    Origin: Debian
    Label: Debian
    Component: main
    Architecture: amd64

| Perhatian
Untuk stanza "`Archive:`" , nama keluarga ("`stable`", "`testing`", "`unstable`", …) digunakan dalam arsip Debian sementara nama kode ("`trusty`", "`xenial`", "`artful`", …) digunakan dalam arsip Ubuntu.

Untuk beberapa arsip, seperti `experimental`, dan `trixie-backports`, yang berisi paket yang tidak boleh dipasang secara otomatis, ada baris tambahan, misalnya, "`http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release`" sebagai berikut.

    Archive: experimental
    Origin: Debian
    Label: Debian
    NotAutomatic: yes
    Component: main
    Architecture: amd64

Harap dicatat bahwa untuk arsip normal tanpa "`"NotAutomatic: yes`", nilai Pin-Priority baku adalah 500, sedangkan untuk arsip khusus dengan "`"NotAutomatic: yes`", nilai Pin-Priority baku adalah 1 (lihat apt_preferences(5) dan Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning”).

### 2.5.4. Pengambilan data meta untuk paket

Ketika alat APT, seperti `aptitude`, `apt-get`, `synaptic`, `apt-file`, `auto-apt`, … digunakan, kita perlu memperbarui salinan lokal dari data meta yang berisi informasi arsip Debian. Salinan lokal ini memiliki nama berkas berikut yang sesuai dengan `distribusi`, `area`, dan nama `arsitektur` dalam daftar sumber (lihat Bagian 2.1.5, “Dasar-dasar arsip Debian”).

- "`/var/lib/apt/lists/deb.debian.org_debian_dists_distribusi_Release`"

- "`/var/lib/apt/lists/deb.debian.org_debian_dists_distribusi_Release.gpg`"

- "`/var/lib/apt/lists/deb.debian.org_debian_dists_distribusi_area_binary-arsitektur_Packages`"

- "`/var/lib/apt/lists/deb.debian.org_debian_dists_distribusi_area_source_Sources`"

- "`/var/cache/apt/apt-file/deb.debian.org_debian_dists_distribusi_Contents-arsitektur.gz`" (untuk `apt-file`)

4 jenis berkas pertama dipakai bersama oleh semua perintah APT yang bersangkutan dan diperbarui dari baris perintah dengan "`apt-get update`" atau "`aptitude update`". Data meta "`Packages`" diperbarui jika ada baris "`deb`" di daftar sumber. Data meta "`Sources`" diperbarui jika ada baris "`deb-src`" di daftar sumber.

Data meta "`Packages`" dan "`Sources`" berisi stanza "`"Filename:`" yang menunjuk ke lokasi berkas paket biner dan sumber. Saat ini, paket-paket ini terletak di bawah pohon direktori "`pool/`" untuk transisi antar rilis yang lebih baik.

Salinan lokal dari meta data "`Packages`" dapat secara interaktif dicari dengan bantuan `aptitude`. Perintah pencarian khusus grep-dctrl(1) dapat mencari salinan lokal dari meta data "`Packages`" dan "`Sources`".

Salinan lokal dari data meta "`Contents-arsitektur`" dapat diperbarui dengan "`apt-file update`" dan lokasinya berbeda dari 4 yang lainnya. Lihat apt-file(1). `auto-apt` menggunakan lokasi yang berbeda untuk salinan lokal "`Contents-arsitektur.gz`" sebagai baku.)

### 2.5.5. Keadaan paket untuk APT

Selain data meta yang diambil dari jarak jauh, alat APT setelah `lenny` menyimpan informasi keadaan instalasi yang dihasilkan secara lokal di "`/var/lib/apt/extended_states`" yang digunakan oleh semua alat APT untuk melacak semua paket yang dipasang secara otomatis.

### 2.5.6. Keadaan paket untuk aptitude

Selain data meta yang diambil dari jarak jauh, perintah `aptitude` menyimpan informasi keadaan instalasi yang dihasilkan secara lokal di "`/var/lib/aptitude/pkgstates`" yang hanya digunakan olehnya.

### 2.5.7. Salinan lokal dari paket yang diambil

Semua paket yang diambil dari jarak jauh melalui mekanisme APT disimpan dalam "`/var/cache/apt/archives`" sampai dibersihkan.

Kebijakan pembersihan berkas singgahan untuk `aptitude` ini dapat diatur di bawah "`Opsi`" → "`Preferensi`" dan dapat dipaksa oleh menunya "`Bersihkan singgahan paket`" atau "`Bersihkan berkas usang`" di bawah "`Aksi`".

### 2.5.8. Nama berkas paket Debian

Berkas-berkas paket Debian memiliki struktur nama tertentu.

Tabel 2.15. Struktur nama paket-paket Debian

tipe paket | struktur nama
--- | ---
Paket biner (a.k.a `deb`) | `package-name_upstream-version-debian.revision_architecture.deb`
Paket biner untuk debian-installer (a.k.a `udeb`) | `package-name_upstream-version-debian.revision_architecture.udeb`
Paket sumber (sumber hulu) | `package-name_upstream-version-debian.revision.orig.tar.gz`
Paket sumber `1.0` (Debian changes) | `package-name_upstream-version-debian.revision.diff.gz`
Paket sumber `3.0 (quilt)` (Debian changes) | `package-name_upstream-version-debian.revision.debian.tar.gz`
Paket sumber (deskripsi) | `package-name_upstream-version-debian.revision.dsc`

| Tip
Di sini hanya format paket sumber dasar yang dijelaskan. Lihat selengkapnya di dpkg-source(1).

Tabel 2.16. Karakter yang dapat digunakan untuk setiap komponen dalam nama paket Debian

komponen nama | karakter yang dapat digunakan (regex ERE) | eksistensi
--- | --- | ---
`package-name` | `[a-z0-9][-a-z0-9.+]+` | diperlukan
`epoch:` | `[0-9]+:` | opsional
`upstream-version` | `[-a-zA-Z0-9.+:]+` | diperlukan
`debian.revision` | `[a-zA-Z0-9.+~]+` | opsional

| Catatan
Anda dapat memeriksa urutan versi paket dengan dpkg(1), misalnya, "`dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?`" .

| Catatan
debian-installer (d-i) menggunakan `udeb` sebagai ekstensi berkas untuk paket binernya, bukan `deb`normal. Paket `udeb` adalah paket `deb` yang dirampingkan dengan menghilangkan beberapa konten yang tidak penting seperti dokumentasi untuk menghemat ruang sambil melonggarkan persyaratan kebijakan paket. Paket `deb` dan `Udeb` berbagi struktur paket yang sama. "`u`" singkatan dari mikro.

### 2.5.9. Perintah dpkg

dpkg(1) adalah alat tingkat terendah untuk manajemen paket Debian. Ini sangat kuat dan perlu digunakan dengan hati-hati.

Saat memasang paket yang disebut "`nama_paket`", `dpkg` mengolahnya dalam urutan berikut.

1. Membuka kemasan berkas deb ("setara `ar -x`")

2. Menjalankan "`nama_paket.preinst`" menggunakan debconf(1)

3. Memasang konten paket ke sistem ("setara `tar -x"`")

4. Menjalankan "`nama_paket.postinst`" menggunakan debconf(1)

Sistem `debconf` menyediakan interaksi pengguna standar dengan dukungan I18N dan L10N (Bab 8, I18N dan L10N).

Tabel 2.17. Berkas-berkas penting yang dibuat oleh `dpkg`

berkas | deskripsi konten
--- | ---
`/var/lib/dpkg/info/package_name.conffiles` | daftar berkas konfigurasi. (bisa diubah oleh pengguna)
`/var/lib/dpkg/info/package_name.list` | daftar berkas dan direktori yang dipasang oleh paket
`/var/lib/dpkg/info/package_name.md5sums` | daftar nilai hash MD5 untuk berkas-berkas yang dipasang oleh paket
`/var/lib/dpkg/info/package_name.preinst` | skrip paket yang akan dijalankan sebelum pemasangan paket
`/var/lib/dpkg/info/package_name.postinst` | skrip paket yang akan dijalankan setelah instalasi paket
`/var/lib/dpkg/info/package_name.prerm` | skrip paket yang akan dijalankan sebelum penghapusan paket
`/var/lib/dpkg/info/package_name.postrm` | skrip paket yang akan dijalankan setelah penghapusan paket
`/var/lib/dpkg/info/package_name.config` | skrip paket untuk sistem `debconf`
`/var/lib/dpkg/alternatives/package_name` | informasi alternatif yang digunakan oleh perintah `update-alternatives`
`/var/lib/dpkg/available` | informasi ketersediaan untuk semua paket
`/var/lib/dpkg/diversions` | informasi diversi yang digunakan oleh dpkg(1) dan ditata oleh dpkg-divert(8)
`/var/lib/dpkg/statoverride` | informasi penimpaan stat yang digunakan oleh dpkg(1) dan ditata oleh dpkg-statoverride(8)
`/var/lib/dpkg/status` | informasi status untuk semua paket
`/var/lib/dpkg/status-old` | cadangan generasi pertama dari berkas "`var/lib/dpkg/status`"
`/var/backups/dpkg.status*` | cadangan generasi kedua dan yang lebih tua dari berkas "`var/lib/dpkg/status`

Berkas "`status`" juga digunakan oleh alat-alat seperti dpkg(1), "`dselect update`", dan "`apt-get -u dselect-upgrade`".

Perintah pencarian khusus grep-dctrl(1) dapat mencari salinan lokal dari meta data "`status`" dan "`available`".

| Tip
Di lingkungan debian-installer, perintah `udpkg` digunakan untuk membuka paket `udeb`. Perintah `udpkg` adalah versi ramping dari perintah `dpkg`.

### 2.5.10. Perintah update-alternatives

Sistem Debian memiliki mekanisme untuk memasang program yang agak tumpang tindih secara damai menggunakan update-alternatives(1). Misalnya, Anda dapat membuat perintah `vi` memilih untuk menjalankan `vim` saat memasang paket `vim` dan `nvi`.

    $ ls -l $(type -p vi)
    lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi
    $ sudo update-alternatives --display vi
    ...
    $ sudo update-alternatives --config vi
      Selection    Command
     ----------------------------------------------
          1        /usr/bin/vim
    *+    2        /usr/bin/nvi

    Enter to keep the default[*], or type selection number: 1

Sistem alternatif Debian menjaga pemilihannya sebagai symlink dalam "`/etc/alternatives/`". Proses seleksi menggunakan berkas yang sesuai dalam "`/var/lib/dpkg/alternatives/`".

### 2.5.11. Perintah dpkg-statoverride

Penimpaan stat yang disediakan oleh perintah dpkg-statoverride(8) adalah cara untuk memberi tahu dpkg(1) agar menggunakan pemilik atau mode yang berbeda bagi suatu berkas saat paket dipasang. Jika "`--update`" dinyatakan dan berkas ada, itu seketika diatur ke pemilik dan mode baru.

| Perhatian
Perubahan langsung pemilik atau mode untuk berkas yang dimiliki oleh paket menggunakan perintah `chmod` atau `chown` oleh administrator sistem diatur ulang dengan peningkatan paket berikutnya.

| Catatan
Saya menggunakan kata berkas di sini, tetapi pada kenyataannya ini bisa menjadi sebarang objek sistem berkas yang ditangani `dpkg`, termasuk direktori, perangkat, dll.

### 2.5.12. Perintah dpkg-divert

Pengalihan berkas yang disediakan oleh perintah dpkg-divert(8) adalah cara memaksa dpkg(1) untuk tidak menginstall berkas ke lokasi baku, tetapi ke lokasi yang dialihkan. Penggunaan `dpkg-divert` dimaksudkan bagi skrip pemeliharaan paket. Penggunaannya yang santai oleh administrator sistem sudah usang.

## 2.6. Pemulihan dari sistem yang rusak

Ketika menjalankan sistem `testing` atau `unstable`, administrator diharapkan memulihkan dari situasi manajemen paket yang rusak.

| Perhatian
Beberapa metode yang dijelaskan di sini adalah tindakan berisiko tinggi. Anda telah diperingatkan!

### 2.6.1. Ketidakcocokan dengan konfigurasi pengguna lama

Jika program GUI desktop mengalami ketidakstabilan setelah peningkatan versi hulu yang signifikan, Anda harus mencurigai gangguan atas berkas konfigurasi lokal lama yang dibuat olehnya. Jika itu stabil di bawah akun pengguna yang baru dibuat, hipotesis ini dikonfirmasi. (Ini adalah bug pemaketan dan biasanya dihindari oleh pemaket.)

Untuk memulihkan stabilitas, Anda harus memindahkan berkas konfigurasi lokal yang sesuai dan memulai ulang program GUI. Anda mungkin perlu membaca konten berkas konfigurasi lama untuk memulihkan informasi konfigurasi nanti. (Jangan menghapusnya terlalu cepat.)

### 2.6.2. Kesalahan penyinggahan atas data paket

Kesalahan penyinggahan data paket menyebabkan kesalahan yang menarik, seperti "Kesalahan GPG: ... tidak valid: BADSIG ..." dengan APT.

Anda harus menghapus semua data yang disinggahkan dengan "`sudo rm -rf /var/lib/apt/*` " dan coba lagi. (Jika `apt-cacher-ng` digunakan, Anda juga harus menjalankan "`sudo rm -rf /var/cache/apt-cacher-ng/*` ".)

### 2.6.3. Penyelamatan dengan perintah dpkg

Karena `dpkg` adalah alat paket tingkat rendah, alat ini dapat berfungsi tanpa koneksi jaringan.

Asumsikan paket `foo` rusak dan perlu diperbaiki.

Anda mungkin masih menemukan salinan singgahan dari versi bebas bug yang lebih lama dari paket `foo` di direktori singgahan paket: "`/var/cache/apt/archives/`". (Jika tidak, Anda dapat mengunduhnya dari arsip https://snapshot.debian.org/ atau menyalinnya dari singgahan paket mesin yang berfungsi.)

Jika Anda dapat mem-boot sistem, Anda dapat memasangnya dengan perintah berikut.

    # dpkg -i /path/to/foo_old_version_arch.deb

Jika mencoba memasang paket dengan cara ini gagal karena beberapa pelanggaran ketergantungan dan Anda benar-benar perlu melakukan ini sebagai upaya terakhir, Anda dapat mengesampingkan ketergantungan menggunakan "`--ignore-depends`", "`--force-depends`", dan opsi `dpkg` lainnya. Jika Anda melakukan ini, Anda perlu melakukan upaya serius untuk mengembalikan ketergantungan yang tepat nanti. Lihat dpkg(8) untuk detailnya.

| Catatan
Jika sistem Anda rusak parah, Anda harus membuat cadangan penuh sistem ke tempat yang aman (lihat Bagian 10.2, “Pencadangan dan pemulihan”) dan harus melakukan instalasi bersih. Ini lebih singkat dan memberikan hasil yang lebih baik pada akhirnya.

| Tip
Jika kerusakan sistem kecil, Anda dapat menuruntingkatkan seluruh sistem seperyi dalam Bagian 2.7.11, “Penurunan tingkat darurat” menggunakan sistem APT tingkat yang lebih tinggi.

### 2.6.4. Instalasi gagal karena dependensi yang kurang

Jika Anda memaksa memasang paket dengan "`sudo dpkg -i ...`" ke sistem tanpa semua paket ketergantungan dipasang, instalasi paket akan gagal sebagai terpasang sebagian.

Anda harus menginstall semua paket dependensi secara berulang menggunakan "`sudo dpkg -i ...`" atau dengan menggunakan:

    # apt --fix-broken install

Lalu konfigurasikan semua paket yang terpasang sebagian dengan perintah berikut.

    # dpkg --configure -a

### 2.6.5. Paket yang berbeda dengan berkas-berkas yang tumpang tindih

Sistem manajemen paket tingkat arsip, seperti aptitude(8) atau apt-get(1), bahkan tidak mencoba memasang paket dengan berkas yang tumpang tindih menggunakan dependensi paket (lihat Bagian 2.1.7, “Dependensi paket”).

Kesalahan oleh pengelola paket atau penyebaran sumber arsip campuran yang tidak konsisten (lihat Bagian 2.7.6, “Paket dari campuran sumber arsip tanpa apt-pinning”) oleh administrator sistem dapat menciptakan situasi dengan dependensi paket yang salah didefinisikan. Ketika Anda memasang paket dengan berkas yang tumpang tindih menggunakan aptitude(8) atau apt-get(1) dalam situasi seperti itu, dpkg(1) yang membuka kemasan paket memastikan untuk mengembalikan kesalahan ke program pemanggil tanpa menimpa berkas yang ada.

| Perhatian
Penggunaan paket pihak ketiga memperkenalkan risiko sistem yang signifikan melalui skrip pengelola yang dijalankan dengan hak istimewa root dan dapat melakukan apa saja pada sistem Anda. Perintah dpkg(1) hanya melindungi terhadap penimpaan oleh pembukaan kemasan.

Anda dapat mengatasi instalasi yang rusak tersebut dengan pertama kali menghapus paket lama yang bermasalah, `paket-lama`.

    $ sudo dpkg -P old-package

### 2.6.6. Memperbaiki skrip paket yang rusak

Ketika perintah dalam skrip paket mengembalikan kesalahan karena beberapa alasan dan skrip keluar dengan kesalahan, sistem manajemen paket membatalkan tindakan mereka dan berakhir dengan paket yang terpasang sebagian. Ketika sebuah paket berisi bug dalam skrip penghapusannya, paket bisa saja menjadi tidak mungkin dihapus dan cukup jahat.

Untuk masalah skrip paket "`nama_paket`", Anda harus melihat ke dalam skrip-skrip paket berikut.

- "`/var/lib/dpkg/info/nama_paket.preinst`"

- "`/var/lib/dpkg/info/nama_paket.postinst`"

- "`/var/lib/dpkg/info/nama_paket.prerm`"

- "`/var/lib/dpkg/info/nama_paket.postrm`"

Sunting skrip paket yang bermasalah dari root menggunakan teknik-teknik berikut.

- nonaktifkan baris yang bermasalah dengan menyisipkan "`#`" di awal

- paksa untuk mengembalikan sukses dengan menambahi baris bermasalah dengan "`|| true`"

Lalu konfigurasikan semua paket yang terpasang sebagian dengan perintah berikut.

    # dpkg --configure -a

### 2.6.7. Memulihkan data pemilihan paket

Jika "`/var/lib/dpkg/status`" terkorupsi karena alasan apapun, sistem Debian kehilangan data pemilihan paket dan sangat menderita. Cari berkas lama "`/var/lib/dpkg/status`" di "`/var/lib/dpkg/status-old`", atau "`/var/backups/dpkg.status.*`".

Menjaga "`/var/backups/`" dalam partisi terpisah mungkin merupakan ide yang baik karena direktori ini berisi banyak data sistem yang penting.

Untuk kerusakan serius, saya sarankan untuk melakukan instalasi ulang dari awal setelah membuat cadangan sistem. Bahkan jika semua dalam "`/var/`" hilang, Anda masih dapat memulihkan sebagian informasi dari direktori di "`/usr/share/doc/`" untuk memandu instalasi baru Anda.

Memasang ulang sistem minimal (desktop).

    # mkdir -p /path/to/old/system

Kait sistem lama di "`/path/ke/sistem/lama/`".

    # cd /path/to/old/system/usr/share/doc
    # ls -1 >~/ls1.txt
    # cd /usr/share/doc
    # ls -1 >>~/ls1.txt
    # cd
    # sort ls1.txt | uniq | less

Kemudian Anda disajikan dengan nama paket untuk yang akan dipasang. (Mungkin ada beberapa nama non-paket seperti "`texmf`".)

## 2.7. Tips untuk manajemen paket

Untuk kesederhanaan, contoh-contoh daftar sumber dalam bagian ini disajikan sebagai "`/etc/apt/sources.list`" dalam gaya satu baris setelah rilis `trixie`.

### 2.7.1. Siapa yang mengunggah paket tersebut?

Meskipun nama pengelola yang tercantum dalam "`/var/lib/dpkg/available`" dan "`/usr/share/doc/nama_paket/changelog`" memberikan beberapa informasi tentang "siapa yang berada di balik aktivitas pengemasan", pengunggah sebenarnya dari paket ini agak tidak jelas. who-uploads(1) dalam paket `devscripts` mengidentifikasi pengunggah sebenarnya dari paket sumber Debian.

### 2.7.2. Membatasi bandwidth unduhan untuk APT

Jika Anda ingin membatasi bandwidth unduhan untuk APT mis. 800Kib/detik (=100kiB/detik), Anda harus mengonfigurasi APT dengan parameter konfigurasinya sebagai berikut.

    APT::Acquire::http::Dl-Limit "800";

### 2.7.3. Pengunduhan dan peningkatan paket secara otomatis

Paket `apt` dilengkapi dengan skrip cron sendiri "`/etc/cron.daily/apt`"untuk mendukung pengunduhan paket secara otomatis. Skrip ini dapat dilengkapkan untuk melakukan peningkatan otomatis paket dengan memasang paket `unattended-upgrades`. Ini dapat disesuaikan dengan parameter dalam "`/etc/apt/apt.conf.d/02backup`" dan "`/etc/apt/apt.conf.d/50unattended-upgrades`" seperti yang dijelaskan dalam "`/usr/share/doc/unattended-upgrades/README`".

Paket `unattended-upgrade` terutama ditujukan untuk peningkatan keamanan untuk sistem `stable`. Jika risiko merusak sistem `stable` yang ada dengan peningkatan otomatis lebih kecil dari sistem yang rusak oleh penyusup menggunakan lubang keamanan yang telah ditutup oleh pembaruan keamanan, Anda harus mempertimbangkan untuk menggunakan peningkatan otomatis ini dengan parameter konfigurasi sebagai berikut.

    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Download-Upgradeable-Packages "1";
    APT::Periodic::Unattended-Upgrade "1";

Jika Anda menjalankan sistem `testing` atau `unstable`, Anda tidak ingin menggunakan peningkatan otomatis karena pasti merusak sistem suatu hari nanti. Bahkan untuk kasus `testing` atau `unstable` seperti itu, Anda mungkin masih ingin mengunduh paket terlebih dahulu untuk menghemat waktu untuk peningkatan interaktif dengan parameter konfigurasi sebagai berikut.

    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Download-Upgradeable-Packages "1";
    APT::Periodic::Unattended-Upgrade "0";

### 2.7.4. Pembaruan dan Backport

Ada arsip stable-updates ("`trixie`-updates" selama siklus rilis `trixie`-as-`stable`) dan backports.debian.org yang menyediakan paket-paket peningkatan untuk `stable`.

Untuk menggunakan arsip ini, Anda mencantumkan semua arsip yang diperlukan dalam berkas "`/etc/apt/sources.list`" seperti berikut ini.

    deb http://deb.debian.org/debian/ trixie main non-free-firmware contrib non-free
    deb http://security.debian.org/debian-security trixie-security main non-free-firmware contrib non-free
    deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware contrib non-free
    deb http://deb.debian.org/debian/ trixie-backports main non-free-firmware contrib non-free

Tidak perlu mengatur nilai Pin-Priority secara eksplisit dalam berkas "`/etc/apt/preferences`". Ketika paket yang lebih baru tersedia, konfigurasi baku menyediakan peningkatan yang paling masuk akal (lihat Bagian 2.5.3, “Berkas "Release" tingkat arsip”).

- Semua paket lama yang terpasang ditingkatkan ke yang lebih baru dari `trixie-updates`.

- Hanya paket lama yang dipasang secara manual dari `trixie-backports` yang ditingkatkan ke yang lebih baru dari `trixie-backports`.

Setiap kali Anda ingin memasang paket bernama "`nama-paket`" dengan ketergantungannya dari arsip `trixie-backports` secara manual, Anda menggunakan perintah berikut saat beralih rilis target dengan opsi "`-t`".

    $ sudo apt-get install -t trixie-backports package-name

| Awas
Jangan memasang terlalu banyak paket dari arsip backports.debian.org. Itu bisa menyebabkan komplikasi kebergantungan paket. Lihat Bagian 2.1.11, “Bagaimana menghadapi persyaratan yang bertentangan” untuk solusi-solusi alternatif.

### 2.7.5. Arsip paket eksternal

| Awas
Anda harus menyadari bahwa paket eksternal mendapatkan hak root ke sistem Anda. Anda hanya boleh menggunakan arsip paket eksternal terpercaya. Lihat Bagian 2.1.11, “Bagaimana menghadapi persyaratan yang bertentangan” untuk solusi alternatif.

Anda dapat menggunakan APT yang aman dengan arsip paket eksternal yang kompatibel dengan Debian dengan menambahkannya ke daftar sumber dan berkas kunci arsip ke direktori "`/etc/apt/trusted.gpg.d/`". Lihat sources.list(5), apt-secure(8), dan apt-key(8).

### 2.7.6. Paket dari campuran sumber arsip tanpa apt-pinning

| Perhatian
Memasangl paket dari sumber campuran arsip tidak didukung oleh distribusi Debian resmi kecuali untuk kombinasi tertentu dari arsip yang secara resmi didukung seperti `stable` dengan pemutakhiran keamanan dan stable-updates.

Berikut adalah contoh operasi untuk memasukkan paket versi hulu baru tertentu yang ditemukan di `unstable` sambil melacak `testing` untuk satu kesempatan.

1. Ubah berkas "`/etc/apt/sources.list`" untuk sementara menjadi entri tunggal "`unstable`".

2. Jalankan "`aptitude update`".

3. Jalankan "`aptitude install nama-paket`".

4. Pulihkan berkas asli "`/etc/apt/sources.list`" untuk `testing`.

5. Jalankan "`aptitude update`".

Anda tidak membuat berkas "`/etc/apt/preferences`" atau khawatir tentang apt-pinning dengan pendekatan manual ini. Tapi ini sangat rumit.

| Perhatian
Saat menggunakan sumber arsip campuran, Anda harus memastikan sendiri kompatibilitas paket karena Debian tidak menjaminnya. Jika ketidakcocokan paket ada, Anda dapat merusak sistem. Anda harus dapat menilai persyaratan teknis ini. Penggunaan sumber campuran arsip acak benar-benar merupakan operasi opsional dan penggunaannya bukan sesuatu yang saya dorong Anda untuk lakukan.

Aturan umum untuk memasang paket dari arsip yang berbeda adalah sebagai berikut.

- Paket non-biner ("`Architecture: all`") lebih aman untuk dipasang.

  - paket dokumentasi: tidak ada persyaratan khusus

  - paket program interpreter: interpreter yang kompatibel harus tersedia

- Paket biner (non "`Architecture: all`") biasanya menghadapi banyak hambatan dan tidak aman untuk dipasang.

  - kompatibilitas versi pustaka (termasuk "`libc`")

  - kompatibilitas versi program utilitas terkait

  - Kompatibilitas ABI kernel

  - Kompatibilitas ABI C++

  - …

| Catatan
Untuk membuat paket menjadi lebih aman untuk dipasang, beberapa paket program biner komersial non-free dapat disediakan dengan pustaka yang sepenuhnya di-link secara statis. Anda masih harus memeriksa masalah kompatibilitas ABI dsb. untuk mereka.

| Catatan
Kecuali untuk menghindari paket rusak dalam jangka pendek, memasang paket biner dari arsip non-Debian umumnya ide buruk. Anda harus mencari semua alternatif solusi teknis yang lebih aman yang kompatibel dengan sistem Debian Anda saat ini (lihat Bagian 2.1.11, “Bagaimana menghadapi persyaratan yang bertentangan”).

### 2.7.7. Menyetel halus versi kandidat dengan apt-pinning

| Awas
Penggunaan teknik apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan teknik ini kecuali ketika Anda benar-benar membutuhkannya.

Tanpa berkas "`/etc/apt/preferences`", sistem APT memilih versi terbaru yang tersedia sebagai versi kandidat menggunakan string versi. Ini adalah keadaan normal dan penggunaan sistem APT yang paling direkomendasikan. Semua kombinasi arsip yang didukung secara resmi tidak memerlukan berkas "`/etc/apt/preferences`" karena beberapa arsip yang tidak boleh digunakan sebagai sumber otomatis peningkatan ditandai sebagai NotAutomatic dan ditangani dengan benar.

| Tip
Aturan perbandingan string versi dapat diverifikasi dengan, misalnya, "`dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?`" (lihat dpkg(1)).

Ketika Anda memasang paket dari sumber campuran arsip (lihat Bagian 2.7.6, “Paket dari campuran sumber arsip tanpa apt-pinning”) secara teratur, Anda dapat mengotomatisasi operasi rumit ini dengan membuat berkas "`/etc/apt/preferences`" dengan entri yang tepat dan mengutak-atik aturan pemilihan paket untuk versi kandidat seperti yang dijelaskan dalam apt_preferences(5). Ini disebut apt-pinning.

Saat menggunakan apt-pinning, Anda harus memastikan kompatibilitas paket sendiri karena Debian tidak menjaminnya. Apt-pinning adalah operasi yang benar-benar opsional dan penggunaannya bukanlah sesuatu yang saya anjurkan untuk Anda gunakan.

Berkas Release tingkat arsip (lihat Bagian 2.5.3, “Berkas "Release" tingkat arsip”) digunakan untuk aturan apt_preferences(5). Jadi apt-pinning bekerja hanya dengan nama "suite" untuk arsip Debian normal dan arsip Debian keamanan. (Ini berbeda dari arsip Ubuntu.) Misalnya, Anda dapat melakukan "`Pin: release a=unstable`" tetapi tidak dapat melakukan "`Pin: release a=sid`" di berkas "`/etc/apt/preferences`".

Ketika Anda menggunakan arsip non-Debian sebagai bagian dari apt-pinning, Anda harus memeriksa apa yang mereka maksudkan untuk dan juga memeriksa kredibilitas mereka. Misalnya, Ubuntu dan Debian tidak dimaksudkan untuk dicampur.

| Catatan
Bahkan jika Anda tidak membuat berkas "`/etc/apt/preferences`", Anda dapat melakukan operasi sistem yang cukup kompleks (lihat Bagian 2.6.3, “Penyelamatan dengan perintah dpkg” dan Bagian 2.7.6, “Paket dari campuran sumber arsip tanpa apt-pinning”) tanpa apt-pinning.

Berikut adalah penjelasan sederhana tentang teknik apt-pinning.

Sistem APT memilih paket peningkatan dengan Pin-Priority tertinggi dari sumber paket yang tersedia yang didefinisikan dalam berkas "`/etc/apt/sources.list`" sebagai paket versi kandidat. Jika Pin-Priority paket lebih besar dari 1000, pembatasan versi ini untuk peningkatan dihapus untuk mengaktifkan penurunan tingkat (lihat Bagian 2.7.11, “Penurunan tingkat darurat”).

Nilai Pin-Priority dari setiap paket didefinisikan oleh entri "Pin-Priority" dalam berkas "`/etc/apt/preferences`" atau menggunakan nilai defaultnya.

Tabel 2.18. Daftar nilai Pin-Priority yang terkenal untuk teknik apt-pinning.

Pin-Priority | efek apt-pinning ke paket
--- | ---
1001 | pasang paket bahkan jika ini merupakan penurunan tingkat paket
990 | digunakan sebagai baku untuk arsip rilis target
500 | digunakan sebagai baku untuk arsip normal
100 | digunakan sebagai baku untuk arsip NotAutomatic dan ButAutomaticUpgrades
100 | digunakan untuk paket terpasang
1 | digunakan sebagai baku untuk arsip NotAutomatic
-1 | jangan pernah pasang paket bahkan jika direkomendasikan

Arsip rilis target dapat ditata dengan opsi baris perintah, mis., "`apt-get install -t testing paket-anu`"

Arsip NotAutomatic dan ButAutomaticUpgrades diatur oleh server arsip yang memiliki berkas Release tingkat arsip (lihat Bagian 2.5.3, “Berkas "Release" tingkat arsip”) yang berisi "`NotAutomatic: yes`" dan "`ButAutomaticUpgrades: yes`". Arsip NotAutomatic diatur oleh server arsip yang memiliki berkas Release tingkat arsip yang hanya berisi "`NotAutomatic: yes`".

Situasi apt-pinning paket dari beberapa sumber arsip ditampilkan oleh "`apt-cache policy paket`".

- Baris yang diawali dengan "`"Package pin:`" mencantumkan daftar versi paket pin jika asosiasi hanya dengan paket didefinisikan, mis., "`Package pin: 0.190`".

- Tidak ada baris dengan "`Package pin:`" yang ada jika tidak ada asosiasi hanya dengan paket yang didefinisikan.

- Nilai Pin-Priority yang terkait hanya dengan paket tercantum di sisi kanan semua string versi, mis., "`0.181 700`".

- "`0`" terdaftar di sisi kanan semua string versi jika tidak ada asosiasi hanya dengan paket yang didefinisikan, mis., "`0.181 0`".

- Nilai Pin-Priority arsip (didefinisikan sebagai "`Package: *`" dalam berkas "`/etc/apt/preferences`") terdaftar di sisi kiri semua jalur arsip, mis., "`100 http://deb.debian.org/debian/ trixie-backports/main Packages`".

### 2.7.8. Memblokir paket yang dipasang oleh "Recommends"

| Awas
Penggunaan teknik apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan teknik ini kecuali ketika Anda benar-benar membutuhkannya.

Jika Anda ingin tidak menarik paket tertentu secara otomatis dengan "Recommends", Anda harus membuat berkas "`/etc/apt/preferences`" dan secara eksplisit mencantumkan semua paket tersebut di bagian atasnya sebagai berikut ini.

    Package: package-1
    Pin: version *
    Pin-Priority: -1

    Package: package-2
    Pin: version *
    Pin-Priority: -1

### 2.7.9. Melacak `testing` dengan beberapa paket dari `unstable`

| Awas
Penggunaan teknik apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan teknik ini kecuali ketika Anda benar-benar membutuhkannya.

Berikut adalah contoh teknik apt-pinning untuk menyertakan paket versi hulu baru tertentu yang ditemukan dalam `unstable` secara teratur ditingkatkan saat melacak `testing`. Anda mencantumkan semua arsip yang diperlukan dalam berkas "`/etc/apt/sources.list`" dengan cara berikut ini.

    deb http://deb.debian.org/debian/ testing main contrib non-free
    deb http://deb.debian.org/debian/ unstable main contrib non-free
    deb http://security.debian.org/debian-security testing-security main contrib

Atur berkas "`/etc/apt/preferences`" dengan cara berikut ini.

    Package: *
    Pin: release a=unstable
    Pin-Priority: 100

Ketika Anda ingin memasang paket bernama "`nama-paket`" dengan dependensinya dari arsip `unstable` di bawah konfigurasi ini, Anda mengeluarkan perintah berikut yang mengalihkan rilis target dengan opsi "`-t`" (Pin-Priority `unstable` menjadi 990).

    $ sudo apt-get install -t unstable package-name

Dengan konfigurasi ini, eksekusi biasa "`apt-get upgrade`" dan "`apt-get dist-upgrade`" (atau "`aptitude safe-upgrade`" dan "`aptitude full-upgrade`") meningkatkan paket-paket yang dipasang dari arsip `testing` menggunakan arsip `testing` saat ini dan paket-paket yang dipasang dari arsip `unstable` menggunakan arsip `unstable` saat ini.

| Perhatian
Berhati-hatilah untuk tidak menghapus entri "`testing`" entri dari "`/etc/apt/sources.list`". Tanpa entri "`testing` di dalamnya, sistem APT meningkatkan paket menggunakan arsip `unstable` yang lebih baru.

| Tip
Saya biasanya menyunting berkas "`/etc/apt/sources.list`" untuk mengomentari entri arsip "`unstabil`" tepat setelah operasi di atas. Ini menghindari proses pembaruan yang lambat karena memiliki terlalu banyak entri dalam berkas "`/etc/apt/sources.list`" meskipun ini mencegah peningkatan paket yang dipasang dari arsip `unstable` menggunakan arsip `unstable` saat ini.

| Tip
Jika "`Pin-Priority: 1`" digunakan sebagai pengganti "`Pin-Priority: 100`" dalam berkas "`/etc/apt/preferences`", paket yang sudah diinstall dengan nilai Pin-Priority 100 tidak ditingkatkan oleh arsip `unstable` bahkan jika entri "`testing`" di "`/etc/apt/sources.list`" dihapus.

Jika Anda ingin melacak paket tertentu dalam `unstable` secara otomatis tanpa instalasi awal "`-t unstable`", Anda harus membuat berkas "`/etc/apt/preferences`" dan secara eksplisit mencantumkan semua paket tersebut di bagian atasnya sebagai berikut.

    Package: package-1
    Pin: release a=unstable
    Pin-Priority: 700

    Package: package-2
    Pin: release a=unstable
    Pin-Priority: 700

Ini menetapkan nilai Pin-Priority untuk setiap paket tertentu. Misalnya, untuk melacak versi `unstable` terbaru dari "Referensi Debian" ini dalam bahasa Inggris, Anda harus memiliki entri berikut dalam berkas "`/etc/apt/preferences`".

    Package: debian-reference-en
    Pin: release a=unstable
    Pin-Priority: 700

    Package: debian-reference-common
    Pin: release a=unstable
    Pin-Priority: 700

| Tip
Teknik apt-pinning ini berlaku bahkan ketika Anda melacak arsip `stable`. Sejauh ini, paket dokumentasi selalu aman untuk dipasang dari arsip `unstable` dalam pengalaman saya.

### 2.7.10. Pelacakan `unstable` dengan beberapa paket dari `experimental`

| Awas
Penggunaan teknik apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan teknik ini kecuali ketika Anda benar-benar membutuhkannya.

Berikut adalah contoh lain dari teknik apt-pinning untuk memasukkan paket versi hulu baru tertentu yang ditemukan dalam `experimental` sambil melacak `unstable`. Anda mencantumkan semua arsip yang diperlukan dalam berkas "`/etc/apt/sources.list`" sebagai berikut ini.

    deb http://deb.debian.org/debian/ unstable main contrib non-free
    deb http://deb.debian.org/debian/ experimental main contrib non-free
    deb http://security.debian.org/ testing-security main contrib

Nilai Pin-Priority baku untuk arsip `experimental` selalu 1 (<<100) karena merupakan arsip NotAutomatic (lihat Bagian 2.5.3, “Berkas "Release" tingkat arsip”). Tidak perlu mengatur nilai Pin-Priority secara eksplisit dalam berkas "`/etc/apt/preferences`" hanya untuk menggunakan arsip `experimental` kecuali Anda ingin melacak paket tertentu di dalamnya secara otomatis untuk peningkatan berikutnya.

### 2.7.11. Penurunan tingkat darurat

| Awas
Penggunaan teknik apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan teknik ini kecuali ketika Anda benar-benar membutuhkannya.

| Perhatian
Penurunan tingkat tidak secara resmi didukung oleh Debian secara desain. Ini harus dilakukan hanya sebagai bagian dari proses pemulihan darurat. Terlepas dari situasi ini, telah diketahui bekerja dengan baik dalam banyak insiden. Untuk sistem kritis, Anda harus mencadangkan semua data penting pada sistem setelah operasi pemulihan dan memasang ulang sistem baru dari awal.

Anda mungkin beruntung untuk menurun-tingkatkan dari arsip yang lebih baru ke arsip lama untuk memulihkan dari peningkatan sistem yang rusak dengan memanipulasi versi kandidat (lihat Bagian 2.7.7, “Menyetel halus versi kandidat dengan apt-pinning”). Ini adalah alternatif malas untuk tindakan membosankan dari banyak perintah "`dpkg -i paket-rusak_versi-lama.deb`" perintah (lihat Bagian 2.6.3, “Penyelamatan dengan perintah dpkg”).

Cari baris-baris di berkas "`/etc/apt/sources.list`" yang melacak `unstable` sebagai berikut.

    deb http://deb.debian.org/debian/ sid main contrib non-free

Ganti dengan yang berikut untuk melacak `testing`.

    deb http://deb.debian.org/debian/ forky main contrib non-free

Atur berkas "`/etc/apt/preferences`" dengan cara berikut ini.

    Package: *
    Pin: release a=testing
    Pin-Priority: 1010

Jalankan "`apt-get update; apt-get dist-upgrade`" untuk memaksa penurunan tingkat paket di seluruh sistem.

Hapus berkas khusus "`/etc/apt/preferences`" ini setelah penurunan tingkat darurat ini.

| Tip
Ide yang baik untuk menghapus (tidak membersihkan!) sebanyak mungkin paket untuk meminimalkan masalah ketergantungan. Anda mungkin perlu menghapus dan memasang beberapa paket secara manual untuk menurun-tingkatkan sistem secara manual. Kernel Linux, bootloader, udev, PAM, APT, dan paket terkait jaringan serta berkas-berkas konfigurasi mereka membutuhkan perhatian khusus.

### 2.7.12. Paket equivs

Jika Anda ingin mengkompilasi program dari sumber untuk menggantikan paket Debian, yang terbaik adalah membuatnya menjadi paket debianized lokal nyata (`*.deb`) dan menggunakan arsip pribadi.

Jika Anda memilih untuk mengkompilasi program dari sumber dan menginstalnya di bawah "`/usr/local`" sebagai gantinya, Anda mungkin perlu menggunakan `equivs` sebagai upaya terakhir untuk memenuhi ketergantungan paket yang hilang.

    Package: equivs
    Priority: optional
    Section: admin
    Description: Circumventing Debian package dependencies
     This package provides a tool to create trivial Debian packages.
     Typically these packages contain only dependency information, but they
     can also include normal installed files like other packages do.
     .
     One use for this is to create a metapackage: a package whose sole
     purpose is to declare dependencies and conflicts on other packages so
     that these will be automatically installed, upgraded, or removed.
     .
     Another use is to circumvent dependency checking: by letting dpkg
     think a particular package name and version is installed when it
     isn't, you can work around bugs in other packages' dependencies.
     (Please do still file such bugs, though.)

### 2.7.13. Mem-port paket ke sistem stable

| Perhatian
Tidak ada garansi bahwa prosedur yang diuraikan di sini bekerja tanpa upaya manual ekstra bagi perbedaan sistem.

Untuk peningkatan parsial dari sistem `stable`, membangun kembali paket dalam lingkungannya menggunakan paket sumber itu diinginkan. Ini menghindari peningkatan paket besar-besaran karena ketergantungan mereka.

Tambahkan entri berikut ke "`/etc/apt/sources.list`" dari sistem `stable`.

    deb-src http://deb.debian.org/debian unstable  main contrib non-free

Pasang paket yang diperlukan untuk kompilasi dan unduh paket sumber sebagai berikut.

    # apt-get update
    # apt-get dist-upgrade
    # apt-get install fakeroot devscripts build-essential
    # apt-get build-dep foo
    $ apt-get source foo
    $ cd foo*

Perbarui beberapa paket rantai alat seperti `dpkg` dan `debhelper` dari paket backport jika mereka diperlukan untuk mem-backport.

Jalankan hal-hal berikut.

    $ dch -i

Naikkan versi paket, mis. dengan menambahkan "`+bp1`" di "`debian/changelog`"

Bangun paket dan pasang mereka ke sistem sebagai berikut.

    $ debuild
    $ cd ..
    # debi foo*.changes

### 2.7.14. Server proksi untuk APT

Karena mencerminkan seluruh sub bagian arsip Debian membuang ruang disk dan bandwidth jaringan, penggelaran server proksi lokal untuk APT adalah pertimbangan yang diinginkan ketika Anda mengelola banyak sistem pada LAN. APT dapat dikonfigurasi untuk menggunakan server proxy web generik (http) seperti `squid` (lihat Bagian 6.5, “Server aplikasi jaringan lainnya”) seperti yang dijelaskan dalam apt.conf(5) dan dalam "`/usr/share/doc/apt/examples/configure-index.gz`". Variabel lingkungan "`$http_proxy`" dapat digunakan untuk menimpa pengaturan server proksi dalam berkas "`/etc/apt/apt.conf`".

Ada alat proksi khusus untuk arsip Debian. Anda harus memeriksa BTS sebelum menggunakannya.

Tabel 2.19. Daftar alat proksi khusus untuk arsip Debian

paket | popcon | ukuran | deskripsi
--- | --- | --- | ---
`apt-cacher` | V:0.31, I:0.37 | 267 | Proksi penyinggahan untuk berkas sumber dan paket Debian (program Perl)
`apt-cacher-ng` | V:4.0, I:4.1 | 1968 | Proksi penyinggahan untuk distribusi paket perangkat lunak (program C++ yang dikompilasi)

| Perhatian
Ketika Debian mereorganisasi struktur arsipnya, alat proksi khusus ini cenderung memerlukan penulisan ulang kode oleh pengelola paket dan mungkin tidak berfungsi untuk sementara waktu. Di sisi lain, server proksi web generik (http) lebih kuat dan lebih mudah untuk mengatasi perubahan tersebut.

### 2.7.15. Lebih banyak bacaan untuk manajemen paket

Anda dapat mempelajari lebih lanjut tentang manajemen paket dari dokumentasi berikut.

- Dokumentasi primer tentang manajemen paket:

  - aptitude(8), dpkg(1), tasksel(8), apt(8), apt-get(8), apt-config(8), apt-secure(8), sources.list(5), apt.conf(5), dan apt_preferences(5);

  - "`/usr/share/doc/apt-doc/guide.html/index.html`" dan "`/usr/share/doc/apt-doc/offline.html/index.html`" dari paket `apt-doc`; dan

  - "`/usr/share/doc/aptitude/html/en/index.html`" dari paket `aptitude-doc-en`.

- Dokumentasi resmi dan terperinci pada arsip Debian:

  - "Manual Kebijakan Debian Bab 2 - Arsip Debian",

  - "Acuan Pengembang Debian, Bab 4 - Sumber Daya bagi Para Pengembang Debian 4.6 Arsip Debian", dan

  - "FAQ Debian GNU/Linux, Bab 6 - Arsip FTP Debian".

- Tutorial untuk membangun paket Debian untuk pengguna Debian:

  - "Panduan bagi Para Pemelihara Debian".

Bab 1. Tutorial GNU/Linux |  | Bab 3. Inisialisasi sistem