web-dev-qa-db-ja.com

debパッケージのリストでトップレベルの依存関係を見つける方法は?

パッケージのリストがあるとします:

foo
libfoo
bar
baz
quux

そして、foolibfoobarを必要とし、bazquuxを必要とするとします。

そのリストに入れて、このリストから抜け出す方法が欲しい:

foo
baz

つまり-パッケージの最小リストをインストールして、依存関係の解決後にパッケージのリスト全体がインストールされるようにします。

3
dmd

私はあなたが望むことを正確に行うスクリプトを作成しました: https://Gist.github.com/kotarou3/2b311fb7b79ae6b682246b32acf0b7e9

python3-aptおよびpython3-networkxは依存関係です。パッケージ情報のソースとしてaptパッケージキャッシュを使用します。

パッケージ名自体はstdoutに1行ごとに1つ出力されますが、それらに関するコメント(サイクルの一部など)はstderrに出力されます

例:

$ ./find-top-level-packages.py nginx nginx-core zlib1g firefox
firefox
nginx
$ ./find-top-level-package.py -h
usage: find-top-level-packages.py [-h] [--root-dir dir]
                                  [--follow-unspecified-packages]
                                  [--no-use-recommends]
                                  [--show-missing-recommends]
                                  [package [package ...]]

Find top-level packages of the dependency graph

positional arguments:
  package               package names to use (default: all installed packages)

optional arguments:
  -h, --help            show this help message and exit
  --root-dir dir        act as if chrooted in the specified directory
  --follow-unspecified-packages
                        follow dependencies of packages not part of the
                        initial input
  --no-use-recommends   don't use recommended packages for the dependency
                        graph
  --show-missing-recommends
                        list missing recommended packages suffixed with a dash
4
小太郎

コメントを追加するほどの評判はないので、別の回答を書くことを余儀なくされました。しかし、これは小太郎が提供する答えの追加情報です

彼の台本は素晴らしい作品です。正しく動作するために、正しいバージョンのnetworkxをインストールしてください。

Sudo pip3 install networkx == 1.11

0
melchi