fix(bundle): Ollama v0.5.7 → v0.32.1 — gemma4:e4b pull 412 해소
Some checks failed
Build macOS / Build & Package (macOS) (push) Failing after 5s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s

- 번들 v0.5.7이 gemma4 요구(0.20+) 미달 → 온보딩 다운로드 412 실패
- 다운로드 스크립트: .ollama-version 스탬프로 runner 캐시 무효화
- cuda*/rocm* 재귀 가지치기 (신구 zip 레이아웃 모두 대응) + 1.5GB 경고
- darwin: v0.6+ tgz 자산 복귀 (bin/ollama·루트 바이너리 모두 지원)
This commit is contained in:
Yun Chan 2026-07-21 16:32:58 +09:00
parent b73317d584
commit 4fb1738160
4 changed files with 64 additions and 26 deletions

View file

@ -5,17 +5,18 @@
set -euo pipefail
OLLAMA_VERSION="${OLLAMA_VERSION:-v0.5.7}"
OLLAMA_VERSION="${OLLAMA_VERSION:-v0.32.1}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DEST_DIR="$SCRIPT_DIR/../resources/ollama"
VERSION_STAMP="$DEST_DIR/.ollama-version"
OS="$(uname -s)"
ARCH="$(uname -m)"
case "$OS" in
Darwin)
# macOS는 단일 바이너리 asset (v0.5.x 기준 tgz 없음 — GitHub API로 확인)
ASSET="ollama-darwin"
# v0.6+ 기준 tgz 제공 (metal 포함, ~145MB). v0.5.x는 단일 바이너리였음.
ASSET="ollama-darwin.tgz"
;;
Linux)
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
@ -34,13 +35,20 @@ URL="https://github.com/ollama/ollama/releases/download/${OLLAMA_VERSION}/${ASSE
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
mkdir -p "$DEST_DIR"
# 버전 스탬프 캐시 무효화 — runner가 checkout 디렉토리를 재사용하므로
# 구버전 번들이 남아있으면 갈아엎는다.
if [ -f "$DEST_DIR/ollama" ]; then
echo "Ollama가 이미 존재합니다: $DEST_DIR/ollama"
exit 0
STAMPED="$(cat "$VERSION_STAMP" 2>/dev/null || echo '')"
if [ "$STAMPED" = "$OLLAMA_VERSION" ]; then
echo "Ollama ${OLLAMA_VERSION}가 이미 존재합니다: $DEST_DIR/ollama"
exit 0
fi
echo "캐시된 Ollama 버전('$STAMPED') != '$OLLAMA_VERSION' — 재다운로드"
rm -rf "$DEST_DIR"
fi
mkdir -p "$DEST_DIR"
echo "=== Ollama ${OLLAMA_VERSION} ${OS} ${ARCH} 다운로드 ==="
echo "URL: $URL"
@ -49,21 +57,29 @@ curl -L --fail --retry 3 -o "$TMP/$ASSET" "$URL"
case "$ASSET" in
*.tgz)
tar -xzf "$TMP/$ASSET" -C "$TMP"
# tgz 구조: bin/ollama + lib/ (ROCm/CUDA 등). 필요한 것만 복사.
# tgz 구조는 버전에 따라 bin/ollama 또는 루트 ollama — 둘 다 지원
if [ -f "$TMP/bin/ollama" ]; then
cp "$TMP/bin/ollama" "$DEST_DIR/ollama"
chmod +x "$DEST_DIR/ollama"
elif [ -f "$TMP/ollama" ]; then
cp "$TMP/ollama" "$DEST_DIR/ollama"
else
echo "ERROR: tgz 안에서 ollama 바이너리를 찾지 못했습니다" >&2
find "$TMP" -maxdepth 2 -type f | head -20 >&2
exit 1
fi
# 라이브러리 동봉(CUDA/ROCm 런타임용)
chmod +x "$DEST_DIR/ollama"
# 라이브러리 동봉 (linux: CUDA/ROCm은 용량 문제로 제외, darwin: metal 등 유지)
if [ -d "$TMP/lib" ]; then
cp -R "$TMP/lib" "$DEST_DIR/"
find "$DEST_DIR/lib" -maxdepth 3 -type d \( -name "cuda*" -o -name "rocm*" \) -exec rm -rf {} + 2>/dev/null || true
fi
;;
*)
# darwin: 단일 실행 바이너리
# 단일 실행 바이너리 asset
cp "$TMP/$ASSET" "$DEST_DIR/ollama"
chmod +x "$DEST_DIR/ollama"
;;
esac
echo "Ollama 설치 완료: $DEST_DIR"
echo "$OLLAMA_VERSION" > "$VERSION_STAMP"
echo "Ollama ${OLLAMA_VERSION} 설치 완료: $DEST_DIR ($(du -sh "$DEST_DIR" | cut -f1))"