В 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 nginxКоманда выведет список пакетов, в имени или описании которых встречается
слово «nginx». Список может быть длинным — используйте конвейер с less
для постраничного просмотра:
apt search nginx | lessМожно уточнить поиск, комбинируя с grep:
apt search nginx | grep ^nginxСимвол ^ (начало строки) из регулярных выражений (глава 05) отфильтрует
только строки, начинающиеся с «nginx» — то есть имена пакетов,
а не описания.
apt show nginxPackage: 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Эта команда покажет все установленные пакеты. Их обычно сотни, поэтому используйте grep для фильтрации:
dpkg -l | grep nanoii nano 8.3-1 amd64 small, friendly text editor inspired by Pstretch
Статус ii в начале означает, что пакет установлен и настроен.
Быстрый способ проверить, установлен ли конкретный пакет:
dpkg -l nginx 2>/dev/null | grep ^iiЕсли вывод пустой — пакет не установлен. Если строка с ii появилась —
установлен.
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 treesudo apt install nginx php-fpm mariadb-serverВсе три пакета (и их зависимости) будут установлены за одну операцию.
Типичная последовательность для обновления системы:
# Шаг 1: обновить каталог пакетов
sudo apt update
# Шаг 2: обновить все установленные пакеты
sudo apt upgradeapt upgrade обновляет все пакеты, для которых доступна новая версия.
Перед обновлением apt покажет список изменений и попросит подтверждение.
| Команда | Поведение |
|---|---|
apt upgrade |
Обновляет пакеты, не удаляя и не добавляя новых |
apt full-upgrade |
Обновляет пакеты, может удалить ненужные или добавить новые зависимости |
Для обычного обновления используйте apt upgrade. Команда apt full-upgrade
нужна при переходе между версиями дистрибутива (например, с Debian 12
на Debian 13) — в повседневной работе она требуется редко.
sudo apt remove treeПакет будет удалён, но его конфигурационные файлы останутся на диске. Это удобно, если вы планируете установить программу заново — настройки сохранятся.
sudo apt purge treeУдаляет пакет вместе с конфигурационными файлами. Используйте, если уверены, что программа больше не нужна.
Когда вы устанавливаете программу, apt подтягивает зависимости. При удалении
программы зависимости могут остаться. Команда autoremove удаляет «осиротевшие»
пакеты, которые больше никому не нужны:
sudo apt autoremoveСовет. Периодически запускайте
sudo apt autoremove, чтобы освободить место на диске от ненужных зависимостей.
| Команда | Действие |
|---|---|
apt update |
Обновить список пакетов из репозиториев |
apt upgrade |
Обновить все установленные пакеты |
apt search <запрос> |
Найти пакет по имени или описанию |
apt show <пакет> |
Показать информацию о пакете |
apt install <пакет> |
Установить пакет |
apt remove <пакет> |
Удалить пакет (конфиги остаются) |
apt purge <пакет> |
Удалить пакет вместе с конфигами |
apt autoremove |
Удалить ненужные зависимости |
dpkg -l |
Список всех установленных пакетов |
Установим полезную утилиту 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-
Обновите список пакетов командой
apt update. Обратите внимание на вывод — сколько репозиториев было опрошено? -
Найдите пакет
curlс помощьюapt search. Посмотрите информацию о нём (apt show curl). Что делает эта программа? -
Установите
curl. Проверьте, что он установлен:curl --version
-
Выполните
dpkg -l | grep curl. Что означает статусiiв начале строки? -
Удалите
curlкомандойapt remove. Проверьте, что программа удалена (curl --versionдолжна вернуть ошибку). Затем установите его заново. -
Посмотрите содержимое файла
/etc/apt/sources.list. Какие репозитории подключены? Какие секции (main, contrib и т.д.) используются? -
Выполните
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 и как безопасно выполнять административные задачи.