Управление пакетами Ubuntu: шпаргалка по APT и dpkg

Основные команды APT и dpkg для пакетов Ubuntu

Система управления пакетами Ubuntu является основой установки и обслуживания программного обеспечения, что делает её обязательной для любого пользователя Linux или системного администратора.

tetris Это изображение было создано с помощью 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.

Для других менеджеров пакетов:

Каждый менеджер пакетов имеет свои преимущества. Используйте 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 перед установкой или обновлением пакетов, чтобы убедиться, что вы работаете с самой актуальной информацией о пакетах!

Полезные ссылки

Связанные статьи на этом сайте