11-utils — повседневные утилиты сервера
Ставит стандартный набор консольных инструментов: git, jq, htop/btop, tmux, build-essential и др. 🔒 обязательный.
Зачем нужен
На минимальном образе сервера часто нет привычных инструментов: нельзя клонировать репозиторий (git), распарсить JSON (jq), посмотреть нагрузку (htop/btop), собрать нативный модуль (build-essential, gcc, make), удобно работать в нескольких панелях (tmux). Этот модуль одним шагом доустанавливает набор, который практически всегда нужен для эксплуатации и деплоя.
Без него каждый такой инструмент пришлось бы ставить вручную по мере надобности, а часть модулей и деплой-скриптов (сборка зависимостей, обработка JSON-вывода) могли бы не отработать. Модуля достаточно, чтобы получить «рабочее место» администратора; специализированный софт (Docker, БД, Node.js) ставят отдельные модули.
Когда включать и когда не нужен
- Всегда включён — обязательный модуль.
- Идемпотентен: повторный запуск просто убедится, что пакеты на месте.
- Отдельно докладывается
btop(современный монитор ресурсов) — его нет в репозиториях некоторых минимальных образов, и его отсутствие не должно валить установку всего набора.
Зависимости и требования
- Логически идёт после 01-system (обновлённый индекс пакетов).
- Нужен доступ к репозиториям дистрибутива.
- Мультидистро: имена пакетов маппятся автоматически. Например,
build-essentialна RHEL превращается вgcc gcc-c++ make, на Arch — вbase-devel;g++→gcc-c++. Пакеты, у которых нет аналога, пропускаются.
Что именно делает
Пошагово, в порядке module_install:
- Ставит основной набор одним вызовом
pkg_install:git,curl,wget,zip,unzip,jq,tree,nano,vim,htop,ncdu,build-essential,make,gcc,g++,rsync,net-tools,lsof,tmux,screen,zsh. - Отдельно пробует поставить
btop— только если он ещё не установлен. Если пакет недоступен в репозитории, шаг не проваливает установку: выводится предупреждение «btop недоступен — пропущен». - Проверяет результат (
module_verify); при неудаче — ошибка. - Отмечает модуль выполненным (
state_mark).
Почему btop ставится отдельной попыткой
Основной набор ставится одной командой: если хотя бы один пакет из списка не найден, менеджер пакетов может завершиться ошибкой и «уронить» весь шаг. btop есть не во всех дистрибутивах и версиях (особенно на старых/минимальных образах), поэтому его выносят в отдельный необязательный шаг с мягкой обработкой: нет btop — просто предупреждение, остальные утилиты уже установлены. Как замена всегда ставится htop.
Файлы, службы и порты
Модуль не создаёт конфигов, служб и не открывает портов — только устанавливает пакеты. Единственный след в состоянии установки:
| Путь | Назначение | Владелец:права |
|---|---|---|
/var/lib/mitdev/state/utils.done |
отметка выполнения модуля | root |
Настройка
У модуля нет собственных переменных в config/defaults.conf — список пакетов зафиксирован в самом модуле (массив UTILS_PACKAGES). Настраивать здесь нечего; при необходимости изменить набор правьте список в modules/11-utils.sh.
Как переопределить настройки
Переменных для переопределения нет. Если нужен дополнительный пакет:
- Установите его вручную после установки:
sudo apt-get install -y <пакет> # или dnf install -y <пакет> - Либо добавьте пакет в массив
UTILS_PACKAGESвmodules/11-utils.shи перезапустите установку.
Проверка, что всё работает
module_verify считает модуль успешным, если доступны команды: git, curl, wget, jq, htop, rsync, tmux, make, gcc.
Ручные проверки:
for c in git curl wget jq htop rsync tmux make gcc; do command -v "$c" >/dev/null && echo "$c ok" || echo "$c ОТСУТСТВУЕТ"; done
git --version
jq --version
btop --version 2>/dev/null || echo "btop не установлен (норм, есть htop)"
Типовые задачи
- Проверить, что весь набор на месте: команда
for … command -v …выше. - Доустановить btop, если он появился в репозитории:
sudo apt-get update && sudo apt-get install -y btop - Посмотреть нагрузку сервера:
btop # или htop, если btop нет - Разобрать JSON-вывод команды:
some-command --json | jq '.'
Частые ошибки
| Симптом | Причина | Что сделать |
|---|---|---|
btop: command not found |
пакета нет в репозитории образа | это ожидаемо; пользуйтесь htop, либо поставьте btop позже вручную |
| Верификация утилит не пройдена | сбой установки одного из ключевых пакетов | смотрите install.log/errors.log, проверьте доступ к репозиториям, перезапустите модуль |
Нет gcc/make при сборке |
не отработал build-essential (маппинг на не-Debian) |
проверьте command -v gcc make; доустановите пакеты для вашего дистрибутива |
Безопасность и продакшен
Модуль ставит стандартные, широко используемые утилиты из официальных репозиториев дистрибутива — отдельной поверхности атаки он не добавляет. Специальной настройки на стороне клиента не требуется.
Откат и удаление
- Авто-откат при падении установки (
module_rollback): намеренно no-op. Утилиты вродеgit,curl,makeпочти наверняка уже используются другим ПО, и их удаление в ходе отката могло бы сломать несвязанные вещи. Общая очистка неиспользуемых пакетов выполняется отдельным модулем cleanup (apt autoremove). mitdev remove utils: по умолчанию no-op — набор оставляется на месте по той же причине (git/curl/make/build-essential могут требоваться другому софту). Выводится подсказка о флаге--purge.mitdev remove utils --purge: принудительно удаляет весь набор пакетов (включаяbtop). Использовать с осторожностью — предупреждение о возможной поломке другого ПО выводится явно.
См. также
- ../COMMANDS.md —
mitdev remove,mitdev clean,mitdev doctor. - 01-system.md — базовые пакеты (ставятся раньше, набор минимальный).
- ../MODULES.md — обзор всех модулей.