Eu filtrava o arquivo /var/log/apt/history.log para essa finalidade.
Um registro no arquivo se parece com:
Start-Date: 2016-12-14 18:28:01
Commandline: synaptic
Requested-By: user (1000)
Install: libglib2.0-bin:amd64 (2.48.1-1~ubuntu16.04.1, automatic) libglib2.0-dev:amd64 (2.48.1-1~ubuntu16.04.1)
End-Date: 2016-12-14 18:28:06
Nomes de pacotes com "automatic" são dependências (libglib2.0-bin no exemplo) e sem "automatic" são instalados pelo comando (libglib2.0-dev).
Encontrei este código nos meus arquivos e provavelmente funciona
#!/usr/bin/env python # -*- coding: utf-8 -*- import re import sys for arg in sys.argv[1:]: fil = open(arg) for line in fil: ma = re.match(r'Install: (.*)', line) if ma: grp = ma.groups()[0] lst = re.split(r'\), *', grp) for item in lst: if item.endswith(', automatic'): continue else: name = item.split(':')[0] print dte, name ma = re.match(r'Start-Date: ([^ ]*)', line) if ma: dte = ma.groups()[0] fil.close()