mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 10:04:42 +02:00
feat: initial commit — Ansible roles storage-01/gpu-01 opérationnels
This commit is contained in:
commit
b3fce8af5d
70 changed files with 2688 additions and 0 deletions
57
ansible/roles/lm_studio/files/install-lmstudio-compat.sh
Normal file
57
ansible/roles/lm_studio/files/install-lmstudio-compat.sh
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env bash
|
||||
# Install LM Studio on AlmaLinux 9.
|
||||
#
|
||||
# AlmaLinux 9 ships GCC 11 → libstdc++ provides up to GLIBCXX_3.4.29.
|
||||
# LM Studio bundles watcher.node (compiled with GCC 12) which requires
|
||||
# _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.30.
|
||||
# That symbol exists in the system libstdc++ under GLIBCXX_3.4.11.
|
||||
#
|
||||
# Fix: ELF-patch watcher.node to rewrite the VERNEED entry from
|
||||
# GLIBCXX_3.4.30 → GLIBCXX_3.4.11 (same symbol, correct version tag).
|
||||
# Both vna_hash and the version string are updated in-place.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Ansible copy task places files in /tmp
|
||||
if [ -f "/tmp/patch-glibcxx-compat.py" ]; then
|
||||
PATCHER="/tmp/patch-glibcxx-compat.py"
|
||||
else
|
||||
PATCHER="${SCRIPT_DIR}/patch-glibcxx-compat.py"
|
||||
fi
|
||||
|
||||
# --- Fetch installer metadata ---
|
||||
echo "[lmstudio-install] Fetching installer metadata..."
|
||||
INSTALL_SH=$(curl -fsSL https://lmstudio.ai/install.sh)
|
||||
VERSION=$(echo "$INSTALL_SH" | grep '^APP_VERSION=' | cut -d'"' -f2)
|
||||
ARTIFACT_URL_BASE=$(echo "$INSTALL_SH" | grep '^ARTIFACT_DOWNLOAD_URL=' | cut -d'"' -f2)
|
||||
|
||||
ARTIFACT="${VERSION}-linux-x64.full.tar.gz"
|
||||
URL="https://${ARTIFACT_URL_BASE}/${ARTIFACT}"
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf "$TMPDIR"' EXIT
|
||||
|
||||
echo "[lmstudio-install] Downloading ${ARTIFACT}..."
|
||||
curl -fsSL "$URL" -o "$TMPDIR/bundle.tar.gz"
|
||||
|
||||
echo "[lmstudio-install] Extracting bundle..."
|
||||
tar xf "$TMPDIR/bundle.tar.gz" -C "$TMPDIR"
|
||||
|
||||
# Patch watcher.node before bootstrap so the daemon never sees GLIBCXX_3.4.30
|
||||
echo "[lmstudio-install] Patching watcher.node (GLIBCXX_3.4.30 → GLIBCXX_3.4.11)..."
|
||||
find "$TMPDIR" -name 'watcher.node' | while read -r node; do
|
||||
python3 "$PATCHER" "$node"
|
||||
done
|
||||
|
||||
echo "[lmstudio-install] Running bootstrap..."
|
||||
LMS_BOOTSTRAP_INSTALL_SH=1 "$TMPDIR/llmster" bootstrap
|
||||
|
||||
# Also patch the installed copy in ~/.lmstudio after bootstrap
|
||||
echo "[lmstudio-install] Patching installed watcher.node copies..."
|
||||
find "${HOME}/.lmstudio" -name 'watcher.node' 2>/dev/null | while read -r node; do
|
||||
python3 "$PATCHER" "$node"
|
||||
done
|
||||
|
||||
echo "[lmstudio-install] Installation complete."
|
||||
Loading…
Add table
Add a link
Reference in a new issue