Подробный гайд по APT: установка, обновление, удаление, работа, репозитории и очистка
Гайд по командам APT для управления пакетами в Debian/Ubuntu и производных. Я разобью его на блоки: обновление, установка, удаление, поиск, версии, зависимости, очистка, репозитории, диагностика и автоматизация.
Команды, которые меняют систему, обычно требуют sudo. Команды просмотра можно выполнять без sudo.
1. Что такое APT и какие утилиты относятся к нему
APT — это не одна команда, а набор инструментов вокруг пакетной системы Debian/Ubuntu.
Основные программы:
| Утилита | Назначение |
|---|---|
apt |
Удобный пользовательский интерфейс: установка, удаление, обновление, поиск |
apt-get |
Более низкоуровневая команда, хорошо подходит для скриптов и автоматизации |
apt-cache |
Поиск и просмотр информации о пакетах из кэша APT |
apt-mark |
Управление статусом пакета: авто/ручная установка, удержание версии |
apt-config |
Просмотр конфигурации APT |
dpkg |
Низкоуровневый менеджер .deb-пакетов |
add-apt-repository |
Вспомогательная команда для добавления репозиториев, особенно PPA в Ubuntu |
2. Быстрая шпаргалка
| Действие | Команда |
|---|---|
| Обновить список пакетов | sudo apt update |
| Обновить установленные пакеты | sudo apt upgrade |
| Полное обновление, включая зависимости | sudo apt full-upgrade |
| Установить пакет | sudo apt install package |
| Переустановить пакет | sudo apt reinstall package |
| Удалить пакет без конфигов | sudo apt remove package |
| Полностью удалить пакет с конфигами | sudo apt purge package |
| Удалить ненужные зависимости | sudo apt autoremove |
| Удалить зависимости и их конфиги | sudo apt autoremove --purge |
| Найти пакет | apt search keyword |
| Информация о пакете | apt show package |
| Список установленных пакетов | apt list --installed |
| Список доступных обновлений | apt list --upgradable |
Очистить кэш загруженных .deb |
sudo apt clean |
| Исправить сломанные зависимости | sudo apt --fix-broken install |
3. Обновление индексов пакетов
3.1. Базовое обновление индексов
Перед установкой или обновлением пакетов обычно выполняют:
sudo apt update
Эта команда не обновляет сами программы. Она скачивает свежие списки пакетов и метаданные из репозиториев.
3.2. Обновление с принятием изменений Release-информации
Иногда при обновлении дистрибутива или изменении репозитория APT может написать, что изменилась информация о релизе.
Тогда можно использовать:
sudo apt-get update --allow-releaseinfo-change
Используйте осознанно, особенно если меняете ветку дистрибутива, например stable, testing, unstable.
3.3. Посмотреть, какие пакеты можно обновить
apt list --upgradable
Более подробный вариант:
apt list --upgradable -a
3.4. Симуляция обновления
Перед реальным обновлением полезно посмотреть, что произойдёт:
apt upgrade -s
или:
apt-get upgrade --simulate
Флаг -s означает simulation: система ничего не меняет, только показывает план действий.
4. Обновление установленных пакетов
4.1. Обычное обновление
sudo apt upgrade
Обновляет установленные пакеты до новых версий, но обычно старается не удалять пакеты и не устанавливать новые без необходимости.
4.2. Полное обновление
sudo apt full-upgrade
или в стиле apt-get:
sudo apt-get dist-upgrade
Эта команда может:
- обновлять пакеты;
- устанавливать новые зависимости;
- удалять конфликтующие или устаревшие пакеты.
Используйте внимательно, особенно на серверах.
4.3. Обновление конкретного пакета
sudo apt install --only-upgrade package
Пример:
sudo apt install --only-upgrade nginx
Если пакет не установлен, команда не будет его устанавливать. Она обновит его только если он уже есть.
4.4. Обновление с возможностью установки новых пакетов
Для apt-get:
sudo apt-get upgrade --with-new-pkgs
Полезно, если обновление установленного пакета требует новых зависимостей.
5. Установка пакетов
5.1. Простая установка
sudo apt install package
Пример:
sudo apt install htop
Установить несколько пакетов сразу:
sudo apt install curl wget git vim
5.2. Установка без рекомендованных пакетов
APT часто ставит не только зависимости, но и рекомендованные пакеты.
Чтобы этого избежать:
sudo apt install --no-install-recommends package
Пример:
sudo apt install --no-install-recommends nginx
Полезно для минимальных серверов, контейнеров и экономии места.
5.3. Установка с предлагаемыми пакетами
sudo apt install --install-suggests package
Обычно не нужно, потому что предложенные пакеты часто расширяют функциональность, но не являются обязательными.
5.4. Переустановка пакета
sudo apt reinstall package
Пример:
sudo apt reinstall curl
В стиле apt-get:
sudo apt-get --reinstall install curl
Полезно, если файлы пакета повреждены или случайно удалены.
5.5. Установка конкретной версии пакета
Сначала посмотрите доступные версии:
apt-cache madison package
Пример:
apt-cache madison nginx
Затем установите нужную:
sudo apt install package=version
Пример:
sudo apt install nginx=1.24.0-1
Если нужно понижение версии, может потребоваться:
sudo apt install --allow-downgrades package=version
5.6. Установка пакета из определённого релиза или ветки
Например, из stable, testing, unstable или из конкретного репозитория:
sudo apt install -t stable package
Пример:
sudo apt install -t bookworm package
Или:
sudo apt install package/testing
Будьте осторожны: такая установка может потянуть много зависимостей из другой ветки.
6. Удаление пакетов
6.1. Удаление пакета без конфигурационных файлов
sudo apt remove package
Пример:
sudo apt remove nginx
Пакет удаляется, но пользовательские и системные конфигурации обычно остаются.
6.2. Полное удаление пакета с конфигами
sudo apt purge package
Пример:
sudo apt purge nginx
Внимание:
purge может удалить конфигурационные файлы пакета. Перед этим полезно сделать резервную копию.
6.3. Удаление ненужных зависимостей
Когда вы удаляете программу, зависимости, которые устанавливались автоматически, могут остаться.
sudo apt autoremove
Удалить ненужные зависимости вместе с их конфигами:
sudo apt autoremove --purge
6.4. Полная чистка пакета и зависимостей
Часто используют такую последовательность:
sudo apt purge package
sudo apt autoremove --purge
Пример:
sudo apt purge nginx
sudo apt autoremove --purge
7. Поиск пакетов и просмотр информации
7.1. Поиск по ключевому слову
apt search keyword
Пример:
apt search nginx
Поиск по регулярному выражению:
apt search '^nginx'
7.2. Поиск только по именам пакетов
apt-cache search --names-only keyword
Пример:
apt-cache search --names-only nginx
7.3. Просмотр информации о пакете
apt show package
Пример:
apt show curl
Более технический вывод:
apt-cache show package
7.4. Посмотреть зависимости пакета
apt-cache depends package
Пример:
apt-cache depends nginx
Обратные зависимости, то есть какие пакеты зависят от этого:
apt-cache rdepends package
Пример:
apt-cache rdepends libssl3
7.5. Посмотреть доступные версии пакета
apt-cache madison package
Пример:
apt-cache madison firefox
7.6. Политика установки версии
Команда показывает, какая версия будет установлена и почему:
apt-cache policy package
Пример:
apt-cache policy nginx
В новых версиях APT также может работать:
apt policy package
7.7. Список пакетов
Все установленные пакеты:
apt list --installed
По шаблону:
apt list --installed 'nginx*'
Доступные обновления:
apt list --upgradable
Все версии пакета:
apt list --all-versions package
Пример:
apt list --all-versions curl
7.8. Changelog пакета
Посмотреть журнал изменений пакета:
apt changelog package
Пример:
apt changelog curl
Команда обычно скачивает changelog из репозитория и открывает его в pager.
8. Управление статусом установки: авто/ручная установка
APT различает пакеты, установленные вручную, и пакеты, установленные автоматически как зависимости. Это важно для autoremove.
8.1. Пометить пакет как установленный вручную
sudo apt-mark manual package
Пример:
sudo apt-mark manual linux-image-6.1.0-18-amd64
Полезно, если вы боитесь, что autoremove удалит нужный пакет.
8.2. Пометить пакет как установленный автоматически
sudo apt-mark auto package
Пример:
sudo apt-mark auto libexample1
После этого пакет может быть удалён через autoremove, если больше не нужен.
8.3. Посмотреть пакеты, установленные вручную
apt-mark showmanual
8.4. Посмотреть автоматически установленные пакеты
apt-mark showauto
9. Удержание версии пакета
9.1. Запретить обновление пакета
sudo apt-mark hold package
Пример:
sudo apt-mark hold nginx
После этого apt upgrade не будет обновлять пакет.
9.2. Снять удержание
sudo apt-mark unhold package
9.3. Посмотреть удерживаемые пакеты
apt-mark showhold
10. Работа с версиями и pinning
10.1. Посмотреть приоритеты версий
apt-cache policy package
Пример:
apt-cache policy nginx
Вывод покажет:
- установленную версию;
- кандидата на установку;
- источники версий;
- приоритеты.
10.2. Что означают приоритеты
Примерное значение приоритетов:
| Приоритет | Смысл |
|---|---|
100 |
Обычно установленный пакет |
500 |
Стандартный приоритет репозитория |
990 |
Высокий приоритет |
1001 и выше |
Разрешает понижение версии |
-1 |
Запрещает установку версии |
10.3. Файлы предпочтений APT
Можно создать файл в:
/etc/apt/preferences.d/
Пример файла:
sudo nano /etc/apt/preferences.d/nginx
Содержимое:
Package: nginx
Pin: version 1.24.0-1
Pin-Priority: 1001
Это заставит APT предпочитать указанную версию и при необходимости разрешит downgrade.
Пример запрета пакета из определённого репозитория:
Package: *
Pin: release o=SomeUntrustedRepo
Pin-Priority: -10
После изменений обычно выполняют:
sudo apt update
11. Исправление ошибок и зависимости
11.1. Проверка целостности кэша и зависимостей
sudo apt-get check
Если вывод пустой и ошибок нет — всё нормально.
12.2. Исправление сломанных зависимостей
sudo apt --fix-broken install
или:
sudo apt-get -f install
Эту команду часто используют после неудачной установки .deb-пакета.
11.3. Восстановление состояния dpkg
Если установка пакета прервалась:
sudo dpkg --configure -a
Затем:
sudo apt --fix-broken install
11.4. Проверка состояния пакетов через dpkg
sudo dpkg --audit
Полезно при подозрении на повреждённые или наполовину настроенные пакеты.
12. Очистка кэша и освобождение места
12.1. Удалить все загруженные .deb-файлы
APT хранит скачанные пакеты в:
/var/cache/apt/archives/
Очистить полностью:
sudo apt clean
12.2. Удалить только устаревшие .deb-файлы
sudo apt autoclean
Эта команда удаляет только те пакеты, которые уже недоступны в текущих репозиториях.
12.3. Посмотреть, сколько места занимает кэш APT
du -sh /var/cache/apt/archives
12.4. Удалить конфиги удалённых, но не вычищенных пакетов
Иногда пакет удалён через remove, но его конфиги остались. В dpkg такие пакеты могут иметь статус rc.
Посмотреть список:
dpkg -l | awk '/^rc/{print $2}'
Удалить их конфиги:
dpkg -l | awk '/^rc/{print $2}' | xargs -r sudo apt-get purge -y
13. Загрузка пакетов без установки
13.1. Скачать .deb-файл пакета
apt download package
Пример:
apt download curl
Файл скачается в текущую директорию.
13.2. Скачать пакет через apt-get
apt-get download package
13.3. Скачать зависимости без установки
Можно использовать:
apt-get install --download-only package
Пример:
apt-get install --download-only nginx
13.4. Показать URL-адреса пакетов
apt-get install --print-uris package
Пример:
apt-get install --print-uris curl
Полезно для офлайн-загрузки или анализа источников.
14. Установка локальных .deb-пакетов
14.1. Установка .deb через dpkg
sudo dpkg -i package.deb
Пример:
sudo dpkg -i google-chrome-stable_current_amd64.deb
14.2. Если не хватает зависимостей
После dpkg -i может появиться ошибка зависимостей.
Тогда выполните:
sudo apt --fix-broken install
или:
sudo apt-get -f install
14.3. Просмотр содержимого .deb
Посмотреть информацию:
dpkg-deb --info package.deb
Посмотреть файлы внутри:
dpkg-deb --contents package.deb
15. Исходные коды и зависимости для сборки
15.1. Включить исходные репозитории
В файлах источников должны быть строки deb-src. Например, в Debian/Ubuntu они могут быть закомментированы.
После включения:
sudo apt update
15.2. Скачать исходный код пакета
apt-get source package
Пример:
apt-get source curl
15.3. Установить зависимости для сборки пакета
sudo apt-get build-dep package
Пример:
sudo apt-get build-dep curl
16. Работа с установленными файлами пакетов
16.1. Список установленных пакетов через dpkg
dpkg -l
Поиск пакета:
dpkg -l | grep nginx
16.2. Информация об установленном пакете
dpkg -s package
Пример:
dpkg -s curl
16.3. Список файлов, установленных пакетом
dpkg -L package
Пример:
dpkg -L curl
16.4. Узнать, какому пакету принадлежит файл
dpkg -S /path/to/file
Пример:
dpkg -S /usr/bin/curl
16.5. Поиск файла в ещё не установленных пакетах
Для этого удобно использовать apt-file.
Установка:
sudo apt install apt-file
sudo apt-file update
Поиск:
apt-file search filename
Пример:
apt-file search libexample.so
17. Управление репозиториями
17.1. Основные файлы источников
Главный файл:
/etc/apt/sources.list
Дополнительные источники:
/etc/apt/sources.list.d/
Там могут быть файлы:
*.list— старый формат;*.sources— новый формат DEB822.
17.2. Обновить репозитории после изменения источников
sudo apt update
17.3. Добавление PPA в Ubuntu
sudo add-apt-repository ppa:user/ppa-name
Пример:
sudo add-apt-repository ppa:graphics-drivers/ppa
Удаление PPA:
sudo add-apt-repository --remove ppa:user/ppa-name
17.4. Добавление компонента репозитория в Ubuntu
Например:
sudo add-apt-repository universe
sudo add-apt-repository multiverse
17.5. Современный подход к ключам репозиториев
Раньше часто использовали apt-key, но сейчас этот способ считается устаревшим.
Лучше хранить ключи отдельно, например:
/etc/apt/keyrings/
Пример добавления ключа:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://example.com/repo.gpg | sudo tee /etc/apt/keyrings/example.gpg > /dev/null
sudo chmod 644 /etc/apt/keyrings/example.gpg
Затем в источнике указывают:
signed-by=/etc/apt/keyrings/example.gpg
Пример современного .sources-файла:
Types: deb
URIs: https://repo.example.com/debian
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/example.gpg
18. История операций APT и dpkg
18.1. История APT
less /var/log/apt/history.log
18.2. История dpkg
less /var/log/dpkg.log
18.3. Посмотреть недавние установки и удаления
grep -E 'install|upgrade|remove|purge' /var/log/apt/history.log | less
19. Полезные флаги и режимы
19.1. Симуляция
apt install -s package
или:
apt-get install --simulate package
19.2. Автоматическое подтверждение
sudo apt install -y package
Используйте осторожно, особенно в скриптах.
19.3. Не выполнять действие автоматически
apt-get install --assume-no package
19.4. Тихий режим
sudo apt-get -q update
19.5. Не устанавливать рекомендованные пакеты
sudo apt-get install --no-install-recommends package
19.6. Только обновить, не устанавливать новый пакет
sudo apt-get install --only-upgrade package
19.7. Разрешить понижение версии
sudo apt-get install --allow-downgrades package=version
19.8. Разрешить изменение удерживаемых пакетов
sudo apt-get install --allow-change-held-packages package
20. Автоматизация и скрипты
Для скриптов лучше использовать apt-get, а не apt, потому что вывод и поведение apt могут меняться между версиями.
Пример безопасного обновления в скрипте:
sudo apt-get update -q
sudo DEBIAN_FRONTEND=noninteractive apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
upgrade
Для полного обновления:
sudo apt-get update -q
sudo DEBIAN_FRONTEND=noninteractive apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
dist-upgrade
Пояснение:
DEBIAN_FRONTEND=noninteractive— не задавать вопросы;--force-confdef— использовать действие по умолчанию для конфигов;--force-confold— сохранять старые конфигурационные файлы при конфликте.
20.1. Автоматические обновления безопасности
В Debian/Ubuntu можно использовать unattended-upgrades.
Установка:
sudo apt install unattended-upgrades
Настройка:
sudo dpkg-reconfigure -plow unattended-upgrades
21. Частые проблемы и решения
21.1. E: Unable to locate package ...
Возможные причины:
- вы не выполнили
apt update; - опечатка в имени пакета;
- пакет отсутствует в подключённых репозиториях;
- репозиторий не подходит для вашей версии дистрибутива.
Решение:
sudo apt update
apt search package
apt-cache policy package
21.2. Сломанные зависимости
sudo dpkg --configure -a
sudo apt --fix-broken install
Если не помогает:
sudo apt-get check
sudo apt-get -f install
21.3. Пакет удержан и не обновляется
Проверить:
apt-mark showhold
Снять:
sudo apt-mark unhold package
21.4. Блокировка APT/dpkg
Обычно блокировка означает, что другой процесс уже работает с пакетами.
Проверить процессы:
ps aux | grep -E 'apt|dpkg'
Посмотреть, кто держит блокировку:
sudo lsof /var/lib/dpkg/lock-frontend
Удалять lock-файлы вручную стоит только если вы уверены, что ни один процесс apt или dpkg не работает.
21.5. Ошибка NO_PUBKEY
Не добавляйте ключи через устаревший apt-key, если можно этого избежать.
Правильный современный путь:
- Скачать ключ в
/etc/apt/keyrings/. - Указать его через
signed-byв источнике.
3. Выполнить:
sudo apt update
21.6. Не хватает места в /var/cache/apt/archives
Очистить кэш:
sudo apt clean
Проверить место:
df -h
du -sh /var/cache/apt/archives
21.7. autoremove хочет удалить что-то важное
Сначала посмотрите, что будет удалено:
sudo apt autoremove -s
Если пакет нужен, пометьте его как установленный вручную:
sudo apt-mark manual package
22. Практические сценарии
22.1. Безопасное регулярное обновление
sudo apt update
apt list --upgradable
sudo apt upgrade -s
sudo apt upgrade
22.2. Установка минимального набора пакетов
sudo apt update
sudo apt install --no-install-recommends curl ca-certificates wget
sudo apt autoremove --purge
sudo apt clean
22.3. Полное удаление программы
sudo apt purge package
sudo apt autoremove --purge
sudo apt clean
22.4. Установить конкретную версию и зафиксировать её
apt-cache madison package
sudo apt install package=version
sudo apt-mark hold package
22.5. Исправить систему после неудачной установки .deb
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt update
sudo apt upgrade
23. Дополнительные полезные утилиты
23.1. aptitude
aptitude — альтернативный интерфейс к APT. Он может быть полезен для сложных конфликтов зависимостей.
Установка:
sudo apt install aptitude
Примеры:
aptitude search nginx
aptitude show nginx
sudo aptitude install nginx
sudo aptitude safe-upgrade
sudo aptitude full-upgrade
Особенно полезны команды:
aptitude why package
aptitude why-not package
Они объясняют, почему пакет установлен или почему нельзя установить нужную версию.
23.2. apt-file
Позволяет искать, в каком пакете находится файл.
sudo apt install apt-file
sudo apt-file update
apt-file search libexample.so
23.3. dpkg-reconfigure
Позволяет заново настроить уже установленный пакет.
sudo dpkg-reconfigure package
Пример:
sudo dpkg-reconfigure tzdata
24. Что когда лучше использовать
| Ситуация | Лучший вариант |
|---|---|
| Обычная установка | apt install |
| Обычное удаление | apt remove или apt purge |
| Обновление списков | apt update |
| Обычное обновление | apt upgrade |
| Обновление с возможной заменой пакетов | apt full-upgrade |
| Скрипты | apt-get |
| Поиск пакета | apt search, apt-cache search |
| Информация о версии | apt-cache policy, apt-cache madison |
| Фиксация версии | apt-mark hold, /etc/apt/preferences.d/ |
| Ремонт зависимостей | apt --fix-broken install, dpkg --configure -a |
Локальный .deb |
dpkg -i, затем apt --fix-broken install |
| Очистка места | apt clean, apt autoremove --purge |
25. Минимальный набор команд, который стоит запомнить
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt install package
sudo apt remove package
sudo apt purge package
sudo apt autoremove --purge
apt search package
apt show package
apt list --installed
apt list --upgradable
sudo apt --fix-broken install
sudo apt clean
sudo apt-mark hold package
sudo apt-mark unhold package
apt-cache policy package
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.