11-utils — повседневные утилиты сервера

Ставит стандартный набор консольных инструментов: git, jq, htop/btop, tmux, build-essential и др. 🔒 обязательный.

Зачем нужен

На минимальном образе сервера часто нет привычных инструментов: нельзя клонировать репозиторий (git), распарсить JSON (jq), посмотреть нагрузку (htop/btop), собрать нативный модуль (build-essential, gcc, make), удобно работать в нескольких панелях (tmux). Этот модуль одним шагом доустанавливает набор, который практически всегда нужен для эксплуатации и деплоя.

Без него каждый такой инструмент пришлось бы ставить вручную по мере надобности, а часть модулей и деплой-скриптов (сборка зависимостей, обработка JSON-вывода) могли бы не отработать. Модуля достаточно, чтобы получить «рабочее место» администратора; специализированный софт (Docker, БД, Node.js) ставят отдельные модули.

Когда включать и когда не нужен

Зависимости и требования

Что именно делает

Пошагово, в порядке module_install:

  1. Ставит основной набор одним вызовом 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.
  2. Отдельно пробует поставить btop — только если он ещё не установлен. Если пакет недоступен в репозитории, шаг не проваливает установку: выводится предупреждение «btop недоступен — пропущен».
  3. Проверяет результат (module_verify); при неудаче — ошибка.
  4. Отмечает модуль выполненным (state_mark).

Почему btop ставится отдельной попыткой

Основной набор ставится одной командой: если хотя бы один пакет из списка не найден, менеджер пакетов может завершиться ошибкой и «уронить» весь шаг. btop есть не во всех дистрибутивах и версиях (особенно на старых/минимальных образах), поэтому его выносят в отдельный необязательный шаг с мягкой обработкой: нет btop — просто предупреждение, остальные утилиты уже установлены. Как замена всегда ставится htop.

Файлы, службы и порты

Модуль не создаёт конфигов, служб и не открывает портов — только устанавливает пакеты. Единственный след в состоянии установки:

Путь Назначение Владелец:права
/var/lib/mitdev/state/utils.done отметка выполнения модуля root

Настройка

У модуля нет собственных переменных в config/defaults.conf — список пакетов зафиксирован в самом модуле (массив UTILS_PACKAGES). Настраивать здесь нечего; при необходимости изменить набор правьте список в modules/11-utils.sh.

Как переопределить настройки

Переменных для переопределения нет. Если нужен дополнительный пакет:

  1. Установите его вручную после установки:
    sudo apt-get install -y <пакет>     # или dnf install -y <пакет>
    
  2. Либо добавьте пакет в массив 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)"

Типовые задачи

Частые ошибки

Симптом Причина Что сделать
btop: command not found пакета нет в репозитории образа это ожидаемо; пользуйтесь htop, либо поставьте btop позже вручную
Верификация утилит не пройдена сбой установки одного из ключевых пакетов смотрите install.log/errors.log, проверьте доступ к репозиториям, перезапустите модуль
Нет gcc/make при сборке не отработал build-essential (маппинг на не-Debian) проверьте command -v gcc make; доустановите пакеты для вашего дистрибутива

Безопасность и продакшен

Модуль ставит стандартные, широко используемые утилиты из официальных репозиториев дистрибутива — отдельной поверхности атаки он не добавляет. Специальной настройки на стороне клиента не требуется.

Откат и удаление

См. также