Files
elmprodvpn/docs/phase-b/B4_RUNTIME_DEPENDENCIES_AND_PREFLIGHT.md

2.1 KiB

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
  • 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.*) быстро проверяем среду и снижаем ложные регрессии.