I created a script that does exactly what you want: https://gist.github.com/kotarou3/2b311fb7b79ae6b682246b32acf0b7e9
python3-apt
and python3-networkx
are the dependencies. It uses the apt package cache as the source of package information.
Package names themselves are output one per line to stdout, while any comments about them (such as if they are part of a cycle) are to stderr
Example:
$ ./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
apt-cache depends <packagename>
shows the package along with it's dependencies. – Avinash Raj Feb 18 '14 at 18:06