Pesquise por pacotes que são instalados manualmente e que são uma dependência obrigatória ou recomendada de um pacote instalado. Aptidão pode fazer isso.
aptitude search -q -F %p '?installed !?automatic (?reverse-depends(?installed .*) | ?reverse-recommends(?installed .*))'
Eu não acho que haja uma maneira de indicar qual dependência foi encontrada para cada pacote. Se você quiser essa informação, o Python seria o caminho a percorrer. Este script muito rápido e sujo parece fazê-lo (principalmente, acho que pode estar incorreto em alguns casos não diretos envolvendo disjunções, dependências de versão, pré-dependências,…).
#!/usr/bin/env python2
import apt
packages = apt.Cache()
covered = {}
# Inverse dependency computation: for each installed package, record which
# packages require it (as Depends: or Recommends:).
for p in packages:
if p.installed:
for l in p.installed.dependencies + p.installed.recommends:
for d in l:
if packages.has_key(d.name) and packages[d.name].installed:
if not covered.has_key(d.name):
covered[d.name] = []
covered[d.name] += [p.name]
# Print out the manually installed packages that are required by another
# installed package, as well as the requiring package(s).
for p in sorted(covered.keys()):
if not packages[p].is_auto_installed:
print(' '.join([p] + covered[p]))