Как найти зависимости верхнего уровня в списке пакетов deb?

Предположим, у меня есть список пакетов:

foo
libfoo
bar
baz
quux

И предположим, что foo требует libfoo и bar, а baz требует quux.

Я хочу добавить этот список и вывести этот список:

foo
baz

Т.е. - Я хочу установить минимальный список пакетов, который после разрешения зависимостей приведет к установке всего списка пакетов.

3
задан 18 February 2014 в 22:00

2 ответа

Я создал скрипт, который делает именно то, что вы хотите: https://gist.github.com/kotarou3/2b311fb7b79ae6b682246b32acf0b7e9

python3-apt и python3-networkx являются зависимостями. Он использует кэш пакета apt в качестве источника информации о пакете.

Сами имена пакетов выводятся по одному на строку в stdout, а любые комментарии о них (например, если они являются частью цикла) относятся к 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
0
ответ дан 18 February 2014 в 22:00

У меня недостаточно репутации, чтобы добавить комментарий, поэтому я вынужден написать отдельный ответ. Но это дополнительная информация для ответа, предоставленного 小 太郎

Его сценарий работает потрясающе. убедитесь, что вы установили правильную версию networkx для правильной работы.

sudo pip3 install networkx == 1,11

0
ответ дан 18 February 2014 в 22:00

Другие вопросы по тегам:

Похожие вопросы: