#!/bin/bash # scripts/install-programs.sh — 可扩展程序安装 (apt/pip/npm) set -e install_apt() { local pkgs="$1" [[ -z "$pkgs" ]] && return 0 echo "[install] APT packages: $pkgs" apt-get update -qq IFS=',' read -ra LIST <<< "$pkgs" for pkg in "${LIST[@]}"; do pkg="$(echo "$pkg" | xargs)" [[ -n "$pkg" ]] && apt-get install -y --no-install-recommends "$pkg" 2>/dev/null || echo " ⚠️ apt $pkg failed" done apt-get clean && rm -rf /var/lib/apt/lists/* } install_pip() { local pkgs="$1" [[ -z "$pkgs" ]] && return 0 echo "[install] PIP packages: $pkgs" IFS=',' read -ra LIST <<< "$pkgs" for pkg in "${LIST[@]}"; do pkg="$(echo "$pkg" | xargs)" [[ -n "$pkg" ]] && pip3 install --no-cache-dir --break-system-packages "$pkg" 2>/dev/null || echo " ⚠️ pip $pkg failed" done } install_npm() { local pkgs="$1" [[ -z "$pkgs" ]] && return 0 echo "[install] NPM global packages: $pkgs" IFS=',' read -ra LIST <<< "$pkgs" for pkg in "${LIST[@]}"; do pkg="$(echo "$pkg" | xargs)" [[ -n "$pkg" ]] && npm install -g "$pkg" --unsafe-perm 2>/dev/null || echo " ⚠️ npm $pkg failed" done } install_apt "${INSTALL_PROGRAMS_APT:-${INSTALL_PROGRAMS:-}}" install_pip "${INSTALL_PROGRAMS_PIP:-}" install_npm "${INSTALL_PROGRAMS_NPM:-}" echo "[install] All programs installed"