From bd32c5163a076a8e586ddab5644188575525cc27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E5=85=89-k?= <36470587+kxgx@users.noreply.github.com> Date: Thu, 9 Jan 2025 21:50:31 +0800 Subject: [PATCH] Update install.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化运行逻辑 --- bin/install.sh | 158 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 110 insertions(+), 48 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index d4d487f..c145665 100644 --- a/bin/install.sh +++ b/bin/install.sh @@ -6,8 +6,47 @@ if [ "$EUID" -ne 0 ]; then exit 1 fi -# 语言环境设置 -DEFAULT_LANG="en_GB.UTF-8" +# 默认语言环境 +DEFAULT_LANG="en_US.UTF-8" +# 检查是否使用中国镜像源 +USE_CN_MIRROR=false +# 控制调试输出 +DEBUG=false + +# 解析命令行参数 +for arg in "$@" +do + case $arg in + --cn) + USE_CN_MIRROR=true + shift # 移除当前参数 + ;; + --debug) + DEBUG=true + shift # 移除当前参数 + ;; + *) + # 未知参数,可以在这里处理错误或忽略 + ;; + esac +done + +# 系统语言环境设置 +echo "请选择系统语言环境:" +echo "1. 中文 (zh_CN.UTF-8)" +echo "2. 英文 (en_US.UTF-8)" +read -p "输入选项 (1/2): " lang_choice +case $lang_choice in + 1) + DEFAULT_LANG="zh_CN.UTF-8" + ;; + 2) + DEFAULT_LANG="en_US.UTF-8" + ;; + *) + echo "无效的选项,将使用默认系统语言环境: $DEFAULT_LANG" + ;; +esac export LANG=$DEFAULT_LANG export LC_ALL=$DEFAULT_LANG echo "$DEFAULT_LANG UTF-8" >> /etc/locale.gen @@ -25,54 +64,77 @@ else fi # 定义链接变量 -DEBIAN_MIRROR="https://mirrors.cernet.edu.cn/debian/" -DEBIAN_SECURITY_MIRROR="https://mirrors.cernet.edu.cn/debian-security" +DEBIAN_MIRROR="http://deb.debian.org/debian/" +DEBIAN_SECURITY_MIRROR="http://security.debian.org/" PI_SUGAR_POWER_MANAGER_URL="https://cdn.pisugar.com/release/pisugar-power-manager.sh" INK_SCREEN_CLOCK_REPO_URL="https://gitee.com/xingguangk/2.13-Ink-screen-clock.git" -PIPY_MIRROR="https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple" +PIPY_MIRROR="https://pypi.org/simple" -# Debian 11 (Bullseye) 相关命令 -UPDATE_SOURCES_LIST_BULLSEYE="sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak && sudo cat <<'EOF' > /etc/apt/sources.list -deb $DEBIAN_MIRROR bullseye main contrib non-free -# deb-src $DEBIAN_MIRROR bullseye main contrib non-free +# 如果使用中国镜像源,则更新链接变量 +if [ "$USE_CN_MIRROR" = true ]; then + DEBIAN_MIRROR="https://mirrors.cernet.edu.cn/debian/" + DEBIAN_SECURITY_MIRROR="https://mirrors.cernet.edu.cn/debian-security" + PIPY_MIRROR="https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple" +fi -deb $DEBIAN_MIRROR bullseye-updates main contrib non-free -# deb-src $DEBIAN_MIRROR bullseye-updates main contrib non-free +# 更新源列表函数 +update_sources_list() { + local version=$1 + if [ "$DEBUG" = true ]; then + echo "正在更新版本 $version 的源列表" + fi + sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak + sudo bash -c "cat < /etc/apt/sources.list +deb $DEBIAN_MIRROR $version main contrib non-free +# deb-src $DEBIAN_MIRROR $version main contrib non-free -deb $DEBIAN_MIRROR bullseye-backports main contrib non-free -# deb-src $DEBIAN_MIRROR bullseye-backports main contrib non-free +deb $DEBIAN_MIRROR $version-updates main contrib non-free +# deb-src $DEBIAN_MIRROR $version-updates main contrib non-free -deb $DEBIAN_SECURITY_MIRROR bullseye-security main contrib non-free -# deb-src $DEBIAN_SECURITY_MIRROR bullseye-security main contrib non-free +deb $DEBIAN_MIRROR $version-backports main contrib non-free +# deb-src $DEBIAN_MIRROR $version-backports main contrib non-free + +deb $DEBIAN_SECURITY_MIRROR $version-security main contrib non-free +# deb-src $DEBIAN_SECURITY_MIRROR $version-security main contrib non-free EOF" -INSTALL_PACKAGES_BULLSEYE="sudo apt-get update && sudo apt-get install -y git pigpio raspi-config netcat gawk python3-dev python3-pip python3-pil python3-numpy python3-gpiozero python3-pigpio build-essential" -INSTALL_PIP_PACKAGES_BULLSEYE="sudo pip3 install -i $PIPY_MIRROR spidev borax pillow requests --break-system-packages" -DOWNLOAD_AND_EXECUTE_BULLSEYE="wget $PI_SUGAR_POWER_MANAGER_URL && bash pisugar-power-manager.sh -c release" -CLONE_AND_EXECUTE_BULLSEYE="cd ~ && git clone $INK_SCREEN_CLOCK_REPO_URL && cd ~/2.13-Ink-screen-clock/bin/ && sudo chmod +x start.sh && sudo ./start.sh" +} -# Debian 12 (Bookworm) 相关命令 -UPDATE_SOURCES_LIST_BOOKWORM="sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak && sudo cat <<'EOF' > /etc/apt/sources.list -deb $DEBIAN_MIRROR bookworm main contrib non-free non-free-firmware -# deb-src $DEBIAN_MIRROR bookworm main contrib non-free non-free-firmware +# 安装包函数 +install_packages() { + if [ "$DEBUG" = true ]; then + echo "正在安装软件包..." + fi + sudo apt-get update && sudo apt-get install -y git pigpio raspi-config netcat gawk python3-dev python3-pip python3-pil python3-numpy python3-gpiozero python3-pigpio build-essential +} -deb $DEBIAN_MIRROR bookworm-updates main contrib non-free non-free-firmware -# deb-src $DEBIAN_MIRROR bookworm-updates main contrib non-free non-free-firmware +# 安装pip包函数 +install_pip_packages() { + if [ "$DEBUG" = true ]; then + echo "正在安装pip软件包..." + fi + sudo pip3 install -i $PIPY_MIRROR spidev borax pillow requests --break-system-packages +} -deb $DEBIAN_MIRROR bookworm-backports main contrib non-free non-free-firmware -# deb-src $DEBIAN_MIRROR bookworm-backports main contrib non-free non-free-firmware +# 下载并执行脚本函数 +download_and_execute() { + if [ "$DEBUG" = true ]; then + echo "正在下载并执行pisugar电源管理脚本..." + fi + wget $PI_SUGAR_POWER_MANAGER_URL && bash pisugar-power-manager.sh -c release +} -deb $DEBIAN_SECURITY_MIRROR bookworm-security main contrib non-free non-free-firmware -# deb-src $DEBIAN_SECURITY_MIRROR bookworm-security main contrib non-free non-free-firmware -EOF" -INSTALL_PACKAGES_BOOKWORM="sudo apt-get update && sudo apt-get install -y git pigpio raspi-config netcat gawk python3-dev python3-pip python3-pil python3-numpy python3-gpiozero python3-pigpio build-essential" -INSTALL_PIP_PACKAGES_BOOKWORM="sudo pip3 install -i $PIPY_MIRROR spidev borax pillow requests --break-system-packages" -DOWNLOAD_AND_EXECUTE_BOOKWORM="wget $PI_SUGAR_POWER_MANAGER_URL && bash pisugar-power-manager.sh -c release" -CLONE_AND_EXECUTE_BOOKWORM="cd ~ && git clone $INK_SCREEN_CLOCK_REPO_URL && cd ~/2.13-Ink-screen-clock/bin/ && sudo chmod +x start.sh && sudo ./start.sh" +# 克隆并执行脚本函数 +clone_and_execute() { +if [ "$DEBUG" = true ]; then + echo "正在克隆并执行墨水屏时钟仓库..." + fi + cd ~ && git clone $INK_SCREEN_CLOCK_REPO_URL && cd ~/2.13-Ink-screen-clock/bin/ && sudo chmod +x start.sh && sudo ./start.sh +} # 主逻辑 # 检测是否是Debian系统 if [ -f /etc/debian_version ]; then - echo "检测到Debian系统。" + echo "检测到Debian系统" # 提取版本号的小数点前的部分 MAJOR_VERSION=$(echo $DEBIAN_VERSION | cut -d '.' -f 1) @@ -85,19 +147,19 @@ if [ -f /etc/debian_version ]; then case "$MAJOR_VERSION" in 11) echo "执行Debian 11 (Bullseye) 相关操作" - eval $UPDATE_SOURCES_LIST_BULLSEYE - eval $INSTALL_PACKAGES_BULLSEYE - eval $INSTALL_PIP_PACKAGES_BULLSEYE - eval $DOWNLOAD_AND_EXECUTE_BULLSEYE - eval $CLONE_AND_EXECUTE_BULLSEYE + update_sources_list "bullseye" + install_packages + install_pip_packages + download_and_execute + clone_and_execute ;; 12) echo "执行Debian 12 (Bookworm) 相关操作" - eval $UPDATE_SOURCES_LIST_BOOKWORM - eval $INSTALL_PACKAGES_BOOKWORM - eval $INSTALL_PIP_PACKAGES_BOOKWORM - eval $DOWNLOAD_AND_EXECUTE_BOOKWORM - eval $CLONE_AND_EXECUTE_BOOKWORM + update_sources_list "bookworm" + install_packages + install_pip_packages + download_and_execute + clone_and_execute ;; *) echo "未知的Debian版本: $MAJOR_VERSION" @@ -105,10 +167,10 @@ if [ -f /etc/debian_version ]; then ;; esac else - echo "这不是Raspberry Pi系统。" + echo "这不是Raspberry Pi系统" exit 0 fi else - echo "这不是一个Debian系统。" + echo "这不是Debian系统" exit 0 -fi \ No newline at end of file +fi