Модуль 06 — Пакеты и дерево каталогов

Где что лежит в системе и как ставить программы без скачивания установщиков

Прогресс курса Модуль 6 из 9

Что вы освоите в этом модуле

01

Дерево каталогов

Расположение каталогов в Linux описано стандартом FHS (Filesystem Hierarchy Standard), поэтому на любом сервере конфигурация лежит в /etc, журналы — в /var/log, а программы — в /usr/bin.

КаталогЧто тамПример
/etcКонфигурация системы и служб — текстовые файлы/etc/ssh/sshd_config, /etc/nginx/
/homeДомашние каталоги пользователей/home/student
/rootДомашний каталог root
/usr/bin, /usr/sbinПрограммы из пакетов; sbin — для администратора/usr/bin/ls, /usr/sbin/sshd
/usr/libБиблиотеки, юниты systemd/usr/lib/systemd/system/ssh.service
/usr/localПрограммы, установленные вручную, не из пакетов/usr/local/bin/backup.sh
/varИзменяемые данные: журналы, кэши, базы, почта/var/log, /var/lib/postgresql, /var/www
/tmpВременные файлы. В Debian 13 хранится в памяти и очищается при перезагрузке
/srv, /optДанные служб сервера; крупные сторонние программы/srv/shared, /opt/app
/devУстройства в виде файлов/dev/sda — первый диск
/proc, /sysВиртуальные: сведения ядра о процессах и оборудовании, на диске их нет/proc/cpuinfo, /proc/meminfo
/bootЯдро и загрузчик/boot/vmlinuz-6.12…

В современных Debian /bin, /sbin и /lib — символические ссылки на соответствующие каталоги внутри /usr: /bin/ls и /usr/bin/ls — один файл.

$ cat /proc/cpuinfo | grep "model name" | head -1
model name	: Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
$ ls -l /bin
lrwxrwxrwx 1 root root 7 мая  8 19:10 /bin -> usr/bin
02

Пакеты и репозитории

В Linux программы не скачивают с сайтов разработчиков. Они собраны в пакеты — архивы .deb с файлами программы, списком зависимостей и скриптами установки. Пакеты лежат в репозиториях — серверах дистрибутива, подписанных его ключом. apt скачивает пакет, проверяет подпись, ставит зависимости и раскладывает файлы по местам из таблицы выше.

Список репозиториев — в /etc/apt/sources.list (или в файлах *.sources в /etc/apt/sources.list.d/):

$ grep -v '^#' /etc/apt/sources.list | grep .
deb http://mirror.yandex.ru/debian/ trixie main non-free-firmware
deb http://security.debian.org/debian-security trixie-security main non-free-firmware
deb http://mirror.yandex.ru/debian/ trixie-updates main non-free-firmware
# тип  адрес зеркала                   выпуск           компоненты
СтрокаЗачем
trixieОсновной репозиторий выпуска Debian 13
trixie-securityИсправления уязвимостей — выходят в любой день, обновляться нужно регулярно
trixie-updatesВажные исправления между промежуточными выпусками
main / non-free-firmwareСвободные пакеты / несвободные прошивки оборудования

Зеркало — копия репозитория на ближайшем сервере. В России быстрые зеркала Debian — mirror.yandex.ru и ftp.ru.debian.org. Если пакеты качаются медленно или с ошибками, замените адрес в sources.list и выполните sudo apt update.

03

apt: установить, обновить, удалить

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

$ sudo apt update
Сущ:1 http://mirror.yandex.ru/debian trixie InRelease
Пол:2 http://security.debian.org/debian-security trixie-security InRelease [43,4 kB]
...
Может быть обновлено 59 пакетов. Запустите «apt list --upgradable» для их показа.

$ sudo apt install htop tree
Предлагаемые пакеты:
  lm-sensors strace
Следующие НОВЫЕ пакеты будут установлены:
  htop tree
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 59 пакетов не обновлено.
...
КомандаЧто делает
apt search словоНайти пакет по имени и описанию; --names-only — только по имени
apt show пакетОписание, версия, зависимости, размер
sudo apt install пакетУстановить с зависимостями
sudo apt upgradeОбновить все установленные пакеты
sudo apt full-upgradeОбновить, разрешив удалять и добавлять пакеты, если этого требуют зависимости
sudo apt remove пакетУдалить программу, конфигурация в /etc остаётся
sudo apt purge пакетУдалить вместе с конфигурацией
sudo apt autoremoveУдалить зависимости, которые больше никому не нужны
apt list --upgradableЧто можно обновить
Читайте, что apt собирается удалить, прежде чем ответить Д. Удаление одной библиотеки может потянуть за собой десятки пакетов. Безопасная проверка — опция -s (simulate): apt-get remove -s cron покажет план, ничего не меняя.

Пакеты, скачанные вручную (.deb с сайта производителя), ставят тоже через apt, указав путь: sudo apt install ./program.deb — так подтянутся зависимости. Такие пакеты не обновляются вместе с системой, и их подлинность проверяете вы сами.

04

dpkg: что установлено и откуда файл

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

$ dpkg -S /usr/bin/ls             # какому пакету принадлежит файл
coreutils: /usr/bin/ls
$ dpkg -L htop | grep bin         # какие файлы поставил пакет
/usr/bin/htop
$ dpkg -l htop nginx
dpkg-query: шаблону nginx не соответствует ни один пакет
...
ii  htop           3.4.1-5      amd64        interactive processes viewer
$ apt-cache policy htop           # установленная и доступная версии
htop:
  Установлен: 3.4.1-5
  Кандидат:   3.4.1-5

Первые буквы в dpkg -l: ii — установлен и настроен; rc — удалён, но осталась конфигурация (помогает purge). История установок и удалений — в /var/log/apt/history.log: по нему выясняют, что меняли на сервере перед поломкой.

05

Место на диске: df и du

Закончившееся место — одна из самых частых причин аварий: база данных не может записать транзакцию, журналы перестают писаться, служба не стартует. df показывает заполненность файловых систем, du — сколько занимает каталог.

$ df -h -x tmpfs -x devtmpfs          # без виртуальных файловых систем в памяти
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sda1           30G         4,9G   24G           18% /

$ sudo du -sh /var/log /var/cache/apt
71M	/var/log
482M	/var/cache/apt

$ sudo du -h --max-depth=1 /var | sort -h | tail -3   # три самых больших подкаталога

Частые «пожиратели» места: журналы в /var/log и журнал systemd (sudo journalctl --vacuum-size=200M ужмёт его), кэш пакетов /var/cache/apt (sudo apt clean), забытые резервные копии и дампы.

06

Диски и монтирование

Диски — файлы-устройства в /dev: /dev/sda — первый диск SATA или виртуальный, /dev/sda1 — его первый раздел, /dev/nvme0n1p1 — раздел SSD NVMe. Чтобы файлы раздела стали доступны, его монтируют — подключают к каталогу в общем дереве.

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   32G  0 disk
├─sda1   8:1    0 30,3G  0 part /
├─sda2   8:2    0    1K  0 part
└─sda5   8:5    0  1,7G  0 part [SWAP]
sr0     11:0    1  3,7G  1 rom

Здесь раздел sda1 смонтирован в корень /, sda5 используется как подкачка, sr0 — виртуальный CD. Подключить второй диск вручную и отключить:

$ sudo mount /dev/sdb1 /mnt
$ findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sdb1 ext4   rw,relatime
$ sudo umount /mnt

Что монтировать при загрузке, записано в /etc/fstab. Разделы там указаны по UUID — уникальному номеру файловой системы, потому что имена sda/sdb могут поменяться при добавлении дисков:

$ grep -v '^#' /etc/fstab
UUID=97c23eb6-eee2-49d6-917b-29ce316c376b /     ext4  errors=remount-ro  0  1
UUID=8811aaa5-3acc-461c-8198-304232ebf932 none  swap  sw                 0  0
Ошибка в /etc/fstab может остановить загрузку системы. После правки проверяйте файл без перезагрузки: sudo findmnt --verify и sudo mount -a — если ошибок нет, перезагрузка безопасна.

Ключевые выводы модуля

Запомните главное

  • Конфигурация — /etc, журналы и данные служб — /var, программы — /usr/bin, своё — /usr/local
  • Программы ставятся из подписанных репозиториев: sudo apt update, затем sudo apt install
  • remove оставляет конфигурацию, purge — удаляет; план проверяется через -s
  • dpkg -S файл — чей файл, dpkg -L пакет — что в пакете
  • Место на диске — df -h, что его заняло — du -sh
  • Монтирование подключает раздел к каталогу; постоянное — в /etc/fstab по UUID, с проверкой findmnt --verify
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Модуль 05: Процессы Все модули Модуль 07: Конвейеры