web-dev-qa-db-ja.com

どのパッケージが「Missing Recommendeds」を推奨していますか?

Synaptic Package Managerには、カスタムフィルター「Missing Recommendeds」があります。システムにインストールされているどのパッケージがこのフィルターにリストされているパッケージを推奨しているかを調べる方法はありますか?

6
Rohit Agarwal

Aptitudeはいくつかの かなり空想的な検索 を実行できます

これは、満たされていないRecommendsを持つすべてのパッケージを表示します:

aptitude search '?installed?broken-recommends'

特定の推奨パッケージに制限するには:

aptitude search '?installed?broken-recommends(PACKAGE)'
4
tumbleweed

私が知る限り、どのパッケージが特定の他のパッケージを推奨するかを見つける簡単な方法はありません。

以下は、どのパッケージが他のどのパッケージを推奨または提案するかのリストを作成するための大まかなスクリプトです。

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

注:スクリプトの実行には多少時間がかかります。また、出力は非常に長いため、出力をファイルにキャプチャすることをお勧めします。

$ whatrecommends.sh > whatrecommends.txt

出力のサンプル:

...
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
...

スクリプトの最後でsortのパラメーターを変更することにより、出力のソート順を変更できます。

2
lesmana

ここで、私の方法-不足している推奨事項のレポート:)

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

タンブルウィードの答えに基づいて、aptitude検索を使用して、不足しているパッケージを推奨するパッケージを作成するスクリプトを作成しました。

ただし、シナプスと同じ完全なリストは提供されません。理由はわかりません。

スクリプト

#!/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
2
Zombaya