Membongkar Misteri: Mencari Paket yang Diinstal Manual di Debian (Bukan Dependensi!)
Sebagai pengguna Debian, kita seringkali ingin tahu: "Paket apa saja sih yang pernah saya instal sendiri secara eksplisit, bukan cuma dependensinya?" Pertanyaan ini terdengar simpel, tapi jawabannya ternyata cukup kompleks dan sering bikin pusing kepala. Sebuah diskusi menarik di forum Reddit r/debian membahas tuntas masalah ini, mencari cara paling efektif untuk melihat daftar paket "top-level" yang diinstal pengguna, bukan ribuan dependensi yang ikut terpasang. Yuk, kita bedah hasil diskusi serunya!

Mengapa Begitu Sulit?
Awalnya, banyak pengguna mengira perintah seperti dpkg -l, apt --installed list, atau bahkan apt-mark showmanual sudah cukup. Tapi nyatanya, perintah-perintah ini seringkali menampilkan daftar yang sangat panjang, termasuk paket-paket dasar yang sudah terinstal otomatis sejak awal instalasi Debian, atau paket-paket yang menjadi dependensi dari instalasi manual kita. Ini yang membuat frustrasi! Karena status "manual installed" di APT punya makna yang sedikit lebih luas dari sekadar "saya ketik apt install ini".
Solusi dan Alat yang Direkomendasikan oleh Komunitas
Para ahli dan pengguna berpengalaman di forum kemudian menyajikan berbagai pendekatan, dari yang paling sederhana hingga yang lebih kompleks, untuk mengatasi masalah ini.
1. apt-mark showmanual (Dasar yang Tepat, Tapi Perlu Filter)
Ini adalah perintah yang secara teknis paling tepat untuk melihat paket yang ditandai sebagai "manual" oleh APT. Namun, seperti yang dikeluhkan OP, daftar ini seringkali mencakup paket-paket sistem dasar yang diinstal oleh installer Debian, bukan hanya yang ditambahkan sendiri.
$ apt-mark showmanual2. history | grep "apt install" (Solusi "Malas" & Praktis)
Ini adalah trik cepat yang digunakan oleh OP sendiri sebagai solusi praktis. Dengan melihat riwayat perintah shell, kita bisa mencari semua perintah apt install yang pernah kita ketik.
$ history | grep "apt install"Catatan: Cara ini berguna jika riwayat shell Anda masih lengkap, tapi tidak mencerminkan status "manual" atau "otomatis" di sistem APT. Ini juga tidak ideal untuk otomatisasi.
3. Melihat Log APT (Detail Tapi Membutuhkan Analisis)
Berkas log APT yang terletak di /var/log/apt menyimpan catatan rinci tentang setiap instalasi, upgrade, dan removal.
$ cat /var/log/apt/history.logCatatan: Log ini bisa sangat panjang dan perlu dianalisis lebih lanjut untuk mengekstrak hanya paket tingkat atas.
4. Menggunakan Reverse Depends untuk Filter Lanjutan (Solusi Ahli)
Pengguna michaelpaoli menyajikan solusi yang lebih canggih. Ini melibatkan memfilter hasil apt-mark showmanual dengan mengecualikan paket-paket yang menjadi dependensi bagi paket lain. Tujuannya adalah untuk benar-benar menampilkan hanya paket "tingkat atas" yang tidak diinstal sebagai dependensi.
$ (apt-mark showmanual | while read -r pkg; do apt-cache rdepends --installed "$pkg" | sed -ne '1,/^Reverse Depends:$/d;{p;d}' | grep -q . || printf '%s\n' "$pkg"; done)
Makna: Perintah ini secara signifikan bisa mengurangi daftar. Contoh di forum menunjukkan penurunan dari 792 paket menjadi 297 paket, yang lebih mendekati keinginan OP.
5. Menandai Paket sebagai Otomatis (apt-mark auto)
Jika Anda tahu ada paket yang sebenarnya merupakan dependensi tapi entah mengapa ditandai manual, Anda bisa mengubah statusnya menjadi auto.
$ sudo apt-mark auto <nama_paket>Catatan: Ini butuh pengetahuan manual tentang paket mana yang harusnya otomatis. Perintah ini tidak bekerja tanpa nama paket di belakangnya (seperti yang OP alami).
6. Menggunakan Pattern APT Lanjutan (Filter Berdasarkan Prioritas)
Pengguna BCMM menawarkan pendekatan cerdas lain dengan memfilter berdasarkan prioritas paket. Tujuannya adalah menghilangkan paket-paket sistem yang punya prioritas tinggi (required, important, standard).
$ apt list '~i !~M ~poptional'
$ apt list '?and(?installed, ?not(?automatic), ?priority(optional))'Atau, untuk filter yang lebih kuat (mengecualikan yang tidak required, important, atau standard):
$ apt list '~i !~M !~prequired !~pimportant !~pstandard'Catatan: Solusi ini cukup efektif, tetapi masih mungkin ada "false positive" (paket penting sistem yang ikut terfilter) atau "false negative" (paket non-standar yang terlewat).
7. Menggunakan Virtual Machine (VM) sebagai Baseline (Paling Akurat, Tapi Memakan Waktu)
Saran ini melibatkan instalasi Debian baru di VM dengan konfigurasi awal yang sama persis. Kemudian, jalankan apt-mark showmanual di VM dan di sistem utama Anda, lalu bandingkan hasilnya dengan perintah diff. Perbedaannya akan menunjukkan paket yang Anda instal secara manual setelah instalasi awal.
# Di VM setelah instalasi awal
$ apt-mark showmanual > baseline_packages.txt
# Di sistem utama Anda
$ apt-mark showmanual > my_packages.txt
# Bandingkan
$ diff baseline_packages.txt my_packages.txt
Makna: Ini adalah metode paling akurat untuk melihat tambahan paket yang Anda instal sendiri, karena menghilangkan semua paket dasar bawaan sistem. Namun, tentu saja butuh usaha ekstra untuk menyiapkan VM.
Kesimpulan: Tidak Ada Solusi Satu Ukuran untuk Semua
Diskusi di r/debian ini menunjukkan bahwa tidak ada satu perintah tunggal yang secara sempurna dapat menjawab pertanyaan "paket apa yang saya instal sendiri tanpa dependensi" dengan mudah. Konsep "manual installed" di APT lebih kompleks dari yang dibayangkan.
Namun, berbagai metode yang dibagikan memberikan fleksibilitas:
- Untuk solusi cepat dan praktis (jika history Anda bersih),
history | grep "apt install"bisa jadi pilihan. - Untuk hasil yang lebih akurat tetapi memerlukan pemahaman lebih dalam tentang APT, solusi filter dengan reverse depends atau pattern prioritas adalah jalan terbaik.
- Dan untuk akurasi tertinggi dalam melihat penambahan Anda di luar instalasi default, metode VM baseline adalah jawabannya.
Semoga rangkuman ini membantu Anda lebih memahami seluk-beluk manajemen paket di Debian dan menemukan metode yang paling sesuai untuk kebutuhan Anda. Selamat bereksperimen\!
Artikel ini diolah dari diskusi di r/debian (Original Poster: AncientAgrippa).