Usar a API do Python Apt pode ser mais eficiente, especialmente para obter as dependências:
#! /usr/bin/python3
from apt import cache
c = cache.Cache()
pkgs = set(pkg for pkg in c if pkg.is_installed)
seen = set()
def mark_deps(pkg):
for dep in pkg.installed.dependencies:
for ver in dep.installed_target_versions:
if ver.package not in seen:
seen.add(ver.package)
pkg.mark_auto()
mark_deps(ver.package)
for pkg in pkgs:
mark_deps(pkg)
print(c.get_changes())
c.commit()
Ainda vai ser lento, mas deve ser ainda mais rápido do que chamar o apt-cache milhares de vezes. Execute sem sudo para ver quais alterações serão feitas ( c.commit()
falhará) e execute com sudo
para realizar essas alterações.