При установке пакетов с зависимостями, особенно на начальных этапах установки дистрибутива, не помечает зависимости как автоустановленные, в связи с чем через некоторое время возникает излишняя нагромождённость ненужными пакетами.
Для исправления данной ситуации, я написал скриптик. Он проверяет наличие каждого установленного и не помеченного как автоустановленного пакета в зависимостях у всех других установленных в системе пакетов. Если такая зависимость найдена, для пакета устанавливается флаг автоустановки.
Для регулирования исключений имеется два файла:
В процессе своей работы скрипт формирует файл cleanorphans.states с метками автоустановки. Его надо поместить вместо файла /var/lib/apt/extended_states.
Во время работы на экран построчно может выводиться следующая информация:
P.S. Замечу, что в общем случае, запуск скрипта можно производить из под простого пользователя! Исключение составляет случай, когда выходной файл является системным (/var/lib/apt/extended_states), что, вообщем-то, мной не рекомендуется.
SVN: http://oleg.in-da.ru/svn/cleanorphans/
Там же можно найти и файлы исключений (с 11 редакции можно используются каталоги с файлами исключений, хотя можно использовать и файлы cleanorphans.auto, cleanorphans.manual.
Для удобства первоначальной настроки, привожу файлы исключений.
Эти библиотеки имеют циклические зависимости, в результате «выпадают» в паре с зависимостью:
language-pack-ru language-pack-gnome-ru
А эти - не имеются зависимостях у пакетов из их обратных зависимостей, большинство из них - системные утилиты:
dash diff dmsetup fakeroot friendly-recovery grep grub hostname iputils-tracepath lockfile-progs login manpages memtest86+ mktemp mlocate mtr-tiny ncurses-base ntfs-3g patch pppconfig pppoeconf reiserfsprogs tcpdump telnet
Настоятельно рекомендую перед первым использованием скрипта выполнить:
$ sudo aptitude markauto ~slib
Это пометит все библиотеки как увтоустановленные.
Дискуссия