Где что лежит в системе и как ставить программы без скачивания установщиков
aptdpkgРасположение каталогов в 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
В 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.
Перед установкой обновите список пакетов — сведения о том, какие версии лежат в репозиториях. 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 — так подтянутся зависимости. Такие пакеты не обновляются вместе с системой, и их подлинность проверяете вы сами.
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: по нему выясняют, что меняли на сервере перед поломкой.
Закончившееся место — одна из самых частых причин аварий: база данных не может записать транзакцию, журналы перестают писаться, служба не стартует. 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), забытые резервные копии и дампы.
Диски — файлы-устройства в /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/localsudo apt update, затем sudo apt installremove оставляет конфигурацию, purge — удаляет; план проверяется через -sdpkg -S файл — чей файл, dpkg -L пакет — что в пакетеdf -h, что его заняло — du -sh/etc/fstab по UUID, с проверкой findmnt --verify