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