Files
trade-iac/doc/step-002f-agave-build-from-source-latest.txt

71 lines
2.7 KiB
Plaintext

Step 002F: Build Agave (agave-validator) z najnowszych zrodel (pin do releasu) i instalacja do /opt/solana/bin
Cel:
- Zbudowac `agave-validator` ze zrodel z pinu do konkretnego releasu (stable dla mainnet).
- Nie robic "floating HEAD" (zeby nie wjechal update bez kontroli).
Konwencja:
- "najnowsza wersja" = najnowszy stabilny release dla mainnet z GitHub Releases repo `anza-xyz/agave`.
(Zweryfikuj przed startem: tag typu v3.0.x.)
0) Packages (build deps)
sudo apt-get update
sudo apt-get install -y \
build-essential pkg-config libssl-dev \
clang llvm-dev libclang-dev \
cmake protobuf-compiler libudev-dev zlib1g-dev \
curl jq git ca-certificates
1) Uzytkownik + katalogi
sudo getent group solana >/dev/null || sudo groupadd --system solana
sudo id -u solana >/dev/null 2>&1 || sudo useradd --system --gid solana \
--home-dir /var/lib/solana --create-home --shell /bin/bash solana
sudo install -d -o root -g root -m 0755 /opt/solana/bin
sudo install -d -o solana -g solana -m 0750 /var/lib/solana/src
2) Wybierz tag releasu (stable dla mainnet)
# Opcja A (manual): sprawdz Releases i wpisz tag, np.:
AGAVE_VERSION_TAG="v3.0.13"
# Opcja B (CLI): pobierz liste tagow i wybierz najwyzszy semver (bez rc/beta)
# (Uwaga: to korzysta z network; jesli nie masz neta - uzyj opcji A.)
AGAVE_VERSION_TAG="$(
git ls-remote --refs --tags https://github.com/anza-xyz/agave.git 'v*' \
| awk -F/ '{print $NF}' \
| rg -v '(rc|beta|alpha)' \
| sort -V \
| tail -n1
)"
echo "AGAVE_VERSION_TAG=$AGAVE_VERSION_TAG"
3) Rust toolchain
# Rekomendacja: uzyj rustup (Agave ma pinned toolchain w repo).
sudo -u solana -H bash -lc 'command -v rustup >/dev/null 2>&1 || (curl -sSfL https://sh.rustup.rs | sh -s -- -y)'
4) Clone + build (pin do tagu)
AGAVE_SRC_DIR="/var/lib/solana/src/agave-${AGAVE_VERSION_TAG}"
sudo -u solana -H bash -lc "
set -euo pipefail
export PATH=/var/lib/solana/.cargo/bin:\$PATH
rm -rf \"${AGAVE_SRC_DIR}\"
git clone --depth 1 --branch \"${AGAVE_VERSION_TAG}\" https://github.com/anza-xyz/agave.git \"${AGAVE_SRC_DIR}\"
cd \"${AGAVE_SRC_DIR}\"
# Agave ma wrapper `./cargo`, ktory bierze pinned toolchain z repo.
./cargo build --release -p agave-validator
"
5) Install do /opt/solana/bin
sudo install -o root -g root -m 0755 \
"${AGAVE_SRC_DIR}/target/release/agave-validator" \
/opt/solana/bin/agave-validator
/opt/solana/bin/agave-validator --version
6) Uwagi (operacyjne)
- Jesli budujesz pluginy (Geyser), trzymaj je na tym samym pinned releasie i najlepiej w tej samej "epoce" API.
- Po update do nowego releasu: buduj validator + pluginy ponownie i restartuj systemd.