Как найти пакеты Debian, которые освободят пространство

Скажем, у меня есть машина Debian, где я хотел бы освободить место на '/', удалив бесполезные пакеты. Чтобы найти хороших кандидатов пакетов для обзора, я хотел бы сосредоточить свое внимание на крупнейших в первую очередь.

Похоже, что стандартное решение для этого – перечислить все установленные пакеты по их установленному размеру. Однако это решение имеет множество недостатков, поскольку оно игнорирует зависимости и игнорирует, был ли пакет установлен автоматически или вручную:

  • Если пакет большой, но многие из установленных вручную пакетов зависят от него, возможно, он не является хорошим кандидатом для удаления (например, удаление libicu52 – это плохая идея, даже если она большая)
  • Если пакет зависит от другого пакета, то удаление второго будет также экономить место, полученное путем удаления первого (например, удаление libwine также удаляет вино)
  • Если пакет A зависит от другого пакета B, а третий пакет C был автоматически установлен как зависимость от B, тогда удаление A удалит B и C будет автоматически удалено, что должно учитываться (например, удаление wesnoth-1.10 -data удаляет wesnoth-1.10, что означает, что wesnoth-1.10-музыка будет удалена).

Кажется, что правильный инструмент для этой работы должен предлагать только вручную установленные пакеты для удаления и должен сортировать их по пространству, которое будет исправлено, удалив их, а затем запустив autoremove (удаление автоматически установленных пакетов, которые больше не нужны).

Конечно, вы можете имитировать это по варианту этого решения , но оно медленное и уродливое. Поэтому мой вопрос: есть ли стандартный инструмент, который смотрит на график зависимостей пакетов и вычисляет эту информацию? (Я собираюсь написать сценарий для этого, но я хотел бы убедиться, что он еще не существует.)

Я не знаю apt-cache rdepends --installed --recurse решения командной строки, хотя все инструменты существуют ( apt-cache depends --installed apt-cache rdepends --installed --recurse , apt-cache rdepends --installed --recurse , apt-mark showmanual , dpigs и т. Д.). Можно было бы взломать сценарий командной строки, который мог бы попытаться найти большие пакеты с несколькими установленными вручную обратными зависимостями. Вот доказательство концепции, которую я использовал в качестве отправной точки:

 dpigs | awk 'NR == 1 {print $2}' | xargs apt-cache rdepends --installed --important --recurse | awk '!/:/ {print $1}' | sort -u 

С другой стороны, если вы хотите выполнить сложный анализ графика по нескольким направлениям (например, какой набор установленных вручную пакетов имеет самый большой набор рекурсивных зависимостей на диске, перекрывающий его), он может быстро выйти из-под контроля. В этот момент вам, вероятно, нужно будет посмотреть что-то более настраиваемое ( awk или python ?).

Полное раскрытие информации: Я внес свой вклад в проект ниже. Если это имеет значение для вас, пожалуйста, учтите это. Если бы я знал о подобном проекте, который уже был в репозиториях Debian, я бы, скорее всего, разместил его.

Хотя я предпочитаю делать все из командной строки, вы можете найти pacgraph (также на github ) полезную альтернативу. Он был первоначально написан Kyle Keen для Arch Linux, но теперь он совместим с системами на основе deb и rpm. Раньше у меня был некоторый образец вывода из системы Ubuntu, но я не могу его найти, так что вот пример с его сайта:

Блестящий! http://kmkeen.com/pacgraph/laptop.png .

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