51 lines
2.1 KiB
Markdown
51 lines
2.1 KiB
Markdown
# 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.*`) быстро проверяем среду и снижаем ложные регрессии.
|