Skip to content

Latest commit

 

History

History
395 lines (287 loc) · 16.7 KB

08-packages.md

File metadata and controls

395 lines (287 loc) · 16.7 KB

Этап 7. Управление пакетами (apt) и репозитории

Что такое пакеты

В Windows, чтобы установить программу, вы обычно заходите на сайт разработчика, скачиваете .exe-файл и запускаете установщик. В Linux всё устроено иначе.

Пакет — это архив, в котором лежат файлы программы, её зависимости и инструкции по установке. Пакеты хранятся в репозиториях — централизованных хранилищах, похожих на магазин приложений. Чтобы установить программу, вы не ищете её по интернету, а запрашиваете из репозитория одной командой.

Для управления пакетами в Debian используется система APT (Advanced Package Tool). Это набор утилит, которые:

  • скачивают пакеты из репозиториев;
  • автоматически устанавливают зависимости — другие пакеты, необходимые для работы программы;
  • обновляют установленные программы;
  • удаляют ненужное.

Привязка к проекту. В следующих главах мы будем устанавливать nginx, PHP-FPM и MariaDB (базу данных для WordPress) — всё через apt. Умение работать с пакетами — ключевой навык администратора.

Что такое зависимости

Программы редко работают сами по себе. Например, для PHP-FPM нужны библиотеки обработки XML, работы с базами данных, шифрования и другие. Все они оформлены как отдельные пакеты.

Когда вы устанавливаете программу через apt, менеджер пакетов автоматически определяет, какие зависимости нужны, скачивает и устанавливает их. Вам не нужно разбираться в этом вручную.

Репозитории

Что это такое

Репозиторий — это сервер (или набор серверов), где хранятся пакеты. Debian поддерживает десятки тысяч пакетов, и все они доступны из официальных репозиториев.

Список репозиториев, которые использует ваша система, хранится в файле /etc/apt/sources.list и в каталоге /etc/apt/sources.list.d/.

Посмотрим содержимое:

cat /etc/apt/sources.list

Вы увидите строки примерно такого вида:

deb http://deb.debian.org/debian trixie main contrib non-free-firmware
deb http://deb.debian.org/debian trixie-updates main contrib non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free-firmware

Разберём структуру строки:

deb http://deb.debian.org/debian trixie main contrib non-free-firmware

Где:

Элемент Что означает
deb Тип (бинарные пакеты, не исходники)
http://deb.../debian URL-адрес сервера репозитория
trixie Кодовое имя версии ОС (Debian 13)
main Секция: свободное ПО (основная)
contrib Секция: зависит от несвободного ПО
non-free-firmware Секция: проприетарные драйверы и прошивки

Секции репозитория

Секция Описание
main Полностью свободное ПО, поддерживается командой Debian
contrib Свободное ПО, но зависит от несвободных компонентов
non-free Несвободное ПО (проприетарные драйверы и т.п.)
non-free-firmware Прошивки устройств (Wi-Fi, видеокарты и др.)

Для большинства задач достаточно секции main. Всё, что мы будем устанавливать в этом курсе (nginx, PHP, MariaDB), находится в main.

Обновление списка пакетов

После добавления или изменения репозиториев (и при первом входе на свежую систему) нужно обновить локальный список доступных пакетов:

sudo apt update

Эта команда не устанавливает и не обновляет программы — она лишь загружает свежий каталог пакетов с серверов репозиториев. Считайте это обновлением оглавления в магазине приложений.

Что такое sudo? Команда sudo позволяет выполнить действие от имени суперпользователя (root). Управление пакетами — системная операция, и для неё нужны права администратора. Подробно sudo и управление пользователями мы разберём в следующей главе (08). Пока просто добавляйте sudo перед командами apt.

Поиск и информация о пакетах

apt search — поиск по имени и описанию

apt search nginx

Команда выведет список пакетов, в имени или описании которых встречается слово «nginx». Список может быть длинным — используйте конвейер с less для постраничного просмотра:

apt search nginx | less

Можно уточнить поиск, комбинируя с grep:

apt search nginx | grep ^nginx

Символ ^ (начало строки) из регулярных выражений (глава 05) отфильтрует только строки, начинающиеся с «nginx» — то есть имена пакетов, а не описания.

apt show — подробная информация

apt show nginx
Package: nginx
Version: 1.26.0-2
Priority: optional
Section: httpd
Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@alioth-lists.debian.net>
Installed-Size: 236 kB
Depends: nginx-core (<< 1.26.0-2.1~) | nginx-full (<< 1.26.0-2.1~) | ...
...
Description: small, powerful, scalable web/proxy server

Здесь видно версию, размер, зависимости и описание пакета.

dpkg -l — список установленных пакетов

dpkg -l

Эта команда покажет все установленные пакеты. Их обычно сотни, поэтому используйте grep для фильтрации:

dpkg -l | grep nano
ii  nano  8.3-1  amd64  small, friendly text editor inspired by Pstretch

Статус ii в начале означает, что пакет установлен и настроен.

Проверка, установлен ли пакет

Быстрый способ проверить, установлен ли конкретный пакет:

dpkg -l nginx 2>/dev/null | grep ^ii

Если вывод пустой — пакет не установлен. Если строка с ii появилась — установлен.

Установка пакетов

apt install

sudo apt install <имя_пакета>

apt покажет, какие пакеты будут установлены (включая зависимости), сколько места потребуется, и попросит подтверждение:

sudo apt install tree
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение сведений о состоянии… Готово
Будут установлены следующие НОВЫЕ пакеты:
  tree
0 обновлено, 1 установлено новых, 0 для удаления и 12 не обновлено.
Необходимо скачать 49,2 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 116 kB.
Хотите продолжить? [Д/н]

Нажмите Y (или Д) и Enter для подтверждения. Если хотите пропустить вопрос и сразу согласиться, используйте флаг -y:

sudo apt install -y tree

Установка нескольких пакетов

sudo apt install nginx php-fpm mariadb-server

Все три пакета (и их зависимости) будут установлены за одну операцию.

Обновление пакетов

Обновление списка + обновление пакетов

Типичная последовательность для обновления системы:

# Шаг 1: обновить каталог пакетов
sudo apt update

# Шаг 2: обновить все установленные пакеты
sudo apt upgrade

apt upgrade обновляет все пакеты, для которых доступна новая версия. Перед обновлением apt покажет список изменений и попросит подтверждение.

apt upgrade vs apt full-upgrade

Команда Поведение
apt upgrade Обновляет пакеты, не удаляя и не добавляя новых
apt full-upgrade Обновляет пакеты, может удалить ненужные или добавить новые зависимости

Для обычного обновления используйте apt upgrade. Команда apt full-upgrade нужна при переходе между версиями дистрибутива (например, с Debian 12 на Debian 13) — в повседневной работе она требуется редко.

Удаление пакетов

apt remove — удаление программы

sudo apt remove tree

Пакет будет удалён, но его конфигурационные файлы останутся на диске. Это удобно, если вы планируете установить программу заново — настройки сохранятся.

apt purge — полное удаление

sudo apt purge tree

Удаляет пакет вместе с конфигурационными файлами. Используйте, если уверены, что программа больше не нужна.

apt autoremove — удаление ненужных зависимостей

Когда вы устанавливаете программу, apt подтягивает зависимости. При удалении программы зависимости могут остаться. Команда autoremove удаляет «осиротевшие» пакеты, которые больше никому не нужны:

sudo apt autoremove

Совет. Периодически запускайте sudo apt autoremove, чтобы освободить место на диске от ненужных зависимостей.

Сводная таблица команд apt

Команда Действие
apt update Обновить список пакетов из репозиториев
apt upgrade Обновить все установленные пакеты
apt search <запрос> Найти пакет по имени или описанию
apt show <пакет> Показать информацию о пакете
apt install <пакет> Установить пакет
apt remove <пакет> Удалить пакет (конфиги остаются)
apt purge <пакет> Удалить пакет вместе с конфигами
apt autoremove Удалить ненужные зависимости
dpkg -l Список всех установленных пакетов

Практика: утилита tree

Установим полезную утилиту tree, которая показывает структуру каталогов в виде дерева.

sudo apt install -y tree

Теперь посмотрим структуру нашего проекта:

tree ~/wordpress-project
/home/student/wordpress-project
├── backup.sh
├── config
│   ├── nginx.conf
│   └── php.ini
├── hello.sh
├── logs
│   └── access.log
└── site
    └── index.html

3 directories, 6 files

Сравните с тем, как эту же информацию показывает ls -R — вывод tree гораздо нагляднее.

Полезные флаги:

# Показать только каталоги (без файлов)
tree -d ~/wordpress-project

# Показать права доступа
tree -p ~/wordpress-project

# Ограничить глубину вложенности
tree -L 1 ~/wordpress-project

Практическое задание

  1. Обновите список пакетов командой apt update. Обратите внимание на вывод — сколько репозиториев было опрошено?

  2. Найдите пакет curl с помощью apt search. Посмотрите информацию о нём (apt show curl). Что делает эта программа?

  3. Установите curl. Проверьте, что он установлен:

    curl --version
  4. Выполните dpkg -l | grep curl. Что означает статус ii в начале строки?

  5. Удалите curl командой apt remove. Проверьте, что программа удалена (curl --version должна вернуть ошибку). Затем установите его заново.

  6. Посмотрите содержимое файла /etc/apt/sources.list. Какие репозитории подключены? Какие секции (main, contrib и т.д.) используются?

  7. Выполните apt list --upgradable, чтобы увидеть, какие пакеты можно обновить. Если такие есть — обновите их командой apt upgrade.

Итоги

В этой главе вы:

  • узнали, что такое пакеты, зависимости и репозитории;
  • разобрались со структурой файла /etc/apt/sources.list и секциями репозитория Debian (main, contrib, non-free);
  • научились обновлять список пакетов (apt update);
  • освоили поиск (apt search), просмотр информации (apt show) и проверку установленных пакетов (dpkg -l);
  • научились устанавливать (apt install), обновлять (apt upgrade) и удалять пакеты (apt remove, apt purge, apt autoremove);
  • установили и попробовали утилиту tree.

В следующей главе мы разберём пользователей, группы и sudo — узнаем, как устроена система пользователей в Linux и как безопасно выполнять административные задачи.