Подробный гайд: sudo dpkg-query -l | grep packagekit

Команда для проверки установленных пакетов PackageKit в Debian/Ubuntu. Помогает диагностировать блокировки apt и управлять обновлениями через GUI.

2026.05.16                  


Подробный гайд: sudo dpkg-query -l | grep packagekitПодробный гайд: sudo dpkg-query -l | grep packagekit Эта команда часто используется в Debian, Ubuntu, Linux Mint и других DEB-ориентированных дистрибутивах для быстрой проверки установленных компонентов PackageKit. Ниже разберём её работу, вывод, лучшие практики и типичные сценарии использования.


1. Что делает команда в одном предложении

Запрашивает у системной базы dpkg список всех известных пакетов, отфильтровывает строки, содержащие слово packagekit, и выводит результат в терминал.


2. Пошаговый разбор синтаксиса

Часть команды Назначение
sudo Запуск от имени суперпользователя. На самом деле не требуется: dpkg-query только читает базу /var/lib/dpkg/status, которая доступна всем пользователям. Привычка писать sudo здесь избыточна, но не вредит.
dpkg-query Низкоуровневая утилита для чтения и запросов к базе данных dpkg.
-l (или --list) Режим вывода списка пакетов. Без аргументов показывает все установленные пакеты.
| (pipe) Конвейер: передаёт стандартный вывод левой команды как стандартный ввод правой.
grep packagekit Фильтрует строки, оставляя только те, где встречается подстрока packagekit (регистрозависимо).

3. Как читать вывод команды

Типичный результат выглядит так:

ii  packagekit               1.2.2-2ubuntu2.1   amd64   Provides a package management service
rc  packagekit-tools         1.2.2-2ubuntu2.1   amd64   Provides a package management service
pn  packagekit-doc           <нет>              <нет>   PackageKit documentation

Расшифровка колонок:

Колонка Описание
1 Статус пакета (2 символа). Самые важные:
ii → установлен и корректно настроен
rc → удалён, но остались конфигурационные файлы
un → не установлен
pn → пакет не найден или удалён полностью
2 Имя пакета
3 Версия
4 Архитектура (amd64, arm64, i386 и т.д.)
5+ Краткое описание

Если вывод пустой → в системе нет пакетов, в имени которых есть packagekit.


4. Когда и зачем это используется

Сценарий Зачем проверять packagekit
Ошибка блокировки dpkg/apt PackageKit (через gnome-software, kde-discover, pkcon) может держать /var/lib/dpkg/lock или /var/lib/apt/lists/lock. Проверка помогает понять, запущен ли он.
Проблемы с обновлениями GUI Центры приложений на GNOME/KDE часто используют PackageKit как бэкенд. Если обновления "зависают", проверяют его версию/состояние.
Удаление лишних сервисов На серверах или минимальных сборках PackageKit не нужен. Команда помогает найти все связанные пакеты для полного удаления.
Диагностика зависимостей Иногда другие пакеты тянут packagekit-* как зависимость. Проверка помогает отследить "кто установил".

5. Более правильные и быстрые аналоги

Использование grep после dpkg-query -l работает, но неэффективно: утилита сначала выводит все пакеты (~2000+ строк), а потом grep фильтрует. dpkg-query умеет фильтровать сам:

# Рекомендуется: встроенный поиск по шаблону
dpkg-query -l '*packagekit*'

# Альтернатива через apt (более современный вывод)
apt list --installed 2>/dev/null | grep packagekit

Шаблоны поддерживают *, ?, [abc]. Кавычки обязательны, чтобы оболочка не раскрыла * до передачи в dpkg-query.


6. Что делать после проверки

Если пакет установлен (ii)

  • Проверить статус службы: systemctl status packagekit
  • Остановить (если мешает apt): sudo systemctl stop packagekit
  • Отключить автозапуск: sudo systemctl disable packagekit

Если остались конфиги (rc)

  • Полностью удалить: sudo apt purge 'packagekit*'

Если нужно переустановить

sudo apt install --reinstall packagekit

Удалить полностью (например, на сервере)

sudo systemctl stop packagekit
sudo systemctl disable packagekit
sudo apt purge 'packagekit*'
sudo apt autoremove

Внимание:

на десктопе это сломает GNOME Software, KDE Discover, обновления через GUI и некоторые уведомления о доступных обновлениях.


7. Частые вопросы и нюансы

Вопрос Ответ
Нужен ли sudo? Нет. dpkg-query только читает базу. sudo нужен только для установки/удаления/изменения пакетов.
Почему grep не находит пакет, который точно установлен? Возможны варианты: 1) имя отличается (например, packagekit-backend-apt), 2) регистр (PackageKit vs packagekit), 3) пакет установлен через snap/flatpak/nix (не виден в dpkg). Используйте dpkg-query -l '*packagekit*' или snap list | grep packagekit.
Как узнать, какие пакеты зависят от PackageKit? apt rdepends packagekit или apt-cache rdepends packagekit
Можно ли отключить только автообновление через PackageKit? Да: gsettings set org.gnome.software download-updates false (GNOME) или через настройки PackageKit в /etc/PackageKit/PackageKit.conf.

Итог

  • sudo dpkg-query -l | grep packagekit → рабочая, но неоптимальная команда для поиска пакетов PackageKit в DEB-системах.
  • Лучше использовать: dpkg-query -l '*packagekit*'
  • Результат помогает диагностировать блокировки apt, управлять GUI-центрами приложений и очищать серверные сборки.
  • sudo в этой команде избыточен, но безвреден.