Глиф Учебники

Урок 4. apt и источники пакетов

Курс «Debian» · урок 4 из 8 · 5 минут чтения

Программы в Debian ставятся из архива Debian — огромного хранилища проверенных пакетов. Пакет — это архив с программой и сведениями о ней: версия, описание и зависимости, то есть другие пакеты, без которых она не работает. Скачивает и ставит пакеты вместе с зависимостями программа apt.

Основные команды

Список пакетов хранится на компьютере. Сначала его обновляют, потом ставят программы:

Bash
sudo apt update
sudo apt install htop

apt update скачивает свежий список пакетов из источников, apt install ставит пакет. Если вы работаете под root (после su -), sudo в начале не нужен — это верно для всех команд урока.

ЗадачаКоманда
Обновить список пакетовsudo apt update
Какие пакеты можно обновитьapt list --upgradable
Обновить установленноеsudo apt upgrade
Обновить, даже если нужно удалить пакетыsudo apt full-upgrade
Найти пакет по словуapt search редактор
Описание пакетаapt show htop
Поставитьsudo apt install htop
Удалить, оставив настройкиsudo apt remove htop
Удалить вместе с настройкамиsudo apt purge htop
Убрать ставшие ненужными зависимостиsudo apt autoremove
Что установленоapt list --installed

Разница между upgrade и full-upgrade: upgrade никогда не удаляет пакеты — если для обновления что-то нужно удалить, такой пакет остаётся на старой версии. full-upgrade удаляет, если иначе нельзя. Для обычных обновлений хватает upgrade, full-upgrade нужен при переходе на новый выпуск.

Пример: для новой версии Б 3.0 нужно удалить пакет В $ sudo apt upgrade А 1.0 → 1.1 обновлён Б 2.0 не обновлён В 1.0 не тронут никогда ничего не удаляет $ sudo apt full-upgrade А 1.0 → 1.1 обновлён Б 2.0 → 3.0 обновлён В 1.0 удалён удаляет, если иначе нельзя
Если новой версии пакета Б нужно удалить пакет В, apt upgrade оставляет Б на старой версии, а apt full-upgrade обновляет Б и удаляет В.

Рядом с apt есть apt-get — старая команда для того же. Её ответы не меняются от версии к версии, поэтому в скриптах пишут apt-get, а в терминале удобнее apt.

Откуда apt берёт пакеты

Список источников — в файле /etc/apt/sources.list и в файлах папки /etc/apt/sources.list.d/. Установщик Debian 12 и 13 записывает источники в /etc/apt/sources.list, по строке на источник. Посмотреть:

Bash
cat /etc/apt/sources.list

У Debian 13, установленного с зеркала, там примерно такие строки:

Текст
deb http://deb.debian.org/debian/ trixie main non-free-firmware
deb http://security.debian.org/debian-security trixie-security main non-free-firmware
deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware

Каждая строка состоит из четырёх частей:

  1. deb — источник готовых пакетов (deb-src — исходного кода; для установки программ он не нужен).
  2. Адрес зеркала: deb.debian.org — основной архив, security.debian.org — обновления безопасности.
  3. Набор пакетов — кодовое имя выпуска с добавкой.
  4. Разделы архива: main, contrib, non-free, non-free-firmware.
/etc/apt/sources.list deb http://deb.debian.org/debian/ trixie main non-free-firmware 1 2 3 4 1 Тип источника deb — готовые пакеты 2 Адрес зеркала здесь — основной архив Debian 3 Набор пакетов кодовое имя выпуска и добавка 4 Разделы архива какие разделы брать из набора
Строка источника делится на четыре части: тип deb, адрес зеркала, набор пакетов trixie и разделы архива main и non-free-firmware.

Наборы пакетов выпуска:

Для Debian 12 то же самое — с bookworm вместо trixie.

deb.debian.org основной архив trixie сам выпуск; меняется с 13.1, 13.2… trixie-updates срочные исправления до корректирующего выпуска trixie-backports новые версии программ, не подключён security.debian.org trixie-security обновления безопасности — сразу, как готовы Ваш Debian 13 apt update берёт списки трёх наборов
apt в Debian 13 берёт пакеты из наборов trixie и trixie-updates с deb.debian.org и trixie-security с security.debian.org, а trixie-backports не подключён.

Разделы: что добавить

По умолчанию подключены main и non-free-firmware. Если нужная программа лежит в contrib или non-free (так бывает, например, с драйверами некоторых видеокарт или Wi‑Fi адаптеров), откройте файл источников (sudo nano /etc/apt/sources.list) и допишите эти слова в каждую строку после main:

Текст
deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware

В файле нового формата .sources (о нём — следующий раздел) слова дописывают в строку Components:. После любой правки источников — sudo apt update.

Новый формат: debian.sources

С Debian 13 рекомендуется другой формат — файлы с окончанием .sources в папке /etc/apt/sources.list.d/. Те же источники в нём выглядят так (файл /etc/apt/sources.list.d/debian.sources):

Текст
Types: deb
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Блоки разделяются пустой строкой; Signed-By — ключ, которым проверяется подпись архива. Файл в таком формате уже стоит, например, в образах Debian для Docker.

apt в Debian 13 при обновлении списка может напоминать об этом строкой:

Текст
Notice: Some sources can be modernized. Run 'apt modernize-sources' to do so.

Команда apt modernize-sources сама переведёт старые файлы в новый формат, а старые сохранит рядом с окончанием .bak:

Bash
sudo apt modernize-sources

Переходить не обязательно: старый формат в Debian 13 работает. Главное — не держать один и тот же источник в двух файлах: apt будет предупреждать, что цель «настроена несколько раз» (is configured multiple times).

Если при установке не было сети

Если Debian ставили без интернета, в источниках может не оказаться зеркала — и установка программ отвечает Невозможно найти пакет (Unable to locate package). Откройте файл:

Bash
sudo nano /etc/apt/sources.list

Допишите три строки из раздела Откуда apt берёт пакеты (для Debian 12 — с bookworm), сохраните (Ctrl+O, Enter, выход — Ctrl+X) и выполните sudo apt update.

Какая версия придёт

apt policy показывает установленную версию пакета, ту, что поставится (Candidate), и из какого источника:

Bash
apt policy openssh-server

Пакет из файла .deb

Пакет, скачанный с сайта разработчика программы, ставится так — с ./ перед именем файла, чтобы apt понял, что это файл, а не имя пакета:

Bash
sudo apt install ./program.deb

apt сам доставит зависимости из архива. Команда dpkg -i тоже ставит файл, но зависимостей не ищет.

Ставьте пакеты и подключайте сторонние источники только с официальных сайтов разработчиков. Не добавляйте источники Ubuntu (в том числе PPA) и других выпусков Debian: смешанная система ломается при обновлении, и восстановить её бывает сложнее, чем переустановить.

Коротко

Проверьте себя

1. Что делает sudo apt update?
2. Откуда приходят обновления безопасности Debian 13?
3. Чем apt full-upgrade отличается от apt upgrade?
4. Как поставить скачанный файл program.deb вместе с зависимостями?