Você pode verificar quais arquivos foram acessados por um programa usando strace
:
-e trace=file
Trace all system calls which take a file name as an
argument. You can think of this as an abbreviation
for -e trace=open,stat,chmod,unlink,... which is
useful to seeing what files the process is
referencing. Furthermore, using the abbreviation
will ensure that you don't accidentally forget to
include a call like lstat in the list. Betchya
woulda forgot that one.
Então, algo como:
$ strace -fe trace=file -o log /bin/bash -c ''
$ awk -F\" '!a[$2]++&&/\//{print $2}' log | xargs dpkg -S 2>/dev/null | awk -F: '!a[$1]++{print $1}'
bash
libtinfo5
libc6
Esteja avisado: esta saída não é particularmente útil de uma forma ou de outra:
- Ele não diz quais pacotes não são usados por um comando, porque o uso poderia ser de alguma forma diferente de acessar um arquivo (ou talvez ele acessasse um arquivo que foi criado por um pacote mas não registrado em% base de dados do
dpkg
). - Ele não informa quais pacotes podem ter não sido usados por um pacote. Por exemplo, se eu executei uma sessão bash interativa, o número de pacotes é muito maior, principalmente porque os scripts de conclusão fornecidos por eles também estão sendo contados. A lista inclui até mesmo o GRUB! E o GRUB claramente não é necessário por bash.
O que você deve fazer é começar com ubuntu-minimal
e instalar apenas as coisas necessárias para o programa correr além (você saberá quais são necessários quando o programa morre de erros misteriosos).