Подробный гайд: 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в этой команде избыточен, но безвреден.