Можете ли вы определить, какие пакеты вообще не используются при запуске определенной программы

Я хочу создать пользовательский дистрибутив сервера Ubuntu, который автоматически устанавливает и запускает определенную программу только на целевом компьютере. Я нашел очень хорошее руководство здесь:

Как создать настроенный сервер Ubuntu ISO

Я хочу удалить все суеты, которые идут с обычной установкой, есть ли способ, которым я могу определить, какие пакеты вообще не используются, чтобы я мог удалить их из моего дистрибутива?

Напомним, что если вы следуете руководству, упомянутому выше, и используете Ubuntu 14.04, воспользуйтесь следующей ссылкой, чтобы исправить ошибку с помощью kickstart (у меня недостаточно репутации, чтобы добавить ее в комментарии, так что если вы это сделаете,, пожалуйста, сделай)

кикстарт баг исправление убунту 14.04

1 ответ

Вы можете проверить, какие файлы были доступны программе, используя 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.

Итак, что-то вроде:

$ 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

Будьте осторожны: этот вывод не особенно полезен, так или иначе:

  • Он не говорит вам, какие пакеты не используются командой, потому что использование может быть каким-то иным способом, нежели доступ к файлу (или, возможно, он получил доступ к файлу, который был создан пакетом, но не записан в dpkg база данных).
  • Он не говорит вам, какие пакеты не могли быть использованы пакетом. Например, если я запустил интерактивный сеанс bash, количество пакетов намного выше, в основном из-за того, что подсчитываются скрипты завершения, предоставляемые этими пакетами. В список даже входит GRUB! И GRUB явно не нужен bash.

Что вы должны сделать, это начать с ubuntu-minimal и установите только те вещи, которые необходимы программе для выполнения сверх этого (вы будете знать, какие из них необходимы, когда программа умрет от загадочных ошибок).

Другие вопросы по тегам