Você pode determinar quais pacotes não estão sendo usados ao executar um programa específico?

2

Eu quero criar uma distribuição de servidor Ubuntu personalizada que instale e execute automaticamente um programa específico apenas na máquina de destino. Eu encontrei um guia muito bom aqui:

Como criar um servidor customizado do ubuntu iso

Eu quero remover todo o inchaço que vem com uma instalação normal, existe uma maneira que eu possa determinar quais pacotes não são usados para que eu possa removê-los da minha distro?

Em uma nota lateral, se você seguir o guia mencionado acima e estiver executando o Ubuntu 14.04, use o seguinte link para corrigir o bug com o kickstart (eu não tenho reputação suficiente para adicioná-lo aos comentários, então se você fizer, por favor, faça)

bug do kickstart corrija o ubuntu 14.04

    
por 10k3y3 15.10.2014 / 12:18

1 resposta

1

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 dodpkg).
  • 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).

    
por muru 12.09.2017 / 10:56