Bagaimana saya bisa mendapatkan daftar semua paket di bagian repositori dari baris perintah?

13

Dalam Synaptic, seseorang dapat mendaftar paket berdasarkan bagian. Sebagai contoh, pada gambar di bawah ini semua paket bagian "Radio Amatir (semesta)" terdaftar.

Bagaimana saya bisa mendapatkan daftar seperti itu (edit: dengan deskripsi paket) di baris perintah?

Saya perlu daftar mentah; aplikasi terminal seperti aptitudetidak akan melakukan.

sinaptik

Serge Stroobandt
sumber
shell pencarian apt-cache
Panther
@ bodhi.zazen itu saran yang bagus, tetapi tidak mencari Bagian itu saja
Steven Penny

Jawaban:

5

Yah, meskipun Anda mengatakan Anda tidak ingin menggunakan aptitude karena output, Anda perlu tahu bahwa Anda dapat memodifikasinya untuk mendapatkan apa yang Anda suka:

aptitude -F'|%p|%d|' search '?section(hamradio)'

Caranya ada pada -Fsaklar yang memodifikasi format output. %pberarti paket. Ini juga menampilkan ketika paket memiliki berbagai arsitektur (yaitu amd64 vs i386), dan %dyang menampilkan deskripsi. Anda dapat lebih mempersonalisasi pola pencarian, misalnya untuk paket yang tidak diinstal:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

di mana ~iberarti terinstal dan yang !tidak, jadi dibaca sebagai "tidak (!) diinstal (~ i)", atau jika Anda hanya ingin yang tersedia untuk arsitektur Anda:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~rmakhluk ?architecture()yang cocok dengan arsitektur paket dan nativeyang mencantumkan hanya orang-orang yang memiliki arsitektur yang sama dengan sistem, setara dengan dpkg --print-architecture.

Oleh karena itu, baris sebelumnya dapat ditulis lebih ringkas seperti:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
Braiam
sumber
Sangat elegan, terutama dengan -F'|%p|%d|'. Namun, apakah mungkin untuk tidak mencantumkan :i386paket dengan menambahkan !-expression ke searchstring?
Serge Stroobandt
1
@GinGordon ya, tambahkan saja ~r nativeistilah pencarian. ~rmakhluk ?architectureyang cocok dengan arsitektur paket dan nativeyang daftar hanya orang-orang yang memiliki arsitektur yang sama dari sistem, setara dengan dpkg --print-architecture. BTW, Anda ingin daftar dengan deskripsi paket?
Braiam
Bagus! Dan ya, saya telah mengedit pertanyaan untuk memasukkan deskripsi paket. Tolong, edit jawaban Anda sesuai dan Anda layak akan menerima suara jawaban terbaik saya untuk menjadi yang paling ringkas.
Serge Stroobandt
@GinGordon memeriksanya.
Braiam
1
@GinGordon jika Anda menginstal aptitude-docpaket dan menavigasi ke /usr/share/doc/aptitude/html/en/index.htmlbrowser Anda, Anda akan menemukan file:///usr/share/doc/aptitude/html/en/ch02s04s05.htmlsemua fasilitasnya.
Braiam
11

Pastikan paket dctrl-toolsInstal dctrl-tools diinstal. Ini memberikan perintah yang berguna untuk mencari daftar paket apt dan dpkg. Untuk mendapatkan deskripsi lengkap tentang semua paket dari bagian tertentu yang dapat diinstal dengan apt, jalankan

grep-aptavail -F Section hamradio

Ini akan menampilkan metadata paket lengkap untuk setiap paket di hamradiobagian ini. Jika yang ingin Anda lihat adalah nama paket, jalankan

grep-aptavail -n -F Section -s Package hamradio

Jika sistem Anda diatur untuk multiarch, paket yang sama dapat muncul lebih dari satu kali dalam daftar ini jika dibuat untuk lebih dari satu arsitektur. Jadi untuk memperbaiki ini lebih lanjut, gunakan salah satunya

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

atau

grep-aptavail -n -F Section -s Package hamradio | sort -u

untuk mengurutkan daftar paket dan menghapus paket duplikat dengan nama yang sama.

Perhatikan bahwa Anda harus menggunakan nama sebenarnya dari bagian tersebut, yang berbeda dari nama "yang dapat dibaca manusia" yang ditunjukkan Synaptic dalam GUI-nya. Misalnya, pencarian di atas menggunakan nama bagian hamradioalih-alih string "Radio Amatir" yang ditunjukkan dalam Synaptic.

Lihat halaman manual untuk grep-aptavail untuk deskripsi lengkap dari semua opsi dan beberapa contoh.

Mike Miller
sumber
3

Lebih banyak bidang dalam satu baris, dengan pemisah acak

Satu-liner berikut akan mencetak semua nama paket unik dari bagian repositori, bersama dengan deskripsinya, masing-masing dalam satu baris. Semua bidang dipisahkan oleh karakter pipa, yaitu siap dikonversi menjadi tabel pipa Penurunan harga . The meja dihasilkan dapat ditemukan di situs web saya.

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u
Serge Stroobandt
sumber
2

Anda dapat menggunakan perintah berikut untuk mendapatkan daftar paket milik Bagian yang diberikan:

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
Sylvain Pineau
sumber