Como encontrar dependências de nível superior em uma lista de pacotes deb?

3

Suponha que eu tenha uma lista de pacotes:

foo
libfoo
bar
baz
quux

E suponha que foo exija libfoo e bar e baz exija quux .

Eu quero uma maneira de colocar essa lista e sair dessa lista:

foo
baz

Ou seja. - Eu quero que a lista mínima de pacotes seja instalada, o que, após a resolução da dependência, fará com que toda a lista de pacotes seja instalada.

    
por dmd 18.02.2014 / 19:00

1 resposta

4

Eu criei um script que faz exatamente o que você quer: link

python3-apt e python3-networkx são as dependências. Ele usa o cache do pacote apt como a fonte das informações do pacote.

Os nomes dos pacotes saem um por linha para stdout, enquanto quaisquer comentários sobre eles (como se eles fazem parte de um ciclo) são para stderr

Exemplo:

$ ./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
    
por 小太郎 03.07.2016 / 23:29