特定の Debian パッケージに最も近いトップレベルの推奨パッケージを見つける

特定の Debian パッケージに最も近いトップレベルの推奨パッケージを見つける

ライブ CD を作成中ですが、CD イメージのサイズを小さくするために、いくつかのパッケージを省く必要があります。デフォルトでは、推奨パッケージがインストールされますが、そのスイッチをオフにすると、不要なジャンクで肥大化した CD (Python QT プログラムをバンドルしているのに、なぜ QT4 デザイナーが必要なのでしょうか?) が、ほとんど使用できない状態になります。

理想的なのは、パッケージのリストを入力として受け取り、依存関係グラフをクロールし、のみ「depends」リンクではなく、見つかった「recommends」リンクを印刷して、ツールに入力したパッケージに基づいてインストールされる推奨パッケージの「トップレベル」を効果的に表示します。これにより、どのパッケージを含める必要があるかを判断し、必要なパッケージがなくなるまでそのパッケージ セットでツールを再実行できます。

のような他のツールはapt-cache dependsすべてをダンプし、「Recommends」をgrepすると、推奨パッケージが推奨するパッケージも表示されますが、これは望ましくありません。

たとえば、次の場合:

  • AはBに依存している、
  • BはCを推薦し、
  • CはDに依存し、
  • DはEを推薦します。

この仮想ツールにパッケージ A について質問すると、出力としてパッケージ C のみを返すように要求します。C が必要かどうかもまだわからないため、E は含めないようにします。

そのようなツールは存在するのでしょうか、それとも既存のツールでこれを実現する比較的簡単な方法はあるのでしょうか?

答え1

このツールはまさにあなたが求めているものだと思いますapt-rdepends。apt-get でパッケージをインストールし、これを実行してください (例で使用しているパッケージ「apt」をパッケージ「A」に置き換えてください)。

apt-rdepends --follow=Depends --show=Recommends apt 2>/dev/null | grep Recommends
  Recommends: gnupg
  Recommends: libc6-i686
  Recommends: gnupg-curl
  Recommends: libldap-2.4-2 (>= 2.4.7)

省略すると、grep「推奨」リンクのあるパッケージも表示されます。これは非常に簡単で、要件に正確に一致しますが、1 つ注意点があります。それはapt-rdepends、いつ停止するかがわからないことです。つまり、任意の再帰レベルまで「依存」リンクをたどります。

コマンドライン オプションの詳細については、man ページを参照してください。これは非常に優れたツールで、逆依存関係の検索も実行できます。

関連情報