web-dev-qa-db-fra.com

Comment obtenir une liste de tous les packages dans une section de référentiel à partir de la ligne de commande?

Dans Synaptic, on peut lister les paquets par section. Par exemple, dans l'image ci-dessous, tous les packages de la section "Radio amateur (univers)" sont répertoriés.

Comment puis-je obtenir une telle liste (edit: avec description du paquet) en ligne de commande?

J'ai besoin d'une liste brute; une application de terminal comme aptitude ne fera pas l'affaire.

synaptic

13
Serge Stroobandt

Bien que vous disiez que vous ne voulez pas utiliser aptitude à cause du résultat, vous devez savoir que vous pouvez le modifier pour obtenir ce que vous aimez:

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

L'astuce réside dans le commutateur -F qui modifie le format de sortie. %p signifie paquet. Ceci est aussi affiché lorsque le paquet a différentes architectures (AMD64 vs i386) et %d qui affiche la description. Vous pouvez personnaliser davantage le modèle de recherche, par exemple pour les packages non installés:

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

~i signifie installé et le ! est un non, ainsi il se lit comme "non (!) installé (~ i)", ou si vous ne voulez que ceux disponibles dans votre architecture:

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

~r étant ?architecture() qui correspond à l'architecture du package et native qui répertorie uniquement celles qui ont la même architecture que le système, l'équivalent de dpkg --print-architecture.

La ligne précédente peut donc être écrite de manière encore plus concise:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
5
Braiam

Assurez-vous que dctrl-toolsInstall dctrl-tools le paquet est installé. Il fournit des commandes utiles pour rechercher dans les listes de paquets apt et dpkg. Pour obtenir une description complète de tous les paquets d’une section particulière pouvant être installés avec apt, exécutez

grep-aptavail -F Section hamradio

Cela affichera les métadonnées complètes du paquet pour chaque paquet dans la section hamradio. Si tout ce que vous voulez voir sont les noms de paquet, lancez

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

Si votre système est configuré pour plusieurs architectures, le même package peut apparaître plusieurs fois dans cette liste s'il est conçu pour plusieurs architectures. Donc, pour affiner cela davantage, utilisez soit

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

ou

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

pour trier la liste des packages et supprimer les packages en double portant le même nom.

Notez que vous devrez utiliser le nom réel de la section, qui est différent du nom "lisible par l'homme" que Synaptic affiche dans son interface graphique. Par exemple, les recherches ci-dessus utilisent le nom de section hamradio à la place de la chaîne "Radio amateur" indiquée dans Synaptic.

Voir la page de manuel de grep-aptavail pour une description complète de toutes les options et quelques exemples.

11
Mike Miller

Plus de champs sur une seule ligne, avec séparateur arbitraire

La ligne suivante imprime tous les noms de paquetages uniques d’une section de référentiel ainsi que leur description, chacun sur une seule ligne. Tous les champs sont séparés par un caractère de canal, c'est-à-dire prêt à être converti en table de canaux de réduction . Le table résultante peut être trouvé sur mon site web.

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

Vous pouvez utiliser la commande suivante pour obtenir une liste des packages appartenant à une section donnée:

$ 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
2
Sylvain Pineau