web-dev-qa-db-fra.com

Quels paquets ont recommandé 'Missing Recommends'?

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?

6
Rohit Agarwal

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)'
4
tumbleweed

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.

2
lesmana

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 '^ '
2
mmm4m5m

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.

Le scénario

#!/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";
    }
}

Échantillon de sortie

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
2
Zombaya