首次提交
This commit is contained in:
48
scripts/build_bundle.sh
Normal file
48
scripts/build_bundle.sh
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# 一键构建离线部署包(在【能联网】的打包机上跑)
|
||||
#
|
||||
# setup_server.sh(装环境) → make_portable.sh(自包含) → pack.sh(打包) 三步合一
|
||||
#
|
||||
# 用法:
|
||||
# bash build_bundle.sh cpu # CPU 版包:johnvansickle ffmpeg,老 glibc 也能跑
|
||||
# bash build_bundle.sh gpu # GPU 版包:BtbN cuda ffmpeg,目标机需 glibc>=2.28
|
||||
# bash build_bundle.sh gpu --whisper-gpu # GPU 版 + 把 CUDA 库打进包(目标机无系统 CUDA 也能 whisper GPU)
|
||||
#
|
||||
# 产物: /tmp/ocr_offline_bundle.tar.gz
|
||||
# 拷到目标机后: bash deploy.sh /tmp/ocr_offline_bundle.tar.gz /opt
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
VARIANT="${1:-cpu}" # cpu | gpu
|
||||
WHISPER_GPU_FLAG=0
|
||||
[ "${2:-}" = "--whisper-gpu" ] && WHISPER_GPU_FLAG=1
|
||||
|
||||
log() { echo -e "\n\033[1;36m##### $* #####\033[0m"; }
|
||||
|
||||
case "$VARIANT" in
|
||||
cpu) FFV=cpu ;;
|
||||
gpu) FFV=gpu ;;
|
||||
*) echo "用法: bash build_bundle.sh [cpu|gpu] [--whisper-gpu]"; exit 1 ;;
|
||||
esac
|
||||
|
||||
SD="$(cd "$(dirname "$0")" && pwd)"
|
||||
log "构建 $VARIANT 版离线包 (whisper_gpu=$WHISPER_GPU_FLAG)"
|
||||
|
||||
# 1) 装基础环境(已装过会跳过大部分)
|
||||
log "1/3 setup_server.sh(装 gcc/uv/python/依赖)"
|
||||
bash "$SD/setup_server.sh"
|
||||
|
||||
# 2) 转自包含(python+模型+ffmpeg 进项目)
|
||||
log "2/3 make_portable.sh(FFMPEG_VARIANT=$FFV)"
|
||||
FFMPEG_VARIANT="$FFV" WHISPER_GPU="$WHISPER_GPU_FLAG" bash "$SD/make_portable.sh"
|
||||
|
||||
# 3) 打包(按变体命名,cpu/gpu 两个包不会互相覆盖)
|
||||
OUT="/tmp/ocr_bundle_${VARIANT}.tar.gz"
|
||||
log "3/3 pack.sh(打成 tar → $OUT)"
|
||||
bash "$SD/pack.sh" "$OUT"
|
||||
|
||||
echo
|
||||
echo "✅ 完成。产物: $OUT"
|
||||
echo " 拷到目标机后: bash $SD/deploy.sh $OUT /opt"
|
||||
Reference in New Issue
Block a user