4.3. Построение списка добавленных файлов для упрощения удаления программ

Проблема
Требуется узнать, какие файлы устанавливаются в системе при построении про граммы по исходным текстам. Это позволит вам найти и удалить все перечисленные
файлы, когда надобность в них отпадет. Некоторые авторы программ предусмот рительно включают режим make uninstalL для «чистого» удаления программы, но
многие этого не делают.
Решение
Стандартными средствами Linux сгенерируйте список всех файлов в системе
перед установкой. Затем сгенерируйте аналогичный список после установки и
сравните два списка командой diff. В результате вы получите список установ ленных файлов. В следующем примере используется программа JOE ( Joe's Own
Editor):
# find / | grep -v -e A/proc/ -e Vtmp/ -e ~/dev/ > j o e > p r e i n s t a l l . l i s t
Откомпилируйте и установите новую программу, затем сгенерируйте список
файлов после установки:
# find / | grep -v -e */proc/ -e */tmp/ -e */dev/ > joe>postinstall.list
Затем создайте список установленных файлов, сравнив два списка командой diff:
$ d i f f j o e - p r e i n s t a l l . l i s t j o e - p o s t i n s t a l l . l i s t > j o e - i n s t a l l e d . l i s t
Комментарий
Совместное использование find и grep позволяет исключить каталоги, не входя щие в конечный список. Ключ grep -v включает подробный вывод. Параметр -еЛ
означает «исключить следующий каталог».
Мы исключаем каталоги /ргос и /tmp, потому что они содержат временные
данные и постоянно меняются. Файлы в каталоге /dev находятся под управле нием системы, поэтому их тоже можно исключить. Исключение каталогов так же является важной мерой безопасности — при ручном удалении программ по
списку diff содержимое каталогов /ргос, /tmp и /dev ни в коем случае не должно
изменяться.
См. также
grep(l),find(l),diff(l).