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.

