Урок 4. apt и источники пакетов
Программы в Debian ставятся из архива Debian — огромного хранилища проверенных пакетов. Пакет — это архив с программой и сведениями о ней: версия, описание и зависимости, то есть другие пакеты, без которых она не работает. Скачивает и ставит пакеты вместе с зависимостями программа apt.
Основные команды
Список пакетов хранится на компьютере. Сначала его обновляют, потом ставят программы:
sudo apt update
sudo apt install htopapt 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 нужен при переходе на новый выпуск.
Рядом с apt есть apt-get — старая команда для того же. Её ответы не меняются от версии к версии, поэтому в скриптах пишут apt-get, а в терминале удобнее apt.
Откуда apt берёт пакеты
Список источников — в файле /etc/apt/sources.list и в файлах папки /etc/apt/sources.list.d/. Установщик Debian 12 и 13 записывает источники в /etc/apt/sources.list, по строке на источник. Посмотреть:
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Каждая строка состоит из четырёх частей:
deb— источник готовых пакетов (deb-src— исходного кода; для установки программ он не нужен).- Адрес зеркала:
deb.debian.org— основной архив,security.debian.org— обновления безопасности. - Набор пакетов — кодовое имя выпуска с добавкой.
- Разделы архива:
main,contrib,non-free,non-free-firmware.
Наборы пакетов выпуска:
trixie— сам выпуск; меняется с каждым корректирующим выпуском (13.1, 13.2…);trixie-security— обновления безопасности, приходят сразу, как только готовы;trixie-updates— срочные исправления, которые не ждут корректирующего выпуска;trixie-backports— новые версии некоторых программ, собранные для этого выпуска; по умолчанию не подключён, о нём — справка Пакет из backports.
Для Debian 12 то же самое — с bookworm вместо trixie.
Разделы: что добавить
По умолчанию подключены 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:
sudo apt modernize-sourcesПереходить не обязательно: старый формат в Debian 13 работает. Главное — не держать один и тот же источник в двух файлах: apt будет предупреждать, что цель «настроена несколько раз» (is configured multiple times).
Если при установке не было сети
Если Debian ставили без интернета, в источниках может не оказаться зеркала — и установка программ отвечает Невозможно найти пакет (Unable to locate package). Откройте файл:
sudo nano /etc/apt/sources.listДопишите три строки из раздела Откуда apt берёт пакеты (для Debian 12 — с bookworm), сохраните (Ctrl+O, Enter, выход — Ctrl+X) и выполните sudo apt update.
Какая версия придёт
apt policy показывает установленную версию пакета, ту, что поставится (Candidate), и из какого источника:
apt policy openssh-serverПакет из файла .deb
Пакет, скачанный с сайта разработчика программы, ставится так — с ./ перед именем файла, чтобы apt понял, что это файл, а не имя пакета:
sudo apt install ./program.debapt сам доставит зависимости из архива. Команда dpkg -i тоже ставит файл, но зависимостей не ищет.
Ставьте пакеты и подключайте сторонние источники только с официальных сайтов разработчиков. Не добавляйте источники Ubuntu (в том числе PPA) и других выпусков Debian: смешанная система ломается при обновлении, и восстановить её бывает сложнее, чем переустановить.
Коротко
apt update— обновить список,apt upgrade— обновить пакеты,apt installиapt remove— поставить и удалить.- Источники —
/etc/apt/sources.listи файлы в/etc/apt/sources.list.d/. - В строке:
deb, адрес, набор (trixie,trixie-security,trixie-updates) и разделы архива. - С Debian 13 рекомендован формат
.sources; перевод —sudo apt modernize-sources. - Файл
.debставят командойsudo apt install ./файл.deb.