Список пакетов, явно установленных пользователем с использованием dnf

Вопрос или проблема

У меня система Fedora 28 (ИЗМЕНИТЬ: обновлено с Fedora 27, а не установлено заново). Я могу запустить dnf list --installed, чтобы вывести список из 2165 пакетов, установленных на моей системе. Я могу запустить dnf leaves (используя плагин leaves), чтобы вывести все 368 пакетов, которые были установлены сами по себе, а не как зависимости чего-то другого.

Список leaves включает как такие вещи, как sudo-1.8.22-0.2.b1.fc28.x86_64, который является довольно важной частью системы, так и такие вещи, как steam-1.0.0.54-17.fc28.i686, который таковым не является и установлен мной.

Есть ли у Fedora / RPM / dnf понятие “пакеты, которые являются частью базовой системы” в отличие от “пакетов, которые запросил пользователь”? Если да, есть ли какой-либо способ перечислить все последние пакеты? Если нет, существует ли какой-либо другой способ получить этот список, пусть и приблизительно?

Моя конечная цель — очистить свою систему, удалив старые пакеты, которые я установил, но больше не нуждаюсь. Проблема в том, что у меня нет представления о том, что я установил.

dnf различает [1] между

  1. вручную установленными пакетами
  2. пакетами, которые установлены только как зависимость вручную установленного пакета
  3. пакетами, которые были установлены как часть группы

Чтобы получить список “пакетов, которые запросил пользователь”, вы можете перечислить категорию (1) из вышеуказанного с помощью sudo dnf repoquery --userinstalled.

[1] https://dnf.readthedocs.io/en/latest/command_ref.html#mark-command-label

Вы можете попробовать

dnf history

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

Еще одно место, где можно получить информацию о модификациях пакетов — это посмотреть в /var/log/yum.log. Но лог по умолчанию вращается, что даст вам всего лишь небольшое временное окно для реконструкции модификаций.

dnf history userinstalled выглядит многообещающе. Он перечисляет только 142 пакета, некоторые из которых я узнаю, но некоторые из них являются ядрами и обычными системными пакетами.

Тем не менее, если я посмотрю на пересечение пакетов ‘userinstalled’ и leaves:

comm -12 <(dnf leaves | sort) <(sudo dnf history userinstalled | sort)

Там около 50 пакетов, большинство из которых хотя бы немного знакомы:

  • попытки заставить оборудование работать правильно: acpi broadcom-wl dkms kmod-wl lshw vulkan
  • программирование: gcc-gdb-plugin java-1.8.0-openjdk java-1.8.0-openjdk-devel libomp
  • любимые инструменты: apg ffmpeg lastpass-cli mercurial mosh youtube-dl zsh
  • PDF-чепуха: ghostscript-tools-fonts ghostscript-tools-printing texlive-epstopdf-bin
  • утилиты рабочего стола: clementine feh steam transmission-cli vlc
  • вещи для Android: android-tools jmtpfs libmtp-examples simple-mtpfs
  • RPMFusion: rpmfusion-free-release rpmfusion-nonfree-release
  • решение этой проблемы: dnf-utils python3-dnf-plugin-leaves

А затем куча вещей, которые я не могу объяснить: compat-ffmpeg28 dracut-live fedora-obsolete-packages langpacks-en libnsl2 memtest86+ openssl-pkcs11 python2-beautifulsoup4 python3-beautifulsoup4 python3-dnf-plugin-system-upgrade python2-pypam python3-cssselect python3-html5lib webkit2gtk3-plugin-process-gtk2

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

Fedora 41:

dnf repoquery –installed

Ответ или решение

Чтобы получить список пакетов, установленных пользователем на системе Fedora, вы можете воспользоваться менеджером пакетов dnf, который предоставляет возможность удобно управлять программным обеспечением.

Различия в установке пакетов

В dnf существует три категории пакетов:

  1. Пакеты, установленные вручную пользователем.
  2. Пакеты, установленные в качестве зависимостей от вручную установленных пакетов.
  3. Пакеты, установленные в рамках группы.

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

Получение списка пользовательских пакетов

Используйте следующую команду для вывода списка пакетов, которые были установлены вручную пользователем:

sudo dnf repoquery --userinstalled

Эта команда отобразит все пакеты, которые вы установили самостоятельно, исключая зависимые пакеты. Однако полезно также ознакомится с другими инструментами для получения более полной картины.

Дополнительные команды для анализа пакетов

  1. Просмотр истории установок:

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

    dnf history

    Эта команда покажет все изменения, внесенные с помощью dnf. Однако стоит отметить, что история может быть ограниченной по времени, в зависимости от настроек системы.

  2. Анализ журнала yum:

    Также можно проверить файл /var/log/yum.log, который содержит журналы о действиях с пакетами. Учитывайте, что журналы могут быть ротированы, и вы сможете видеть только недавнюю историю.

  3. Выявление пересечений в списках:

    Для более точного анализа вы можете воспользоваться командой comm, чтобы найти пересечения между пакетами, которые вы установили вручную, и "листьями" (пакетами, установленными как независимые):

    comm -12 <(dnf leaves | sort) <(sudo dnf history userinstalled | sort)

    Это поможет вам выделить те пакеты, которые вы могли установить, но о которых забыли.

Итог

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

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

Оцените материал
Добавить комментарий

Капча загружается...