# B4 Runtime Dependencies And Preflight ## Важно - `go.mod` хранит только Go-модули (библиотеки, которые импортируются в коде). - Внешние сервисы/бинарники (`systemd`, `nft`, `ip`, `sing-box`, `dnstt-client`, `phoenix-client`) не являются Go-модулями и не должны фиксироваться в `go.mod`. ## Текущие Go-зависимости (по `go.mod`) - `github.com/cenkalti/backoff/v4` - `github.com/creack/pty` ## Runtime-зависимости ядра (вне go.mod) ### Required (core path) - `systemctl` - `nft` - `ip` - `curl` - `/usr/local/bin/adguardvpn-cli-root` ### Required service units (current production path) - `singbox@.service` ### Recommended / optional - `nsenter` (предпочтительный exec-mode для netns) - `wget` (fallback для части egress probe) - `ps` - `ipset` ### Optional by enabled transport kind - `sing-box` (`/usr/local/bin/sing-box` или `/usr/bin/sing-box`) - `dnstt-client` (`/usr/local/bin/dnstt-client` или `/usr/bin/dnstt-client`) - `phoenix-client` (`/usr/local/bin/phoenix-client` или `/usr/bin/phoenix-client`) ### Optional service units (зависят от deployment-профиля) - `adguardvpn-autoconnect.service` - `smartdns-local.service` - `selective-vpn2@.service` - `sing-box.service` (legacy/compat) - `dnstt-client.service` - `phoenix-client.service` ## Preflight-check - Скрипт: `scripts/check_runtime_dependencies.sh` - Режимы: - `scripts/check_runtime_dependencies.sh` — проверка required + warning по optional. - `scripts/check_runtime_dependencies.sh --strict` — fail если есть missing/warning. ## Зачем это перед рефакторингом - Убираем смешение понятий: Go-зависимости отдельно, runtime/system-зависимости отдельно. - Перед декомпозицией (`F1.*`) быстро проверяем среду и снижаем ложные регрессии.