Список установленных пакетов в Ubuntu — apt

В этой инструкции объясняется, как перечислить установленные пакеты в Ubuntu с помощью APT — штатного менеджера пакетов для дистрибутивов на базе Debian. Приведены команды для интерактивного использования, для скриптов и для экспорта списка пакетов.
Быстрый обзор команд
- Показать все установленные пакеты:
sudo apt list --installed. - Вывести только имена пакетов:
sudo apt list --installed | awk '{split($0, a, "/"); print a[1]}'. - Подсчитать число пакетов:
sudo apt list --installed | wc -l. - Альтернатива для старых систем:
sudo dpkg-query -lилиsudo dpkg-query -f '${binary:Package}\n' -W. - Экспорт/восстановление списка:
dpkg --get-selections/dpkg --set-selections+apt-get dselect-upgrade.
Как вывести список установленных пакетов через apt
Команда apt поддерживает подкоманду list с опциями. Чтобы увидеть только установленные пакеты, выполните:
sudo apt list --installedВывод содержит строку на пакет в формате:
package-name/version channel [installed]
Иногда вывод содержит строки статуса и служебные заметки. Для автоматической обработки удобно выбирать только имя пакета.
Вывести только имена пакетов
Для скриптов полезно получить чистый список имён. Два распространённых варианта:
sudo apt list --installed | awk '{split($0, a, "/"); print a[1]}'или
sudo apt list --installed | sed 's#/.*##'Первый вариант разбивает строку по символу / и печатает первую часть. Второй заменяет все, что идёт от слэша включительно, пустой строкой.
Подсчёт установленых пакетов
Чтобы узнать общее число установленных пакетов, добавьте wc -l:
sudo apt list --installed | wc -lЭто быстро даёт численную оценку установленного ПО на системе.
Important:
apt listможет включать строку заголовка или дополнительные строки статуса. При подсчёте черезwc -lэто может дать на 1-2 строки больше. Фильтруйте результат, если важна абсолютная точность.
Использование dpkg-query
На старых версиях Ubuntu или в скриптах, завязанных на dpkg, можно использовать dpkg-query.
sudo dpkg-query -lЭта команда выводит табличный формат со статусом, версией и кратким описанием. Чтобы вывести только имена пакетов:
sudo dpkg-query -f '${binary:Package}\n' -WВывод удобочитаемый и стабилен для парсинга.
Экспорт и восстановление списка пакетов
Если нужно перенести установленные пакеты на другой сервер или восстановить набор пакетов после переустановки системы, используйте сочетание dpkg и apt:
Экспорт текущих выборов пакетов:
sudo dpkg --get-selections > ~/installed-packages.txtКопируйте файл на целевую машину. Затем на целевой машине восстановите набор так:
sudo dpkg --set-selections < ~/installed-packages.txt
nsudo apt-get update
sudo apt-get dselect-upgradeЭта последовательность пытается привести набор установленных пакетов к состоянию из файла. Учтите, что пакеты с другим именем, архитектурой или отсутствующие в репозиториях не будут установлены автоматически.
Различия между apt и dpkg — кратко
- apt — высокоуровневый менеджер пакетов. Он работает с репозиториями, зависимостями и удобнее для повседневных задач.
- dpkg — низкоуровневый инструмент для установки/удаления .deb-файлов и получения информации о пакетах на хосте.
Используйте apt для управления пакетами и зависимостями, dpkg — для низкоуровневых операций или совместимости со старыми скриптами.
Когда перечисление пакетов даёт неполные или неожиданные результаты
- Виртуальные пакеты и мета-пакеты могут не отражать набор фактически установленных файлов.
- Пакеты, установленные вручную через .deb без регистрации в dpkg, не будут в списке (редкий случай).
- Контейнеры и chroot окружения имеют свои списки пакетов.
Если вы используете snap, flatpak или AppImage — они управляют пакетами отдельно. Для таких утилит нужны собственные команды (snap list, flatpak list).
Практические шаблоны и чек-листы
Руководство администратора: перенос пакетов на новый сервер
- На исходном сервере:
sudo dpkg --get-selections > /tmp/installed-packages.txt - Скопировать
/tmp/installed-packages.txtна целевой сервер. - На целевом сервере:
sudo dpkg --set-selections < /tmp/installed-packages.txt sudo apt-get updatesudo apt-get dselect-upgrade- Проверить логи
aptи отсутствие конфликтов.
Чек-лист для разработчика перед очисткой системы
- Сделать резервную копию списка пакетов и конфигураций.
- Проверить, какие пакеты были установлены вручную (
apt-mark showmanual). - Проверить зависимости, которые будут удалены вместе с пакетом (
apt autoremove --dry-run).
Краткая методология для скриптов
- Получить список только имён пакетов:
sudo dpkg-query -f '${binary:Package}\n' -W. - Сохранить в файл:
sudo dpkg-query -f '${binary:Package}\n' -W > pkgs.txt. - Применить фильтры (удалить локальные или временные записи).
- При восстановлении:
sudo xargs -a pkgs.txt apt install -y(проверьте доступность пакетов в репо).
Ментальная модель
Думайте о apt как о менеджере, который знает о репозиториях и зависимостях. dpkg — это реестр того, что физически установлено в системе. Для автоматизации надёжней работать с dpkg-выводом, а для управления — с apt.
Критерии приёмки
- Команда выводит читаемый список всех пакетов установленных в системе.
- Для автоматизированных сценариев вывод содержит только имена пакетов (по одному в строке).
- Экспортированный файл можно использовать для восстановления на другом хосте без ошибок разборки формата.
Итог
Вывод списка установленных пакетов в Ubuntu прост: sudo apt list --installed даёт быстрый обзор, а dpkg-query и dpkg --get-selections подходят для стабильного парсинга и экспорта. Выберите инструмент в зависимости от задач: интерактивный просмотр, скрипты или перенос конфигурации.
Словарь в одну строку
- apt — высокоуровневый менеджер пакетов для Debian/Ubuntu.
- dpkg — инструмент низкого уровня для работы с .deb и локальной базой пакетов.
- dpkg-query — утилита для запроса информации о пакетах.
Примечание: если вы используете snap, flatpak или другое средство упаковки, они имеют собственные списки и не отображаются в выводе apt/dpkg.