Подробный гайд: Вывод списка установленных пакетов с помощью dpkg-query в Astra Linux
Ниже представлен подробный гайд по работе с утилитой dpkg-query в операционной системе Astra Linux. Поскольку Astra Linux основана на архитектуре Debian, инструменты управления пакетами dpkg работают здесь стандартно, но имеют свои нюансы в контексте безопасности и администрирования.
1. Введение
dpkg-query— это утилита командной строки, предназначенная для поиска информации о пакетах, зарегистрированных в базе данныхdpkg. В отличие от высокоуровневых менеджеров (например,apt),dpkg-queryработает напрямую с локальной базой данных установленных пакетов, не обращаясь к репозиториям в интернете.
Преимущества:
- Работает без доступа к интернету.
- Позволяет гибко форматировать вывод.
- Быстрее, чем
apt list --installed, так как не проверяет репозитории.
2. Базовый вывод списка всех пакетов
Самая простая команда для отображения списка всех пакетов, их версий и статуса установки.
dpkg-query -l
Или аналог:
dpkg -l
Что вы увидите:
Вывод будет разделен на колонки:
- Желаемое действие (например,
ii— установлен). - Имя пакета.
- Версия пакета.
- Архитектура.
- Краткое описание.
Примечание:
- Для просмотра списка обычно не требуются права суперпользователя (root), так как база данных пакетов доступна для чтения всем пользователям. Однако в защищенных конфигурациях Astra Linux Special Edition (SE) права могут быть ограничены.
3. Поиск конкретных пакетов (Фильтрация)
Вы можете использовать шаблоны (wildcards) для поиска пакетов по имени.
Поиск пакета по точному имени:
dpkg-query -l nginx
Поиск пакетов, содержащих часть имени (например, все пакеты, связанные с python):
dpkg-query -l '*python*'
Важно:
- Кавычки
'защищают звездочку*от раскрытия оболочкой bash.
Поиск по описанию (менее эффективно, но возможно через grep):
dpkg-query -l | grep -i "web server"
4. Гибкое форматирование вывода
Главное преимущество dpkg-query перед dpkg -l — возможность настраивать формат вывода с помощью флага -f (format).
Синтаксис:
dpkg-query -f '<формат>' '<шаблон_пакета>'
Пример 1: Вывод только имен пакетов (по одному в строке)
dpkg-query -f '${Package}\n'
Пример 2: Имя пакета и его версия
dpkg-query -f '${Package} ${Version}\n'
Пример 3: Имя, версия и статус установки
dpkg-query -f '${Package} ${Version} ${Status}\n'
Пример 4: Вывод в формате, удобном для скриптов (разделитель табуляция)
dpkg-query -f '${Package}\t${Version}\t${Status}\n'
Список популярных переменных для форматирования:
${Package}— имя пакета.${Version}— версия пакета.${Status}— статус (например,install ok installed).${Architecture}— архитектура (amd64, i386 и т.д.).${Description}— полное описание.${Maintainer}— сопровождающий пакет.
5. Расшифровка статусов пакетов
В первом столбце вывода dpkg-query -l вы увидите двухбуквенные коды. Вот самые важные из них:
| Код | Значение | Описание |
|---|---|---|
| ii | Installed | Пакет успешно установлен и настроен. |
| rc | Removed, Config-files | Пакет удален, но файлы конфигурации остались. |
| un | Unknown | Пакет неизвестен системе (часто означает, что он не установлен). |
| iU | Inst-Upgrade | Пакет установлен, но требует обновления. |
| rH | Remove-HalfInst | Удаление прервано, пакет наполовину установлен. |
Как найти "мусор" (удаленные пакеты с остатками конфигов):
dpkg-query -l | grep '^rc'
6. Подсчет количества установленных пакетов
Чтобы узнать общее количество пакетов в системе:
dpkg-query -f '${Package}\n' | wc -l
Или через стандартный список:
dpkg-query -l | grep '^ii' | wc -l
(Команда grep '^ii' фильтрует только успешно установленные пакеты).
7. Сохранение списка в файл
Для аудита безопасности или резервного копирования списка ПО полезно сохранить вывод в файл.
Сохранить полный список:
dpkg-query -l > ~/installed_packages.txt
Сохранить только имена пакетов (для последующей установки на другой машине):
dpkg-query -f '${Package}\n' > ~/package_list.txt
Как восстановить пакеты из списка (на другой системе Astra Linux):
sudo apt install $(cat ~/package_list.txt)
Или через dpkg (если есть .deb файлы):
sudo dpkg --set-selections < ~/package_list.txt
sudo apt-get dselect-upgrade
8. Особенности в Astra Linux
- Безопасность (Parsec): В версии Astra Linux Special Edition (SE) могут быть применены мандатные политики доступа. Если команда возвращает ошибку доступа к
/var/lib/dpkg/status, попробуйте выполнить её черезsudoили обратитесь к администратору безопасности. - Кодировка: В редких случаях при выводе описаний пакетов могут возникать проблемы с кодировкой (кракозябры), если локаль системы не установлена в
UTF-8. Убедитесь, что переменная окружения настроена корректно:bash echo $LANG # Должно быть ru_RU.UTF-8 или en_US.UTF-8 - Альтернативы: В Astra Linux также доступен менеджер пакетов
apt. Для повседневных задач часто удобнее использоватьapt list --installed, ноdpkg-queryостается незаменимым для скриптов и глубокой диагностики.
9. Частые ошибки и решения
| Ошибка | Причина | Решение |
|---|---|---|
Command 'dpkg-query' not found |
Утилита отсутствует (крайне редко) | Установить пакет dpkg (обычно установлен по умолчанию). |
Permission denied |
Нет прав на чтение базы | Добавить sudo перед командой или проверить права доступа. |
| Вывод прерывается (Page down) | Вывод слишком длинный | Добавьте | less в конец команды (например, dpkg-query -l | less). |
10. Резюме (Шпаргалка)
| Задача | Команда |
|---|---|
| Все пакеты | dpkg-query -l |
| Поиск пакета | dpkg-query -l '*имя*' |
| Только имена | dpkg-query -f '${Package}\n' |
| Имя + Версия | dpkg-query -f '${Package} ${Version}\n' |
| Количество пакетов | dpkg-query -f '${Package}\n' \| wc -l |
| Удаленные (остатки) | dpkg-query -l \| grep '^rc' |