Bab 2. Manajemen paket Debian

Daftar Isi

2.1. Prasyarat manajemen paket Debian
2.1.1. Konfigurasi paket
2.1.2. Tindakan pencegahan dasar
2.1.3. Hidup dengan peningkatan abadi
2.1.4. Dasar-dasar arsip Debian
2.1.5. Debian adalah perangkat lunak 100% bebas
2.1.6. Dependensi paket
2.1.7. Alur kejadian manajemen paket
2.1.8. Tanggapan pertama terhadap masalah manajemen paket
2.2. Operasi manajemen paket dasar
2.2.1. apt vs. apt-get / apt-cache vs. aptitude
2.2.2. Operasi manajemen paket dasar dengan barus perintah
2.2.3. Penggunaan aptitude interaktif
2.2.4. Pengikatan tombol dari aptitude
2.2.5. Tampilan paket di bawah aptitude
2.2.6. Opsi metode pencarian dengan aptitude
2.2.7. Rumus regex aptitude
2.2.8. Resolusi ketergantungan aptitude
2.2.9. Log aktivitas paket
2.3. Contoh operasi aptitude
2.3.1. Menampilkan daftar paket dengan pencocokan regex pada nama paket
2.3.2. Meramban dengan pencocokan regex
2.3.3. Membersihkan paket yang dihapus untuk selamanya
2.3.4. Merapikan status pemasangan otomatis/manual
2.3.5. Peningkatan seluruh sistem
2.4. Operasi manajemen paket tingkat lanjut
2.4.1. Operasi manajemen paket tingkat lanjut dengan baris perintah
2.4.2. Verifikasi berkas-berkas paket yang terpasang
2.4.3. Menjaga masalah paket
2.4.4. Mencari pada data meta paket
2.5. Internal manajemen paket Debian
2.5.1. Meta data arsip
2.5.2. Berkas "Release" tingkat puncak dan keaslian
2.5.3. Berkas "Release" tingkat arsip
2.5.4. Pengambilan data meta untuk paket
2.5.5. Keadaan paket untuk APT
2.5.6. Keadaan paket untuk aptitude
2.5.7. Salinan lokal dari paket yang diambil
2.5.8. Nama berkas paket Debian
2.5.9. Perintah dpkg
2.5.10. Perintah update-alternatives
2.5.11. Perintah dpkg-statoverride
2.5.12. Perintah dpkg-divert
2.6. Pemulihan dari sistem yang rusak
2.6.1. Instalasi gagal karena dependensi yang kurang
2.6.2. Kesalahan penyinggahan atas data paket
2.6.3. Ketidakcocokan dengan konfigurasi pengguna lama
2.6.4. Paket yang berbeda dengan berkas-berkas yang tumpang tindih
2.6.5. Memperbaiki skrip paket yang rusak
2.6.6. Penyelamatan dengan perintah dpkg
2.6.7. Memulihkan data pemilihan paket
2.7. Tips untuk manajemen paket
2.7.1. Cara memilih paket Debian
2.7.2. Paket dari sumber arsip campuran
2.7.3. Mengotak-atik versi kandidat
2.7.4. Pembaruan dan Backport
2.7.5. Memblokir paket yang dipasang oleh "Recommends"
2.7.6. Melacak testing dengan beberapa paket dari unstable
2.7.7. Pelacakan unstable dengan beberapa paket dari experimental
2.7.8. Pengunduhan dan peningkatan paket secara otomatis
2.7.9. Membatasi bandwidth unduhan untuk APT
2.7.10. Penurunan tingkat darurat
2.7.11. Siapa yang mengunggah paket tersebut?
2.7.12. Paket equivs
2.7.13. Mem-port paket ke sistem stable
2.7.14. Server proksi untuk APT
2.7.15. Lebih banyak bacaan untuk manajemen paket
[Catatan] Catatan

Bab ini ditulis dengan asumsi rilis stabil terbaru adalah nama kode: bullseye.

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 66314 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.

Tabel 2.1. Daftar alat manajemen paket Debian

paket popcon ukuran deskripsi
dpkg V:924, I:999 6900 sistem manajemen paket tingkat rendah untuk Debian (berbasis berkas)
apt V:870, I:999 4351 Front-end APT untuk mengelola paket dengan CLI: apt/apt-get/apt-cache
aptitude V:66, I:359 4256 Front-end APT untuk mengelola paket secara interaktif dengan konsol layar penuh: aptitude(8)
tasksel V:34, I:978 395 Front-end APT untuk memasang tugas yang dipilih: tasksel(8)
unattended-upgrades V:314, I:465 326 paket peningkatan bagi APT untuk mengaktifkan instalasi otomatis peningkatan keamanan
gnome-software V:130, I:232 2856 Pusat Perangkat Lunak untuk GNOME (front-end APT GUI)
synaptic V:46, I:356 7874 manajer paket grafis (front-end APT GTK)
apt-utils V:382, I:997 1167 Program utilitas APT: apt-extracttemplates(1), apt-ftparchive(1), dan apt-sortpkgs(1)
apt-listchanges V:358, I:855 423 alat pemberitahuan riwayat perubahan paket
apt-listbugs V:7, I:11 465 menampilkan daftar bug kritis sebelum setiap instalasi APT
apt-file V:18, I:75 90 Utilitas pencarian paket APT — antarmuka baris perintah
apt-rdepends V:0, I:6 41 mencantumkan dependensi paket secara rekursif

[Awas] Awas

Jangan menginstal 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. Maksud saya bahwa beberapa tindakan valid berikut lebih baik dihindari, sebagai tindakan pencegahan, sampai Anda memahami sistem Debian dengan sangat baik. Berikut adalah beberapa pengingat.

  • Jangan sertakan testing atau unstable dalam "/etc/apt/sources.list".

  • Jangan mencampur Debian standar dengan arsip non-Debian lainnya seperti Ubuntu di "/etc/apt/sources.list".

  • 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 yang tidak kompatibel yang disebabkan oleh tindakan di atas ke sistem manajemen paket Debian dapat membuat sistem Anda tidak dapat digunakan.

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.

[Perhatian] 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.

  • Atur nama kode yang sesuai dengan keluarga testing (saat ini "bookworm") dalam "/etc/apt/sources.list".

  • Perbarui nama kode ini secara manual di "/etc/apt/sources.list" ke yang baru hanya setelah menilai situasi sendiri selama sekitar satu bulan setelah rilis keluarga mayr. 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.

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

  • Buat CD instalasi tersedia untuk boot penyelamatan

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

  • Pelajari infrastruktur sistem paket yang cukup untuk mengatasi masalah

  • Pasang paket biner hulu sandbox yang sesuai jika terjadi masalah (lihat Bagian 7.6, “Sandbox”)

  • Buat chroot atau lingkungan serupa dan jalankan sistem terbaru di dalamnya terlebih dahulu (lihat Bagian 9.11, “Sistem tervirtualisasi”)

[Perhatian] Perhatian

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

Mari kita lihat arsip Debian dari perspektif pengguna sistem.

[Tip] Tip

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

Untuk akses HTTP yang umum, arsip dinyatakan dalam berkas "/etc/apt/sources.list" sebagai berikut, mis. untuk sistem stable = bullseye saat ini.

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

deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib

Di sini, saya cenderung menggunakan nama kode "bullseye" alih-alih nama keluarga "stable" untuk menghindari kejutan ketika stable berikutnya dirilis.

Arti "/etc/apt/sources.list" dijelaskan dalam sources.list(5) dan poin-poin penting adalah berikut.

  • Baris "deb" mendefinisikan paket biner.

  • Baris "deb-src" mendefinisikan paket sumber.

  • Argumen pertama adalah URL root dari arsip Debian.

  • Argumen kedua adalah nama distribusi: baik nama keluarga atau nama kode.

  • Argumen ke-3 dan yang mengikutinya adalah daftar nama area arsip yang valid dari arsip Debian.

Baris "deb-src" dapat dihilangkan dengan aman (atau dikomentari dengan menempatkan "#" di awal baris) jika hanya untuk aptitude yang tidak mengakses data meta terkait sumber. Ini mempercepat pembaruan data meta arsip. URL bisa "http://", "ftp://", "file://", ….

[Tip] Tip

Jika "sid" digunakan dalam contoh di atas alih-alih "bullseye", baris "deb: http://security.debian.org/ ..." untuk pembaruan keamanan dalam "/etc/apt/sources.list" 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.


[Perhatian] Perhatian

Hanya rilis stable murni dengan pembaruan keamanan memberikan stabilitas terbaik. Menjalankan sebagian besar rilis stable dicampur dengan beberapa paket dari testing atau rilis unstable lebih berisiko 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 bullseye-updates dan http://backports.debian.org (lihat Bagian 2.7.4, “Pembaruan dan Backport”). Layanan ini harus digunakan dengan ekstra hati-hati.

[Perhatian] 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.3, “Mengotak-atik versi kandidat”).

[Tip] Tip

Untuk sistem Debian dengan keluarga stable, adalah ide yang baik untuk memasukkan baris dengan "http://security.debian.org/" dalam "/etc/apt/sources.list" untuk mengaktifkan pembaruan keamanan seperti pada contoh di atas.

[Catatan] 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. 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.


Di sini jumlah paket di atas adalah untuk arsitektur amd64. Area main menyediakan sistem Debian (lihat Bagian 2.1.5, “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.


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 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] 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 besar untuk 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 mungkin dapat digunakan jika Anda berhati-hati.

[Tip] 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.

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 atau contrib.

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

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 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 "contrib" dan "non-free" 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-bebas bukan bagian dari Debian, kami mendukung penggunaannya dan menyediakan infrastruktur untuk paket-paket non-bebas (seperti sistem pelacakan bug dan milis kami).

Pengguna harus menyadari risiko menggunakan paket-paket di area non-free 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 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. (sebagian besar ditemukan di bagian non-free/kernel.)

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

Harap dicatat bahwa cacah paket non-free dan contrib kurang dari 2% dari paket-paket main. Memfungsikan akses ke area non-free 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.

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] 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.

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

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

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.

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

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] 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.

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 anu 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 anu 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 anu 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 anu 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
T/T 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] 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".


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

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


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] 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.

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] 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.3, “Mengotak-atik versi kandidat”).

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


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


[Tip] Tip

Tampilan Tugas dapat digunakan untuk memilih paket untuk tugas Anda.

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_nama
cocok pada deskripsi ~dregex_deskripsi
cocokkan pada nama task ~tregex_tugas
cocok dengan debtag ~Gregex_debtag
cocok pada maintainer ~mregex_pemelihara
cocok pada bagian paket ~sregex_seksi
cocok pada versi paket ~Vregex_versi
cocok arsip ~A{bullseye,bookworm,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 ~Btipe
cocok dengan pola paket yang menyatakan ketergantungan tipe ~D[tipe:]pola
cocok dengan pola paket yang menyatakan ketergantungan tipe yang rusak ~DB[tipe:]pola
cocok dengan paket yang memiliki pola sesuai dengan paket yang menyatakan ketergantungan tipe ~R[tipe:]pola
cocok dengan paket yang memiliki pola sesuai dengan paket yang menyatakan ketergantungan tipe yang rusak ~RB[tipe:]pola
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 penyaring pola
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] 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] 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.

Berikut adalah beberapa contoh operasi aptitude(8).

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.

[Catatan] 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 berkas "/etc/apt/sources.list" yang menunjuk ke rilis baru dan menjalankan perintah "apt update; apt dist-upgrade".

Untuk meningkatkan dari stable ke testing atau unstable, Anda mengganti "bullseye" dalam contoh "/etc/apt/sources.list" dari Bagian 2.1.4, “Dasar-dasar arsip Debian” dengan "bookworm" 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: oldstablestabletestingunstable.

  10. Perbarui berkas "/etc/apt/sources.list" untuk 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] Perhatian

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

[Perhatian] Perhatian

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

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

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 pola_nama_paket menampilkan daftar status paket yang dipasang untuk laporan bug
dpkg -L nama_paket menampilkan daftar isi paket yang dipasang
dpkg -L nama_paket | egrep '/usr/share/man/man.*/.+' menampilkan daftar halaman man untuk paket yang dipasang
dpkg -S pola_nama_berkas daftar paket terpasang yang memiliki nama berkas yang cocok
apt-file search pola_nama_berkas tampilkan daftar paket dalam arsip yang memiliki nama berkas yang cocok
apt-file list pola_nama_paket menampilkan daftar isi paket yang cocok dalam arsip
dpkg-reconfigure nama_paket mengonfigurasi ulang paket yang tepat
dpkg-reconfigure -plow nama_paket 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 nama_paket_biner menampilkan versi yang tersedia, prioritas, dan informasi arsip dari suatu paket biner
apt-cache madison nama_paket menampilkan versi yang tersedia, informasi arsip paket
apt-cache showsrc nama_paket_biner menampilkan informasi paket sumber dari suatu paket biner
apt-get build-dep nama_paket memasang paket-paket yang diperlukan untuk membangun paket
aptitude build-dep nama_paket memasang paket-paket yang diperlukan untuk membangun paket
apt-get source nama_paket mengunduh suatu sumber (dari arsip standar)
dget URL untuk berkas dsc mengunduh suatu paket sumber (dari arsip lainnya)
dpkg-source -x nama_paket_versi-revisi.debian.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 nama_paket_versi-revisi.debian_arch.deb memasang sebuah paket lokal ke sistem
apt install /path/ke/namaberkas_paket.deb memasang paket lokal ke sistem, sambil mencoba untuk menyelesaikan ketergantungan secara otomatis
debi nama_paket_versi-revisi.debian_arch.dsc memasang paket lokal ke sistem
dpkg --get-selections '*' >pilihan.txt menyimpan informasi keadaan pemilihan paket tingkat dpkg
dpkg --set-selections <pilihan.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] 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] 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.

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, “The MD5 sum” untuk cara kerja MD5sum.

[Catatan] 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.

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).

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

[Tip] 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] Catatan

Di sini, Anda dapat menemukan alasan saya untuk menggunakan "keluarga", dan "nama kode" di Bagian 2.1.4, “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.

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

  • Kunci arsip Debian publik dapat dibibitkan ke dalam "/etc/apt/trusted.gpg";

  • Sistem APT aman memverifikasi integritas berkas "Release" tingkat puncak yang diunduh secara kriptografis memakai berkas "Release.gpg" ini dan kunci arsip Debian publik di "/etc/apt/trusted.gpg".

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”).

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 yang ditentukan dalam "/etc/apt/sources.list" (lihat Bagian 2.1.4, “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 "/etc/apt/sources.list". Data meta "Sources" diperbarui jika ada baris "deb-src" di "/etc/apt/sources.list".

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.)

Berkas-berkas paket Debian memiliki struktur nama tertentu.


[Tip] Tip

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


[Catatan] Catatan

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

[Catatan] Catatan

debian-installer (d-i) menggunakan udeb sebagai ekstensi berkas untuk paket binernya, bukan debnormal. 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.

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).


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] Tip

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

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

[Perhatian] Perhatian

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

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/* ".)

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.6, “Dependensi paket”).

Kesalahan oleh pengelola paket atau penyebaran sumber arsip campuran yang tidak konsisten (lihat Bagian 2.7.2, “Paket dari sumber arsip campuran”) 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] 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

Karena dpkg adalah alat paket tingkat yang sangat rendah, ia dapat berfungsi di bawah situasi yang sangat buruk seperti sistem yang tidak dapat di-boot tanpa koneksi jaringan. Mari kita asumsikan paket foo rusak dan perlu diganti.

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
[Tip] Tip

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

Jika sistem Anda tidak dapat di-boot dari hard disk, Anda harus mencari cara lain untuk mem-bootnya.

  1. Mem-boot sistem menggunakan CD debian-installer dalam mode penyelamatan.

  2. Kait sistem yang tidak dapat di-boot pada hard disk ke "/target".

  3. Pasang versi paket foo yang lebih lama dengan yang berikut ini.

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

Contoh ini bekerja bahkan jika perintah dpkg pada hard disk rusak.

[Tip] Tip

Setiap sistem GNU/Linux dimulai oleh sistem lain pada hard disk, CD GNU/Linux live, flash disk USB yang dapat di-boot, atau netboot dapat digunakan secara serupa untuk menyelamatkan sistem yang rusak.

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] 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.

[Perhatian] 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 bullseye-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] 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.

[Catatan] 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] Catatan

Kecuali untuk menghindari paket yang rusak untuk jangka pendek, memasang paket biner dari arsip yang tidak didukung secara resmi umumnya merupakan ide yang buruk. Ini benar bahkan jika Anda menggunakan apt-pinning (lihat Bagian 2.7.3, “Mengotak-atik versi kandidat”). Anda harus mempertimbangkan chroot atau teknik serupa (lihat Bagian 9.11, “Sistem tervirtualisasi”) untuk menjalankan program dari arsip yang berbeda.

[Awas] Awas

Penggunaan apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan apt-pinning 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] 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.2, “Paket dari sumber arsip campuran”) 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.

[Perhatian] Perhatian

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.

[Perhatian] Perhatian

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".

[Perhatian] Perhatian

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] Catatan

Bahkan jika Anda tidak membuat berkas "/etc/apt/preferences", Anda dapat melakukan operasi sistem yang cukup kompleks (lihat Bagian 2.6.6, “Penyelamatan dengan perintah dpkg” dan Bagian 2.7.2, “Paket dari sumber arsip campuran”) 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.10, “Penurunan tingkat darurat”).

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


Arsip rilis target dapat diatur dengan beberapa metode.

  • Berkas konfigurasi "/etc/apt/apt.conf" dengan baris "APT::Default-Release "stable";"

  • 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/ bullseye-backports/main Packages".

Ada arsip bullseye-update dan backports.debian.org yang menyediakan paket-paket peningkatan untuk stable (bullseye).

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/ bullseye main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb http://deb.debian.org/debian/ bullseye-backports main 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 bullseye-updates.

  • Hanya paket lama yang dipasang secara manual dari bullseye-backports yang ditingkatkan ke yang lebih baru dari bullseye-backports.

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

$ sudo apt-get install -t bullseye-backports package-name
[Awas] Awas

Penggunaan apt-pinning oleh pengguna pemula itu mengundang masalah besar. Anda harus menghindari menggunakan apt-pinning 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] 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] 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] Tip

Jika "Pin-Priority: 1" digunakan sebagai pengganti "Pin-Priority: 100" dalam berkas "/etc/apt/preferences", paket yang sudah diinstal 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] 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.

[Awas] Awas

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

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 unstable, Anda tidak ingin menggunakan peningkatan otomatis karena tentu saja merusak sistem suatu hari nanti. Bahkan untuk kasus 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";
[Awas] Awas

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

[Perhatian] 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.3, “Mengotak-atik versi kandidat”). Ini adalah alternatif malas untuk tindakan membosankan dari banyak perintah "dpkg -i paket-rusak_versi-lama.deb" perintah (lihat Bagian 2.6.6, “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/ bookworm 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] 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.