LINUX.ORG.RU

Показать наименее нужные пакеты


3

2

Как найти наименее нужные, т.е. наиболее давно использованные пакеты?

Бывают программы или библиотеки, которые я установил когда-то, которые были нужны временно и больше не используются. И вот я хочу иногда их удалять чтобы освободить место в корне. Возможно, нужна какая-то утилита, использующая статистику, или какое-то расширение поверх файловой системы или поверх пакетного менеджера. А возможно это делается совсем по-другому, мне любые мысли по этому поводу будут интересны, конечную цель я обозначил. Интересует прежде всего для deb-based, но можно и для других дистрибутивов.

Интернет про это знает совсем немного:

https://unix.stackexchange.com/questions/483900/how-to-find-unused-packages-i...

https://askubuntu.com/questions/630787/how-do-i-eliminate-unused-packages-in-...

★★★

Последнее исправление: damix9 (всего исправлений: 1)

Найди тян и через какое-то время просто посмотри листинг установленных пакетов

mittorn ★★★★★
()
Ответ на: комментарий от damix9

настраивать аудит, протоколировать запуск бинарников, парсить лог по дате их запуска - так себе идея, если честно

d00fy ★★★
()

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

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)

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

jsforever
()

Ты не сэкономишь много места, удаляя всякую мелочь. Лучший способ на мой взгляд - при обновлениях удалять ненужные пакеты вместо того, чтобы и обновлять. Еще можно проанализировать расход диска, например, с помощью ncdu, выявить самые большие файли или каталоги, и посмотреть, к каким пакетам они относятся. Еще может быть, что у apt есть аналог emerge --oneshot, чтобы заранее предотвращать захламление

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)

Я удаляю не отдельные пакеты, а пакеты связанные с функционалом, который мне не нужен. Например, нет у меня принтера, офисных пакетов и всего связанного с созданием pdf, я полностью удалил cups. Нет qt-софта, от qt5 ничего не осталось. А это порядка 200мб.

dmitry237 ★★★★★
()
Ответ на: комментарий от annulen

Ты не сэкономишь много места, удаляя всякую мелочь.

Именно поэтому я хочу удалять не мелочь, а сразу по 30% самого ненужного.

Самое ненужное != самое большое, хотя эту давность использования хорошо бы умножить на какой-то коэффициент, зависящий от размера пакета и его зависимостей.

Каталог я и так знаю - /usr, а файлы там одного порядка по размеру.

damix9 ★★★
() автор топика

1.
Выведи atime в unixtime всех файлов в фс
Отсортируй, может быть отрежь по какому-нибудь порогу (типа, старше года-полугода) чтобы уменьшить мусор
Может быть, пофильтруй по какому-нибудь еще признаку (если мы говорим про «используемость», то наверное все файлы с признаком исполняемости?)

find / -type f -printf "\n%A@ %p" -... -...


2.
Для каждого найденного файла просматривай dpkg -S чтобы узнать к какому пакету он принадлежит.

3. Ты великолепен.

slowpony ★★★★★
()

я удалял через аптитуде, ручками.
для каждого пакета в нем можно посмотреть связи «вверх» и удалить те, которые стоят не в жестких требованиях.
кучи всяких индийских шрифтов, доп.улучшателей. удалял когда-то сейчас влом…
самый тяжелый на бессмысленные вкрапления пакет, это фирмваря :) там лишноты в виде драйверов кучами собрана. но дробить пакет никто не будет,

pfg ★★★★★
()
Ответ на: комментарий от pfg

Многие не понимают. Цель не удалить лишнее из системы, не сделать говносборку, это другой юзкейс. Здесь надо сделать что-то типа кэша, вытеснить старые пакеты, когда задача, которую они решали, больше не возникает.

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

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

~$ free -h
             total        used        free      shared  buff/cache   available
Память:      3,8Gi       1,1Gi       124Mi       4,0Mi       2,6Gi       2,5Gi

с носителя ну я тебе по это и писал.

pfg ★★★★★
()
Ответ на: комментарий от damix9

Ты какой-то совсем поехавший. У тебя в маздайке софт ставится по схеме «все компоненты в одно место» и нет никаких проблем ставить, например, на «диск x».

Не ставь на «диск c» и проблем не будет. Нахрена ты туда ставишь и далее пытаешься это «вытеснять»? Совсем овощной?

jsforever
()
Ответ на: комментарий от mittorn

Думер не имеет отношения ни к каким странным убеждениям, он символизирует просто печаль.

А теги действительно не нужны после того, как их убрали половину и не дали создавать свои. Я их создавал даже, типа www.linux.org.ru/tag/bcm20702, а что толку, теперь их даже найти в списке тегов нельзя.

damix9 ★★★
() автор топика
Ответ на: комментарий от jsforever

Зачем так реагировать на шутку над невнимательными людьми?

У тебя в маздайке софт ставится по схеме «все компоненты в одно место» и нет никаких проблем ставить, например, на «диск x».

Я с маздайки ушёл уже лет 10 как.

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Здесь надо сделать что-то типа кэша, вытеснить старые пакеты, когда задача, которую они решали, больше не возникает.

Может тебе и правда нужен какой-нибудь bcache?

annulen ★★★★★
()
Ответ на: комментарий от annulen

Нет, bcache это для другого.

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

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

И насколько много там хлама? 100 мегабайт? 200? Что-то я сомневаюсь, что активное его удаление действительно того стоит, лучше удалять пассивно при обновлениях.

annulen ★★★★★
()
Ответ на: комментарий от damix9

По моей оценке на глаз 3-5 Гб.

Что же там такое? Модули от старых ядер? Не используемые версии JDK? Несколько CUDA SDK?

annulen ★★★★★
()
Ответ на: комментарий от annulen

Нет, просто всего понемножку. Я могу ошибаться, и даже намного. Когда наведу порядок, расскажу, сколько выбросил.

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Если чистить по atime, то надо вначале пройтись по списку загруженных сервисов, вполне возможно, что есть что-то по факту ненужное, но регулярное загружаемое с диска.

annulen ★★★★★
()
Ответ на: комментарий от jsforever

Ну так popularity-contest вроде этот atime и смотрит, но только для программ.

А более интеллектуального ничего не существует?

Ответ на Показать наименее нужные пакеты (комментарий) :

slowpony, наверное, тут надо ещё что-то типа GROUP BY из SQL по имени пакета и SELECT имя пакета, SUM(размер файла), MAX(atime).

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

Можно find’ом собрать данные и записать в sqlite exec’ом, а дальше обрабатывать, как нравится

annulen ★★★★★
()

Я себе в качестве эксперимента сделал весь рут в tmpfs, а то, что нужно сохраняю на отдельном persistent-разделе и монтирую. Т.е. получается что после перезагрузки система всегда в одном состоянии и его изменять нужно явно. Брат жив.

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 1)
1 апреля 2023 г.

Собрал данные в файл:

find / -xdev -type f -exec stat --printf='%n|%s|%X|' '{}' \; -exec sh -c "dpkg -S '{}' 2>/dev/null | cut -d' ' -f1 | rev | cut -c 2- | rev; dpkg -S '{}' 1>/dev/null 2>/dev/null || echo" \; > ~/file_data.csv

Выполнялось несколько дней, собралось больше 40 Мб данных.

Затем воспользовался DB Browser for SQLite, в новой базе данных создал таблицу

CREATE TABLE `file_data` (
	`name`	TEXT NOT NULL,
	`size`	INTEGER NOT NULL,
	`access_time`	INTEGER NOT NULL,
	`package`	TEXT,
	PRIMARY KEY(`name`)
)
Файл -> Импорт -> Таблицы из файла CSV ...
Ну а дальше можно писать запросы к базе и получать любые требуемые отчеты.

Спасибо, Aceler, slowpony, annulen.

damix9 ★★★
() автор топика

Я в подобной ситуации просто взял список установленных пакетов и просматривал его глазами последовательно. Справился за полчаса.

Вообще смысла в этом не много. Лишние пакеты есть-пить не просят, места в масштабах современных накопителей почти не занимают. Я систему на флешку копировал, только потому и решил почистить.

wandrien ★★★
()
13 сентября 2023 г.
Ответ на: комментарий от damix9

Aceler, slowpony, annulen,

SELECT package p, SUM(size) / 1024 / 1024 AS p_size, DATETIME(MAX(access_time), 'unixepoch', 'localtime') AS atime
FROM file_data
GROUP BY package
HAVING atime < '2023-01-27 00:00:00'
ORDER BY p_size DESC
LIMIT 50;
почему-то первым выводит
linux-firmware	418	2022-12-08 05:26:10
хотя прошивки ведь точно подгружались и в этом году.

А выбросить удалось вот что.

# apt purge libclang-6.0-dev openjdk-11-jdk-headless:amd64 fpc-source-3.0.4 llvm-6.0-dev libboost1.65-dev:amd64 libgphobos-8-dev:amd64 libpython3.6-dev:amd64 linux-hwe-5.4-headers-5.4.0-81 linux-headers-4.20.12-042012 linux-headers-4.19.25-041925 texlive-plain-generic texlive-latex-extra libclang-common-6.0-dev libicu-dev libpython2.7-dev:amd64 gimp-help-ru texlive-latex-recommended freepats
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  dh-python g++-8 gimp-help-common gir1.2-atspi-2.0 gir1.2-gtk-2.0 gir1.2-harfbuzz-0.0 icu-devtools libatk-bridge2.0-dev libatk1.0-dev libatspi2.0-dev libboost-atomic1.65.1 libboost-chrono1.65.1 libboost-serialization1.65.1 libclang1-6.0 libepoxy-dev libffi-dev
  libgphobos76 libgraphite2-dev libharfbuzz-gobject0 libicu-le-hb0 libiculx60 libobjc-7-dev libobjc4 libsgmls-perl libstdc++-8-dev libxcomposite-dev libxft-dev libxtst-dev llvm-6.0 llvm-6.0-runtime preview-latex-style python-all sgmlspl x11proto-composite-dev
  x11proto-record-dev
Для их удаления используйте «apt autoremove».
Будут установлены следующие дополнительные пакеты:
  libpython3.6 libpython3.6-minimal libpython3.6-stdlib python3.6 python3.6-minimal python3.6-venv
Предлагаемые пакеты:
  python3.6-doc
Следующие пакеты будут УДАЛЕНЫ:
  default-jdk-headless* docbook-utils* fp-utils-3.0.4* fpc-source-3.0.4* freepats* gdc* gdc-8* gimp-help-ru* goodvibes* libass-dev* libbluray-dev* libboost-atomic1.65-dev* libboost-chrono1.65-dev* libboost-date-time1.65-dev* libboost-dev*
  libboost-serialization1.65-dev* libboost-system1.65-dev* libboost-thread-dev* libboost-thread1.65-dev* libboost1.65-dev* libclang-6.0-dev* libclang-common-6.0-dev* libgphobos-8-dev* libgphobos-dev* libgtk-3-dev* libgtk2.0-dev* libharfbuzz-dev* libicu-dev*
  libicu-le-hb-dev* libpango1.0-dev* libplist-dev* libpython-all-dev* libpython-dev* libpython2.7-dev* libpython3-dev* libpython3.6-dev* libsoup2.4-dev* libxml2-dev* libxslt1-dev* linux-headers-4.19.25-041925* linux-headers-4.19.25-041925-generic*
  linux-headers-4.20.12-042012* linux-headers-4.20.12-042012-generic* linux-hwe-5.4-headers-5.4.0-81* llvm-6.0-dev* openjdk-11-jdk-headless* python-all-dev* python-dev* python2.7-dev* python3-dev* python3.6-dev* texlive-formats-extra* texlive-latex-extra*
  texlive-latex-recommended* texlive-pictures* texlive-plain-generic* texlive-xetex*
Следующие пакеты будут обновлены:
  libpython3.6 libpython3.6-minimal libpython3.6-stdlib python3.6 python3.6-minimal python3.6-venv
Обновлено 6 пакетов, установлено 0 новых пакетов, для удаления отмечено 57 пакетов, и 852 пакетов не обновлено.
Необходимо скачать 0 B/5 478 kB архивов.
После данной операции объём занятого дискового пространства уменьшится на 1 902 MB.
Хотите продолжить? [Д/н]
И еще
Следующие пакеты будут УДАЛЕНЫ:
  dh-python g++-8 gimp-help-common gir1.2-atspi-2.0 gir1.2-gtk-2.0 gir1.2-harfbuzz-0.0 icu-devtools libatk-bridge2.0-dev libatk1.0-dev libatspi2.0-dev libboost-atomic1.65.1 libboost-chrono1.65.1 libboost-serialization1.65.1 libclang1-6.0 libepoxy-dev libffi-dev
  libgphobos76 libgraphite2-dev libharfbuzz-gobject0 libicu-le-hb0 libiculx60 libobjc-7-dev libobjc4 libsgmls-perl libstdc++-8-dev libxcomposite-dev libxft-dev libxtst-dev llvm-6.0 llvm-6.0-runtime preview-latex-style python-all sgmlspl x11proto-composite-dev
  x11proto-record-dev
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 35 пакетов, и 852 пакетов не обновлено.
После данной операции объём занятого дискового пространства уменьшится на 105 MB.

Но большая часть ненужных файлов оказалась вне всех пакетов - логи и снап.

damix9 ★★★
() автор топика
Ответ на: комментарий от damix9

У вас в autoremove несколько десятков пакетов, а вы собираете какие-то копейки через установку баз данных

PPP328 ★★★★★
()
Ответ на: комментарий от annulen

2Гб одних только пакетов.

Тебя об этом и предупреждали

А почему у вас тут одни душные на форуме?

damix9 ★★★
() автор топика
Ответ на: комментарий от PPP328

А вот этих на 100 Мб. Но тоже приятно.

damix9 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.