Очередной раз тут листал федоровский фак (кстати, категорически рекомендую независимо от дистрибутива) и наткнулся на вот это, и вспомнил как же плохо живётся в DNF без такой фичи — возможности обнаружить «одинокие» пакеты (с собой они могут тащить другие пакеты), которые не требуются никаким другим пакетам как зависимость.
Дебиянщики ща будут пальцы гнуть и будут правы. Кстати, интересно, как с этим в раче?
Для Ъ выложу здесь.
sudo dnf install gcc libsolv-devel
Кстати, мне этих не хватило, ещё потребовалось поставить redhat-rpm-config
.
touch rpm-unneeded.c
В этот файлик положите
#include <solv/pool.h>
#include <solv/poolarch.h>
#include <solv/repo_rpmdb.h>
#include <solv/solver.h>
int main(void)
{
Pool *pool;
Repo *rpmdb;
Solver *solver;
Queue q;
pool = pool_create();
pool_setarch(pool, NULL);
pool_set_flag(pool, POOL_FLAG_IMPLICITOBSOLETEUSESCOLORS, 1);
rpmdb = repo_create(pool, "@system");
repo_add_rpmdb(rpmdb, NULL, 0);
pool->installed = rpmdb;
solver = solver_create(pool);
solver_set_flag(solver, SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES, 1);
solver_set_flag(solver, SOLVER_FLAG_BEST_OBEY_POLICY, 1);
solver_set_flag(solver, SOLVER_FLAG_YUM_OBSOLETES, 1);
queue_init(&q);
solver_solve(solver, &q);
solver_get_unneeded(solver, &q, 1);
for (int i = 0; i < q.count; i++)
{
printf("%s\n", pool_solvid2str(pool, q.elements[i]));
}
queue_free(&q);
pool_free(pool);
return 0;
}
Собираем
gcc $(rpm -E %{optflags}) -fPIC rpm-unneeded.c -o rpm-unneeded $(rpm -E %{build_ldflags}) -lsolv -lsolvext
Положим подальше, хорошая программа!
mkdir ~/.local/bin
mv rpm-unneeded ~/.local/bin
Всё! Теперь любители чистоты и всяких там оптимизаций могут приступать к очищению своей системы от всякой бесполезной фигни.
Пару слов новичку. Среди пакетов, которые можно спокойно удалить окажутся и пакеты связанные с загрузкой системы такие как grub2-*
или shim-x64
, следи за тем, чтобы они не улетели в приступе пуризма, иначе система не загрузится.
Кстати, избавиться от этих «опасных» пакетов можно переходом на systemd-boot, тогда больше ничто не будет стоять на пути у твоей ярости, рекомендую.
UPD.
Спасибо t184256, теперь я знаю, что в федоре уже прикрутили плагин к DNF, но у меня федоры нет, поэтому не могу посмотреть и сравнить.
Так что господа дебиянщики — всё, больше вам нечем похвастать.
–––––––
UPD 2
Прикрутили в федору аж в 2017 году, назывался python2-dnf-plugin-leaves
. Посыпаю голову пеплом, век живи, век учись…
пруф: https://koji.fedoraproject.org/koji/buildinfo?buildID=885703
Так что, злорадства по поводу отсталости DNF отменяются. Грустные дебияньшики и арчеводы расходятся несолоно хлебавши.