0.4.11
02 · Техническая документация

02. Установка и сборка

AstraCode распространяется как: - готовые licensed- и nolicense-архивы в GitLab Package Registry проекта astracode/astra-code-build (Linux x86_64-gnu и macOS Apple Silicon); - upstream-артефакты CI, предназначенные для сборочного конвейера; - исходный код, который разработчик может собрать через Cargo или Bazel.

1. Системные требования

Платформа Минимум
Linux x86_64 (glibc) glibc 2.31+ (Ubuntu 20.04+, Debian 11+)
macOS arm64 (Apple Silicon) macOS 12+
Windows x86_64 Upstream CI собирает raw .exe; готового downstream-бандла сейчас нет. Возможна сборка из исходников.

Дополнительно для Linux: - bwrap (bubblewrap) — рекомендуется (для песочницы). Без него используется встроенный vendored bwrap. - git — для большинства возможностей. - Сетевой доступ к выбранному провайдеру моделей.

2. Установка готовых архивов

Бандлы лежат в Package Registry проекта astracode/astra-code-build (project ID 286):

text
https://gitlab.prosto.aib.pro/astracode/astra-code-build/-/packages

Для доступа к внутреннему GitLab требуется корпоративная сеть или VPN. Архив также можно получить напрямую от команды AstraCode. Имена ниже используют шаблон версии X.Y.Z.

Архивы бывают двух типов:

  • licensed — перед запуском требуется активация лицензии;
  • nolicense — проверка лицензии отключена.

Внутреннее устройство gate и различия release channels описаны в 24-license.

Linux x86_64

Licensed-сборка:

bash
tar -xzf astracode-linux-x86_64-gnu-X.Y.Z.tar.gz
cd astracode-linux-x86_64-gnu-X.Y.Z
./bin/astracode license activate --file /path/to/license.key
./bin/astracode -C /path/to/project

Nolicense-сборка:

bash
tar -xzf astracode-linux-x86_64-gnu-nolicense-X.Y.Z.tar.gz
cd astracode-linux-x86_64-gnu-nolicense-X.Y.Z
./bin/astracode -C /path/to/project

macOS Apple Silicon

Licensed-сборка:

bash
mkdir -p "$HOME/astracode-X.Y.Z"
unzip astracode-macos-X.Y.Z.zip -d "$HOME/astracode-X.Y.Z"
cd "$HOME/astracode-X.Y.Z"
xattr -dr com.apple.quarantine ./astracode
./astracode license activate --file /path/to/license.key
./astracode -C /path/to/project

Nolicense-архив называется astracode-macos-nolicense-X.Y.Z.zip; активация для него не требуется.

Опционально: добавить astracode в PATH

Храните распакованную директорию в постоянном месте, затем создайте ссылку:

bash
mkdir -p "$HOME/.local/bin"
# Linux: выполнить из корня распакованного архива
ln -sfn "$(pwd)/bin/astracode" "$HOME/.local/bin/astracode"

# macOS: выполнить из директории с бинарником
ln -sfn "$(pwd)/astracode" "$HOME/.local/bin/astracode"

Если ~/.local/bin отсутствует в PATH, добавьте его в конфигурацию shell. При обновлении распакуйте новую версию в отдельную директорию, проверьте её и перенаправьте ссылку на новый бинарник.

3. Сборка из исходников

Cargo

bash
git clone <repo-url> astracode
cd astracode/astracode-rs
cargo build --release --bin astracode

Бинарник окажется в target/release/astracode.

Зависимости (Linux): - Rust toolchain (стабильная версия из rust-toolchain.toml). - pkg-config, libssl-dev, libsqlite3-dev, cmake, clang.

Зависимости (macOS): - Xcode Command Line Tools. - Rust toolchain.

Cross-compile для Linux x86_64-gnu

bash
cargo build --release --target x86_64-unknown-linux-gnu --bin astracode

Доступность cross-сборки зависит от установленного target и системного linker/toolchain.

Bazel

Альтернативный поддерживаемый разработческий путь:

bash
bazel build //astracode-rs/cli:astracode

MODULE.bazel лежит в корне репозитория, BUILD.bazel — в крейтах. Текущий GitLab release pipeline собирает бинарники через Cargo; наличие Bazel-цели не означает побитовой воспроизводимости релизных артефактов.

4. Первый запуск

bash
astracode

При первом запуске: 1. Создаётся директория ~/.astracode/. 2. Генерируется installation_id. 3. Открывается мастер настройки провайдера (можно пропустить и сделать через /model потом). 4. Итоговый sandbox и approval policy выбираются из конфигурации, профиля разрешений, платформы и trust-статуса проекта; фактические значения показывает /status.

Для headless-режима:

bash
astracode exec "Fix the failing test in tests/auth.rs"

5. Обновление

Получите новый архив тем же способом, распакуйте его в отдельную директорию и проверьте запуск. Если использовалась ссылка ~/.local/bin/astracode, переключите её на новый бинарник. Конфигурация и пользовательские данные находятся отдельно в $ASTRACODE_HOME и при замене бинарника сохраняются.

После обновления секреты в ~/.astracode/secrets/local.age обычно остаются работоспособны: зашифрованный файл и ключ не привязаны к версии бинарника. Ключ может храниться в secrets/local.key или в OS keyring — в зависимости от платформы и ASTRACODE_PROVIDER_SECRETS_KEY_STORAGE. См. 09-security.md.

6. Удаление

bash
rm "$HOME/.local/bin/astracode"  # только созданная ранее ссылка

После этого распакованную директорию можно удалить отдельно. $ASTRACODE_HOME не является частью установки: там находятся конфигурация, сессии, память и секреты. Удаляйте или сбрасывайте её только как отдельную операцию после полной резервной копии; простое удаление бинарника этого не требует.

7. Проверка установки

bash
astracode --version
astracode debug models       # проверка каталога моделей (см. /debug-config в TUI для слоёв конфига)
astracode mcp list           # список зарегистрированных MCP

В TUI можно выполнить /status — покажет текущую модель, провайдера, sandbox, локаль.

8. Переменные окружения

Переменная Эффект
ASTRACODE_HOME Альтернативная директория вместо ~/.astracode. Должна существовать.
ASTRACODE_LOCALE en или ru для интерфейса.
ASTRACODE_CA_CERTIFICATE Корневой CA-сертификат (для on-prem провайдеров с собственным CA).
ASTRACODE_SQLITE_HOME Где лежат state_*.sqlite (по умолчанию $ASTRACODE_HOME).

9. Troubleshooting

bwrap: setting up uid map: Permission denied — Linux отключил unprivileged user namespaces. Решение: sudo sysctl kernel.unprivileged_userns_clone=1. Параметр [features].use_legacy_landlock = true в config.toml устарел (deprecation notice) и не рекомендуется — используйте sysctl или обновлённый sandbox.

Failed to decrypt secrets file — текущий file/keyring key не подходит к vault. Не удаляйте единственную копию: остановите AstraCode, сохраните secrets/local.age и secrets/local.key (если он есть), затем следуйте процедуре восстановления.

Could not find suitable model provider — провайдер не настроен. Запустите /model или отредактируйте [[providers]] в config.toml.

TUI «висит» на старте — скорее всего, MCP-сервер с required = true не отвечает. Проверьте логи в ~/.astracode/log/astracode-tui.log.

См. также 03-configuration.md для тонкой настройки.