Baseline: pr1 HYC下载站 v2.3 before security/functional fixes
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# HYC下载站 v2.3 - 系统兼容性检查脚本
|
||||
# 支持: X86_32, X86_64, ARMv7, ARM64, MIPS 等
|
||||
# ============================================
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo "========================================"
|
||||
echo " HYC下载站 v2.3 - 兼容性检查"
|
||||
echo "========================================"
|
||||
echo
|
||||
|
||||
# 检测架构
|
||||
ARCH=$(uname -m)
|
||||
OS=$(uname -s)
|
||||
echo "系统信息:"
|
||||
echo " - 架构: $ARCH"
|
||||
echo " - 系统: $OS"
|
||||
echo
|
||||
|
||||
# 架构特定配置
|
||||
case "$ARCH" in
|
||||
x86_64)
|
||||
echo "✓ x86_64 (64位) - 完全支持"
|
||||
RECOMMENDED_WORKERS=4
|
||||
;;
|
||||
i386|i686)
|
||||
echo "⚠ i386/i686 (32位) - 有限支持"
|
||||
RECOMMENDED_WORKERS=2
|
||||
echo " 建议: --workers 2"
|
||||
;;
|
||||
armv7l|armv7hl)
|
||||
echo "✓ ARMv7 (32位) - 完全支持"
|
||||
RECOMMENDED_WORKERS=2
|
||||
;;
|
||||
armv8l|aarch64)
|
||||
echo "✓ ARM64 (64位) - 完全支持"
|
||||
RECOMMENDED_WORKERS=4
|
||||
;;
|
||||
armv6l)
|
||||
echo "⚠ ARMv6 - 有限支持 (可能需要重新编译)"
|
||||
RECOMMENDED_WORKERS=1
|
||||
;;
|
||||
mips*)
|
||||
echo "⚠ MIPS - 实验性支持"
|
||||
RECOMMENDED_WORKERS=1
|
||||
;;
|
||||
*)
|
||||
echo "⚠ 未知架构: $ARCH - 需要测试"
|
||||
RECOMMENDED_WORKERS=1
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
|
||||
# Python 版本检查
|
||||
PYTHON_VERSION=$(python3 --version 2>&1 || echo "未安装")
|
||||
echo "Python 版本: $PYTHON_VERSION"
|
||||
|
||||
PYTHON_MAJOR=$(python3 -c 'import sys; print(sys.version_info.major)' 2>/dev/null || echo "0")
|
||||
PYTHON_MINOR=$(python3 -c 'import sys; print(sys.version_info.minor)' 2>/dev/null || echo "0")
|
||||
|
||||
if [ "$PYTHON_MAJOR" -ge 3 ] && [ "$PYTHON_MINOR" -ge 8 ]; then
|
||||
echo "✓ Python 3.8+ - 支持"
|
||||
else
|
||||
echo "✗ 需要 Python 3.8 或更高版本"
|
||||
exit 1
|
||||
fi
|
||||
echo
|
||||
|
||||
# 内存检查
|
||||
echo "内存检查:"
|
||||
if command -v free &> /dev/null; then
|
||||
TOTAL_MEM=$(free -m | awk '/^Mem:/{print $2}')
|
||||
echo " - 总内存: ${TOTAL_MEM}MB"
|
||||
|
||||
if [ "$TOTAL_MEM" -lt 256 ]; then
|
||||
echo "⚠ 内存低于 256MB - 使用 ultra_low 预设"
|
||||
echo " python main.py --preset ultra_low"
|
||||
elif [ "$TOTAL_MEM" -lt 512 ]; then
|
||||
echo "⚠ 内存 256-512MB - 使用 low 预设"
|
||||
echo " python main.py --preset low"
|
||||
elif [ "$TOTAL_MEM" -lt 1024 ]; then
|
||||
echo "✓ 内存 512MB-1GB - 使用 medium 预设 (默认)"
|
||||
else
|
||||
echo "✓ 内存 1GB+ - 使用 high 预设 (默认)"
|
||||
fi
|
||||
else
|
||||
echo " (无法检测,使用默认配置)"
|
||||
fi
|
||||
echo
|
||||
|
||||
# 磁盘空间检查
|
||||
echo "磁盘空间检查:"
|
||||
DISK_FREE=$(df -BG . | awk '/^\//{print $4}' | sed 's/G//')
|
||||
echo " - 可用: ${DISK_FREE}GB"
|
||||
|
||||
if [ "$DISK_FREE" -lt 1 ]; then
|
||||
echo "⚠ 可用空间不足 1GB"
|
||||
fi
|
||||
echo
|
||||
|
||||
# 必需依赖检查
|
||||
echo "必需依赖检查:"
|
||||
MISSING_DEPS=""
|
||||
|
||||
check_dep() {
|
||||
if command -v "$1" &> /dev/null; then
|
||||
echo " ✓ $1"
|
||||
else
|
||||
echo " ✗ $1 (必需)"
|
||||
MISSING_DEPS="$MISSING_DEPS $1"
|
||||
fi
|
||||
}
|
||||
|
||||
check_dep "python3"
|
||||
echo
|
||||
|
||||
# 可选依赖检查
|
||||
echo "可选依赖检查:"
|
||||
check_opt() {
|
||||
if command -v "$1" &> /dev/null; then
|
||||
echo " ✓ $1"
|
||||
else
|
||||
echo " ⚠ $1 (可选)"
|
||||
fi
|
||||
}
|
||||
|
||||
check_opt "psutil" || pip3 install psutil
|
||||
check_opt "sqlalchemy" || pip3 install sqlalchemy
|
||||
echo
|
||||
|
||||
# Docker 构建检查 (如果使用 Docker)
|
||||
if [ -f "../Dockerfile" ]; then
|
||||
echo "Docker 构建检查:"
|
||||
if command -v docker &> /dev/null; then
|
||||
echo " ✓ Docker 可用"
|
||||
|
||||
# 检查 buildx 支持
|
||||
if docker buildx version &> /dev/null; then
|
||||
echo " ✓ Docker BuildX 支持多架构构建"
|
||||
echo
|
||||
echo "多架构构建命令:"
|
||||
echo " docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t hyc:v2.3 ."
|
||||
fi
|
||||
else
|
||||
echo " ⚠ Docker 不可用 (需要安装 Docker)"
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
|
||||
# 推荐启动命令
|
||||
echo "========================================"
|
||||
echo " 推荐启动命令"
|
||||
echo "========================================"
|
||||
|
||||
# 根据检测结果生成推荐命令
|
||||
CMD="python main.py --preset "
|
||||
|
||||
if [ "$TOTAL_MEM" -lt 256 ]; then
|
||||
CMD="${CMD}ultra_low"
|
||||
elif [ "$TOTAL_MEM" -lt 512 ]; then
|
||||
CMD="${CMD}low"
|
||||
elif [ "$TOTAL_MEM" -lt 1024 ]; then
|
||||
CMD="${CMD}medium"
|
||||
else
|
||||
CMD="${CMD}high"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "$CMD"
|
||||
echo
|
||||
|
||||
# 完整命令示例
|
||||
echo "完整示例:"
|
||||
echo " $CMD --host 0.0.0.0 --port 8080 --base-dir ./downloads"
|
||||
echo
|
||||
Reference in New Issue
Block a user