Le gestionnaire de paquets Synaptic a un filtre personnalisé "Recommandations manquantes". Existe-t-il un moyen de savoir quels packages installés sur mon système recommandent les packages répertoriés dans ce filtre?
Aptitude peut effectuer certaines recherches assez sophistiquées
Cela montrera tous les paquets qui ont un Recommends qui n'est pas satisfait:
aptitude search '?installed?broken-recommends'
Pour le limiter à un package recommandé spécifique:
aptitude search '?installed?broken-recommends(PACKAGE)'
Autant que je sache, il n’existe pas de moyen facile de savoir quel paquet recommande un autre paquet spécifique.
Voici un script brut pour construire une liste de ce paquet recommande ou suggère quel autre paquet:
dpkg --get-selections | cut -f 1 | while read pkgname
do
apt-cache depends "$pkgname" | \
grep -E "Recommends|Suggests" | \
cut -b 3- | \
while read recommends
do
echo "$pkgname" "$recommends"
done
done | sort -k 3 -k 2 | column -t
Remarque: le script en nécessite. De plus, la sortie est très longue, il est donc très probable que vous souhaitiez capturer la sortie dans un fichier:
$ whatrecommends.sh > whatrecommends.txt
Échantillon de sortie:
...
ubuntu-desktop Recommends: avahi-autoipd
avahi-daemon Suggests: avahi-autoipd
dhcp3-client Suggests: avahi-autoipd
libnss-mdns Suggests: avahi-autoipd
hplip Recommends: avahi-daemon
rhythmbox Recommends: avahi-daemon
ubuntu-desktop Recommends: avahi-daemon
libsane Suggests: avahi-daemon
pulseaudio-utils Suggests: avahi-daemon
sane-utils Suggests: avahi-daemon
system-config-printer-common Recommends: avahi-utils
bash Recommends: bash-completion
ubuntu-standard Recommends: bash-completion
ack-grep Suggests: bash-completion
bash Suggests: bash-doc
...
En modifiant les paramètres de sort
à la fin du script, vous pouvez modifier l’ordre de tri de la sortie.
Ici, à ma façon - signaler les disparus, recommande :)
apt-cache --no-pre-depends --no-depends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances depends `dpkg --get-selections | grep '\sinstall$' | cut -f1` | grep -vf <(dpkg --get-selections | grep '\sinstall$' | cut -f1 | sed -e 's/^/ /' -e 's/\(:.*\|\)$/$/') | grep -B1 '^ '
Sur la base de la réponse de tumbleweed, j'ai créé un script qui utilise les recherches d'aptitude pour trouver les paquets qui recommandent un paquet manquant.
Cependant, il ne donne pas la même liste complète, synaptic. Aucune idée pourquoi.
#!/usr/bin/php
<?php
$list = Shell_exec("aptitude search '?broken-reverse-recommends(?installed)'");
preg_match_all("|^.{4}(.*) - (.*)$|mU", $list, $matches);
foreach ($matches[1] as $prog) {
$prog = trim($prog);
echo "$prog:\n";
$missing = Shell_exec("aptitude search '?installed?broken-recommends($prog)'");
preg_match_all("|^.{4}(.*) - (.*)$|mU", $missing, $mismatch);
foreach ($mismatch[1] as $missoft) {
echo "\tRecommended by: ".trim($missoft)."\n";
}
}
ecryptfs-utils:
Recommended by: adduser
firefox:
Recommended by: xubuntu-desktop
Recommended by: xul-ext-ubufox
firefox-gnome-support:
Recommended by: xubuntu-desktop
libatm1:
Recommended by: iproute