Marina Petrichenko e654a293e0
docs: add russian translations (#73)
Co-authored-by: Slava <20563034+veaceslavdoina@users.noreply.github.com>
2025-07-31 14:35:28 +03:00

239 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сборка Codex
## Содержание
- [Установка инструментов разработчика](#prerequisites)
- [Linux](#linux)
- [macOS](#macos)
- [Windows + MSYS2](#windows-msys2)
- [Другие](#other)
- [Клонирование и подготовка Git-репозитория](#repository)
- [Сборка исполняемого файла](#executable)
- [Запуск примера](#example-usage)
**Дополнительно**
- [Запуск тестов](#tests)
## Предварительные требования
Для сборки nim-codex необходимо установить и сделать доступными инструменты разработчика в операционной системе.
Инструкции ниже примерно соответствуют настройкам окружения в [CI workflow](https://github.com/codex-storage/nim-codex/blob/master/.github/workflows/ci.yml) nim-codex и известны как рабочие.
Другие подходы могут быть жизнеспособны. На macOS некоторые пользователи могут предпочесть [MacPorts](https://www.macports.org/) вместо [Homebrew](https://brew.sh/). На Windows вместо MSYS2 некоторые пользователи могут предпочесть установку инструментов разработчика с помощью [winget](https://docs.microsoft.com/en-us/windows/package-manager/winget/), [Scoop](https://scoop.sh/) или [Chocolatey](https://chocolatey.org/), или загрузку установщиков для, например, Make и CMake, в остальном полагаясь на официальные инструменты разработчика Windows. Приветствуются вклады сообщества в эти документы и нашу систему сборки!
### Rust
Текущая реализация схемы доказательств с нулевым разглашением Codex требует установки Rust версии 1.79.0 или выше. Убедитесь, что вы установили его для вашей ОС и добавили в PATH вашего терминала так, чтобы команда `cargo --version` показывала совместимую версию.
### Linux
> [!WARNING]
> Сборка в Linux в настоящее время требует gcc $\leq$ 13. Если это не вариант в вашей системе, вы можете попробовать [сборку в Docker](#building-within-docker) как обходной путь.
*Команды менеджера пакетов могут требовать `sudo` в зависимости от настройки ОС.*
На базовой установке Debian (или дистрибутива, производного от Debian, такого как Ubuntu), выполните
```shell
apt-get update && apt-get install build-essential cmake curl git rustc cargo
```
Не-Debian дистрибутивы имеют разные менеджеры пакетов: `apk`, `dnf`, `pacman`, `rpm`, `yum` и т.д.
Например, на базовой установке Fedora выполните
```shell
dnf install @development-tools cmake gcc-c++ rust cargo
```
В случае, если ваш дистрибутив не предоставляет требуемую версию Rust, мы можем установить её с помощью [rustup](https://www.rust-lang.org/tools/install)
```shell
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --default-toolchain=1.79.0 -y
. "$HOME/.cargo/env"
```
Обратите внимание, что в настоящее время вы не сможете собрать Codex с gcc 14. Чтобы проверить, что у вас поддерживаемая версия, выполните:
```shell
gcc --version
```
Если вы получите число, начинающееся с 14 (например, `14.2.0`), то вам нужно либо понизить версию, либо попробовать обходной путь, например [сборку в Docker](#building-within-docker).
### macOS
Установите [Xcode Command Line Tools](https://mac.install.guide/commandlinetools/index.html), открыв терминал и выполнив
```shell
xcode-select --install
```
Установите [Homebrew (`brew`)](https://brew.sh/) и в новом терминале выполните
```shell
brew install bash cmake rust
```
Проверьте, что `PATH` настроен правильно
```shell
which bash cmake
# /usr/local/bin/bash
# /usr/local/bin/cmake
```
### Windows + MSYS2
*Инструкции ниже предполагают, что ОС - 64-битная Windows и что оборудование или ВМ совместимо с [x86-64](https://en.wikipedia.org/wiki/X86-64).*
Скачайте и запустите установщик с [msys2.org](https://www.msys2.org/).
Запустите среду MSYS2 [environment](https://www.msys2.org/docs/environments/). UCRT64 обычно рекомендуется: из меню *Пуск* Windows выберите `MSYS2 MinGW UCRT x64`.
Предполагая среду UCRT64, в Bash выполните
```shell
pacman -Suy
pacman -S base-devel git unzip mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-rust
```
Нам следует понизить GCC до версии 13 [^gcc-14]
```shell
pacman -U --noconfirm \
https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-13.2.0-6-any.pkg.tar.zst \
https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst
```
#### Опционально: Интеграция с терминалом VSCode
Вы можете связать терминал MSYS2-UCRT64 с VSCode, изменив файл конфигурации, как показано ниже.
Файл: `C:/Users/<username>/AppData/Roaming/Code/User/settings.json`
```json
{
...
"terminal.integrated.profiles.windows": {
...
"MSYS2-UCRT64": {
"path": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"--login",
"-i"
],
"env": {
"MSYSTEM": "UCRT64",
"CHERE_INVOKING": "1",
"MSYS2_PATH_TYPE": "inherit"
}
}
}
}
```
### Другие
Возможно, что nim-codex может быть собран и запущен на других платформах, поддерживаемых языком [Nim](https://nim-lang.org/): семейство BSD, более старые версии Windows и т.д. Не было достаточного экспериментирования с nim-codex на таких платформах, поэтому инструкции не предоставляются. Приветствуются вклады сообщества в эти документы и нашу систему сборки!
## Репозиторий
В Bash выполните
```shell
git clone https://github.com/codex-storage/nim-codex.git repos/nim-codex && cd repos/nim-codex
```
nim-codex использует [nimbus-build-system](https://github.com/status-im/nimbus-build-system), поэтому затем выполните
```shell
make update
```
Этот шаг может занять некоторое время для завершения, потому что по умолчанию он собирает [компилятор Nim](https://nim-lang.org/docs/nimc.html).
Чтобы увидеть больше вывода от `make`, передайте `V=1`. Это работает для всех целей `make` в проектах, использующих nimbus-build-system
```shell
make V=1 update
```
## Исполняемый файл
В Bash выполните
```shell
make
```
Цель `make` по умолчанию создает исполняемый файл `build/codex`.
## Инструменты
### Инструмент загрузки схемы
Чтобы собрать инструмент загрузки схемы, расположенный в `tools/cirdl`, выполните:
```shell
make cirdl
```
## Пример использования
См. инструкции в [Быстром старте](/learn/quick-start).
## Тесты
В Bash выполните
```shell
make test
```
### testAll
#### Предварительные требования
Для запуска интеграционных тестов требуется тестовый узел Ethereum. Следуйте этим инструкциям для его настройки.
##### Windows (сделайте это перед "Все платформы")
1. Скачайте и установите Visual Studio 2017 или новее. (Не VSCode!) В обзоре рабочих нагрузок включите `Desktop development with C++`. ( https://visualstudio.microsoft.com )
##### Все платформы
1. Установите NodeJS (проверено с v18.14.0), рассмотрите использование NVM как менеджера версий. [Node Version Manager (`nvm`)](https://github.com/nvm-sh/nvm#readme)
1. Откройте терминал
1. Перейдите в папку vendor/codex-contracts-eth: `cd /<git-root>/vendor/codex-contracts-eth/`
1. `npm install` -> Должно завершиться с количеством добавленных пакетов и обзором известных уязвимостей.
1. `npm test` -> Должен вывести результаты тестов. Может занять минуту.
Перед запуском интеграционных тестов вы должны вручную запустить тестовый узел Ethereum.
1. Откройте терминал
1. Перейдите в папку vendor/codex-contracts-eth: `cd /<git-root>/vendor/codex-contracts-eth/`
1. `npm start` -> Это должно запустить Hardhat и вывести ряд ключей и предупреждающее сообщение.
#### Запуск
Цель `testAll` запускает те же тесты, что и `make test`, а также запускает тесты для контрактов Ethereum nim-codex, а также базовый набор интеграционных тестов.
Чтобы запустить `make testAll`.
Используйте новый терминал для запуска:
```shell
make testAll
```
## Сборка в Docker
Для конкретного случая дистрибутивов Linux, которые поставляются с gcc 14
и понижение до 13 невозможно/нежелательно, сборка в контейнере Docker
и извлечение бинарных файлов путем копирования или монтирования остается
вариантом; например:
```bash=
# Клонировать оригинальный репозиторий.
git clone https://github.com/codex-storage/nim-codex
# Собрать внутри docker
docker build -t codexstorage/nim-codex:latest -f nim-codex/docker/codex.Dockerfile nim-codex
# Извлечь исполняемый файл
docker create --name=codex-build codexstorage/nim-codex:latest
docker cp codex-build:/usr/local/bin/codex ./codex
docker cp codex-build:/usr/local/bin/cirdl ./cirdl
```
и вуаля, у вас должны быть бинарные файлы доступны в текущей папке.