Управление пакетами Ubuntu: шпаргалка по APT и dpkg
Основные команды APT и dpkg для пакетов Ubuntu
Система управления пакетами Ubuntu является основой установки и обслуживания программного обеспечения, что делает её обязательной для любого пользователя Linux или системного администратора.
Это изображение было создано с помощью AI-модели Flux 1 dev.
Что такое управление пакетами APT?
APT (Advanced Package Tool) — это основная система управления пакетами Ubuntu, унаследованная от Debian. Это мощный инструмент командной строки для установки, обновления и удаления программных пакетов. APT автоматически решает проблемы с зависимостями, подключается к официальным репозиториям Ubuntu и является традиционным методом управления системными пакетами в Ubuntu и дистрибутивах на основе Debian. Если вы новичок в Ubuntu, ознакомьтесь с нашим руководством по установке Ubuntu 24.04 и полезным инструментам, чтобы начать работу с правильно настроенной системой.
Основные характеристики:
- Собственный для Ubuntu/Debian: встроен, дополнительная установка не требуется
- Общие библиотеки: эффективное использование дискового пространства за счёт общих системных зависимостей
- Ручное обновление: вы контролируете, когда обновляются пакеты
- Отсутствие изоляции: пакеты имеют полный доступ к системе (подходит для системных инструментов)
- Лёгкость: нет фонового демона, запускается только по вызову
- Зрелая экосистема: десятилетия разработки, чрезвычайно стабильна
Сравнение менеджеров пакетов
Ubuntu поддерживает несколько систем управления пакетами. Вот как сравниваются основные операции:
| Операция | APT | Snap | Flatpak |
|---|---|---|---|
| Поиск | apt search keyword |
snap find keyword |
flatpak search keyword |
| Установка | sudo apt install package |
sudo snap install package |
flatpak install flathub app.id |
| Список установленных | apt list --installed |
snap list |
flatpak list --app |
| Показать информацию | apt show package |
snap info package |
flatpak info app.id |
| Обновить всё | sudo apt update && sudo apt upgrade |
sudo snap refresh |
flatpak update |
| Обновить один | sudo apt install --only-upgrade pkg |
sudo snap refresh package |
flatpak update app.id |
| Удалить | sudo apt remove package |
sudo snap remove package |
flatpak uninstall app.id |
| Очистка | sudo apt autoremove |
snap remove --revision=N |
flatpak uninstall --unused |
| Репозиторий | /etc/apt/sources.list |
Snap Store (встроенный) | Добавление с flatpak remote-add |
Быстрое сравнение функций
| Функция | APT | Snap | Flatpak |
|---|---|---|---|
| Автообновление | Нет | Да | Нет |
| Изоляция | Нет | Да | Да |
| Зависимости | Системные библиотеки | Встроенные | Общие среды выполнения |
| Размер пакета | Маленький (5-50МБ) | Большой (50-500МБ) | Средний (20-200МБ) |
| Требуются права root | Да | Да | Нет (установка пользователем) |
| Скорость запуска | Быстрая | Медленнее | Быстрая |
| Лучше всего для | Системные пакеты | Универсальные приложения | Настольные приложения |
О этом руководстве
Это руководство посвящено APT (apt/apt-get/dpkg) — традиционной системе управления пакетами Ubuntu. APT необходим для управления системными пакетами, библиотеками и сервисами в Ubuntu и дистрибутивах на основе Debian.
Для других менеджеров пакетов:
- 📦 Руководство по Snap Package Manager — универсальные пакеты с автоматическими обновлениями и изоляцией
- 📦 Руководство по Flatpak Package Manager — кроссплатформенные настольные приложения с точными разрешениями
Каждый менеджер пакетов имеет свои преимущества. Используйте APT для системных пакетов и зависимостей, Snap для кроссплатформенной совместимости и автообновлений, а Flatpak для настольных приложений с точными разрешениями.
Подробное руководство по управлению пакетами APT
Понимание APT vs apt-get
APT (apt) - Современный выбор
Введён в Ubuntu 14.04, apt объединяет функции apt-get и apt-cache с улучшенным пользовательским интерфейсом:
Преимущества:
- Индикаторы прогресса и цветной вывод
- Более интуитивные команды
- Чище вывод для удобства чтения
- Объединяет функциональность нескольких инструментов
Когда использовать: Ежедневные интерактивные операции в командной строке
apt-get - Традиционный выбор
Оригинальный инструмент управления пакетами, который всё ещё широко используется:
Преимущества:
- Более стабильный API (лучше для скриптов)
- Обратная совместимость
- Предсказуемый формат вывода
- Более тонкий контроль
Когда использовать: Оболочечные скрипты, автоматизация, устаревшие системы
Совет: Для более быстрой навигации по терминалу и повышения эффективности работы ознакомьтесь с нашим шпаргалкой по сочетаниям клавиш Ubuntu, чтобы ускорить работу с пакетами.
Основные команды управления пакетами
Обновление списков пакетов
Всегда обновляйте списки пакетов перед установкой или обновлением:
# Обновить индекс пакетов
sudo apt update
# Или с apt-get
sudo apt-get update
Эта команда обновляет локальную базу данных с информацией о доступных пакетах и их версиях из настроенных репозиториев.
Установка пакетов
Базовая установка:
# Установить один пакет
sudo apt install package-name
# Установить несколько пакетов
sudo apt install package1 package2 package3
# Установить конкретную версию
sudo apt install package-name=version-number
Примеры:
# Установить веб-сервер Nginx
sudo apt install nginx
# Установить Python и pip
sudo apt install python3 python3-pip
# Установить инструменты сборки
sudo apt install build-essential
# Установить инструменты мониторинга системы
sudo apt install htop
Для специализированного мониторинга, такого как отслеживание производительности GPU на системах с картами NVIDIA, ознакомьтесь с нашим руководством по приложениям для мониторинга GPU в Linux/Ubuntu.
Установка без запросов (полезно для скриптов):
sudo apt install -y package-name
# Или
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-name
Установка из .deb файла:
# Способ 1: Использование apt (рекомендуется, обрабатывает зависимости)
sudo apt install ./package.deb
# Способ 2: Использование dpkg
sudo dpkg -i package.deb
sudo apt install -f # Исправить отсутствующие зависимости
Примечание: При работе с загруженными .deb файлами вы можете захотеть использовать файловый менеджер с хорошим контекстным меню. Ознакомьтесь с нашим сравнением файловых менеджеров для Ubuntu 24.04 (Nautilus vs Nemo vs Dolphin vs Caja), чтобы найти подходящий для вашего рабочего процесса.
Обновление пакетов
Обновление установленных пакетов:
# Обновить все пакеты (безопасно, не удаляет пакеты)
sudo apt upgrade
# Обновить конкретный пакет
sudo apt install --only-upgrade package-name
# Полное обновление (может удалять пакеты для разрешения зависимостей)
sudo apt full-upgrade
# Обновление дистрибутива (для обновлений основных версий)
sudo apt dist-upgrade
Полная последовательность обновления:
# Рекомендуемая процедура обновления
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean
Обновление версии Ubuntu:
# Для LTS до следующей LTS
sudo do-release-upgrade
# Для любого обновления версии
sudo do-release-upgrade -d
Списки пакетов
Список установленных пакетов:
# Все установленные пакеты
apt list --installed
# С фильтром grep
apt list --installed | grep package-name
# Подсчет установленных пакетов
apt list --installed | wc -l
# Использование dpkg
dpkg -l
dpkg --list
dpkg -l | grep package-name
Список обновляемых пакетов:
# Показать пакеты с доступными обновлениями
apt list --upgradable
# Детальное симулирование обновления
apt list --upgradable -a
Список всех доступных пакетов:
# Все пакеты в репозиториях
apt list
# Список из конкретного репозитория
apt list | grep "source-name"
Поиск пакетов
Поиск имен пакетов и описаний:
# Поиск с apt
apt search keyword
# Поиск без учета регистра
apt search -i keyword
# Показать только имена пакетов
apt-cache search keyword
# Поиск только имен пакетов (быстрее)
apt-cache search --names-only keyword
Примеры:
# Поиск редактора
apt search text editor
# Поиск базы данных
apt search database
# Поиск пакетов Python
apt search python | grep python3
Просмотр информации о пакетах
Детальная информация о пакете:
# Показать детали пакета
apt show package-name
# Использование apt-cache
apt-cache show package-name
# Показать зависимости пакета
apt-cache depends package-name
# Показать обратные зависимости
apt-cache rdepends package-name
# Проверить политику и версии пакета
apt-cache policy package-name
# Показать статистику пакета
apt-cache stats
Проверка установки пакета:
# Способ 1
dpkg -s package-name
# Способ 2
dpkg -l package-name
# Способ 3
apt list --installed package-name
# Способ 4 (код выхода 0, если установлен)
dpkg-query -W package-name
Удаление пакетов
Удаление пакетов:
# Удалить пакет (сохранить файлы конфигурации)
sudo apt remove package-name
# Удалить пакет и файлы конфигурации (очистка)
sudo apt purge package-name
# Удалить с зависимостями
sudo apt autoremove package-name
# Полностью удалить пакет и конфигурации
sudo apt purge package-name && sudo apt autoremove
Очистка системы:
# Удалить неиспользуемые зависимости
sudo apt autoremove
# Удалить с очисткой
sudo apt autoremove --purge
# Удалить загруженные файлы пакетов
sudo apt clean
# Удалить старые версии пакетов
sudo apt autoclean
Проверка использования диска:
# Проверить размер кэша
du -sh /var/cache/apt/archives
# Проверить общий размер пакетов
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Запрет обновления пакетов (Holds)
Запретить обновление пакетов:
# Запретить обновление пакета на текущей версии
sudo apt-mark hold package-name
# Снять запрет обновления пакета
sudo apt-mark unhold package-name
# Показать запрещенные пакеты
apt-mark showhold
# Запретить обновление нескольких пакетов
sudo apt-mark hold package1 package2 package3
Использование: Предотвратить автоматическое обновление конкретных версий программного обеспечения.
Использование dpkg - инструмент низкого уровня управления пакетами
dpkg - это базовый менеджер пакетов, который использует APT:
Основные команды dpkg:
# Установить пакет
sudo dpkg -i package.deb
# Удалить пакет
sudo dpkg -r package-name
# Полностью удалить пакет
sudo dpkg -P package-name
# Список установленных пакетов
dpkg -l
# Список файлов в пакете
dpkg -L package-name
# Найти, какой пакет владеет файлом
dpkg -S /path/to/file
# Проверить статус пакета
dpkg -s package-name
# Переконфигурировать пакет
sudo dpkg-reconfigure package-name
# Проверить целостность пакета
dpkg -V package-name
Исправление поврежденных пакетов:
# Переконфигурировать поврежденные пакеты
sudo dpkg --configure -a
# Исправить отсутствующие зависимости
sudo apt install -f
# Принудительно переустановить
sudo apt install --reinstall package-name
Управление репозиториями
Просмотр репозиториев
Проверка настроенных репозиториев:
# Просмотреть sources list
cat /etc/apt/sources.list
# Просмотреть дополнительные источники
ls /etc/apt/sources.list.d/
# Просмотреть все включенные репозитории
grep -r --include '*.list' '^deb ' /etc/apt/
Добавление репозиториев
Добавление PPA (Персональный архив пакетов):
# Добавить репозиторий PPA
sudo add-apt-repository ppa:user/ppa-name
sudo apt update
# Пример: Добавить PPA Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git
Ручное добавление репозитория:
# Добавить репозиторий в sources.list
echo "deb http://repository-url distribution component" | sudo tee -a /etc/apt/sources.list.d/custom.list
# Добавить GPG ключ
wget -qO - https://example.com/key.gpg | sudo apt-key add -
# Обновить списки пакетов
sudo apt update
Современное управление ключами (Ubuntu 22.04+):
# Загрузить и добавить ключ в keyring
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/custom.gpg
# Добавить подписанный репозиторий
echo "deb [signed-by=/etc/apt/keyrings/custom.gpg] http://repo-url dist component" | sudo tee /etc/apt/sources.list.d/custom.list
Удаление репозиториев
# Удалить PPA
sudo add-apt-repository --remove ppa:user/ppa-name
# Или удалить файл списка
sudo rm /etc/apt/sources.list.d/ppa-name.list
# Обновить
sudo apt update
Альтернативные менеджеры пакетов
Ubuntu также поддерживает Snap и Flatpak для универсальной упаковки приложений:
-
Snap: Ознакомьтесь с нашим подробным Руководством по Snap Package Manager для получения информации об установке, использовании, каналах, изоляции и устранении неполадок.
-
Flatpak: Ознакомьтесь с нашим подробным Руководством по Flatpak Package Manager для получения информации об установке, Flathub, разрешениях, средах выполнения и управлении.
Расширенное управление пакетами
Симуляция операций (сухая проба)
# Симулировать установку
apt install -s package-name
# Симулировать обновление
apt upgrade -s
# Показать, что будет установлено
apt-cache showpkg package-name
Загрузка пакетов без установки
# Загрузить только пакет
apt download package-name
# Загрузить с зависимостями
apt install --download-only package-name
# Загрузить в конкретную директорию
cd /path/to/dir
apt download package-name
Поиск файлов пакетов
# Какой пакет предоставляет файл
dpkg -S /path/to/file
# Поиск файлов в пакетах (включая не установленные)
apt-file search filename
# Сначала установить apt-file
sudo apt install apt-file
sudo apt-file update
Приоритезация пакетов
Создайте /etc/apt/preferences для управления версиями пакетов:
# Зафиксировать пакет на конкретной версии
sudo nano /etc/apt/preferences
Добавьте:
Package: package-name
Pin: version 1.2.3*
Pin-Priority: 1001
Проверка уязвимостей пакетов
# Проверить наличие обновлений безопасности
sudo apt list --upgradable | grep security
# Проверить конкретный пакет на наличие CVEs
apt-cache policy package-name
Устранение распространенных проблем
Исправление поврежденных пакетов
# Метод 1: Исправление зависимостей
sudo apt install -f
# Метод 2: Переконфигурация пакетов
sudo dpkg --configure -a
# Метод 3: Очистка и обновление
sudo apt clean
sudo apt update
sudo apt upgrade
# Метод 4: Принудительное исправление
sudo apt --fix-broken install
Исправление “заблокированной” базы данных
# Удаление файлов блокировки (только если не запущен процесс apt!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a
Проверьте запущенные процессы сначала:
ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock-frontend
Ошибка несовпадения контрольной суммы
# Очистка кэша и повторная попытка
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
Ошибки GPG/ключей
# Передобавление ключа
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID
# Или загрузка ключа
wget -qO - https://repo-url/key.gpg | sudo apt-key add -
# Современный подход (Ubuntu 22.04+)
wget -qO - https://repo-url/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg
Неудовлетворенные зависимости
# Попробуйте aptitude (лучший решатель зависимостей)
sudo apt install aptitude
sudo aptitude install package-name
# Или ручное разрешение
sudo apt install package-name package-dependency
Репозиторий не найден (404)
# Обновление до правильного репозитория
sudo nano /etc/apt/sources.list
# Замена старого имени выпуска на текущее
# Или удаление устаревшего PPA
sudo add-apt-repository --remove ppa:name/ppa
Лучшие практики
Регулярное обслуживание
Еженедельная рутина:
#!/bin/bash
# Скрипт обновления системы
echo "Обновление списков пакетов..."
sudo apt update
echo "Обновление пакетов..."
sudo apt upgrade -y
echo "Удаление ненужных пакетов..."
sudo apt autoremove -y
echo "Очистка кэша пакетов..."
sudo apt autoclean
echo "Обновление завершено!"
Обновления безопасности
Автоматические обновления для исправлений безопасности:
# Установка unattended-upgrades
sudo apt install unattended-upgrades
# Настройка
sudo dpkg-reconfigure unattended-upgrades
# Редактирование конфигурации
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Настройка сервера: Если вы управляете Ubuntu Server, правильная настройка сети важна для надежного скачивания пакетов и обновлений системы. Узнайте как изменить статический IP-адрес в Ubuntu Server для обеспечения стабильного подключения для операций управления пакетами.
Резервное копирование списка пакетов
Экспорт установленных пакетов:
# Создание резервной копии
dpkg --get-selections > ~/package-list.txt
# Или с явными установленными пакетами
apt-mark showmanual > ~/manually-installed.txt
# Восстановление на другой системе
sudo dpkg --set-selections < ~/package-list.txt
sudo apt-get dselect-upgrade
Проверка состояния системы
# Проверка на поврежденные зависимости
sudo apt check
# Проверка всех пакетов
sudo debsums -c
# Проверка системных журналов
journalctl -xe | grep -i apt
tail -f /var/log/apt/history.log
Оптимизация производительности
Быстрое скачивание пакетов
Включение параллельного скачивания:
Редактирование /etc/apt/apt.conf.d/99parallel:
echo 'Acquire::Queue-Mode "host";' | sudo tee /etc/apt/apt.conf.d/99parallel
echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel
Использование самого быстрого зеркала:
# Установка apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt update
sudo apt install apt-fast
# Использование apt-fast вместо apt
sudo apt-fast install package-name
Уменьшение размера кэша
# Ограничение кэша до 100MB
echo 'APT::Archives::MaxSize "100";' | sudo tee /etc/apt/apt.conf.d/99max-cache
Полезные скрипты управления пакетами
Обновление всех менеджеров пакетов
#!/bin/bash
# Обновление всех менеджеров пакетов
echo "=== Обновление APT ==="
sudo apt update && sudo apt upgrade -y
echo "=== Обновление Snap ==="
sudo snap refresh
echo "=== Обновление Flatpak ==="
flatpak update -y
echo "Все системы обновлены!"
Поиск крупных пакетов
# Список самых крупных установленных пакетов
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20
# Или более читаемый формат
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20 | awk '{printf "%.2f MB\t%s\n", $1/1024, $2}'
Аудит пакетов
#!/bin/bash
# Аудит системы пакетов
echo "=== Статистика системных пакетов ==="
echo "Установленные пакеты: $(dpkg -l | grep ^ii | wc -l)"
echo "Обновляемые пакеты: $(apt list --upgradable 2>/dev/null | grep -c upgradable)"
echo "Заблокированные пакеты: $(apt-mark showhold | wc -l)"
echo "Автоматически удаляемые: $(apt autoremove --dry-run | grep -Po '^\d+')"
echo "Размер кэша: $(du -sh /var/cache/apt/archives | cut -f1)"
Быстрая справочная шпаргалка
Основные команды:
# Обновление & Установка
sudo apt update && sudo apt upgrade -y
# Установка пакета
sudo apt install package-name
# Удаление пакета
sudo apt remove package-name
# Поиск пакета
apt search keyword
# Показать информацию о пакете
apt show package-name
# Список установленных
apt list --installed
# Очистка системы
sudo apt autoremove && sudo apt autoclean
# Исправление поврежденных пакетов
sudo apt install -f && sudo dpkg --configure -a
Заключение
Овладение системой управления пакетами Ubuntu является важным навыком для эффективного администрирования системы. Будь то использование современной команды apt для интерактивных сессий, apt-get для скриптов или исследование универсальных пакетов с помощью Snap и Flatpak, понимание этих инструментов поможет вам поддерживать безопасную, актуальную и хорошо организованную систему Ubuntu.
Начните с базовых команд, постепенно внедряйте продвинутые техники и всегда поддерживайте систему в актуальном состоянии. Регулярное обслуживание в сочетании с лучшими практиками обеспечивает плавный и надежный опыт работы с Ubuntu.
Совет профессионала: Всегда выполняйте sudo apt update перед установкой или обновлением пакетов, чтобы убедиться, что вы работаете с самой актуальной информацией о пакетах!
Полезные ссылки
- Официальная документация Ubuntu
- Руководство пользователя APT
- Поиск пакетов Ubuntu
- Snap Store
- Репозиторий Flathub
- Руководство администратора Debian
- Руководство по Ubuntu Server
- man страницы:
man apt,man apt-get,man dpkg