83 lines
2.5 KiB
Bash
83 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
log() { echo "[$(date +'%F %T')] $*"; }
|
|
die() { log "ERROR: $*"; exit 1; }
|
|
need_cmd() { command -v "$1" >/dev/null 2>&1; }
|
|
|
|
missing=()
|
|
if ! need_cmd 7z; then
|
|
missing+=("7z")
|
|
fi
|
|
if ! need_cmd curl && ! need_cmd wget; then
|
|
missing+=("curl/wget")
|
|
fi
|
|
if ! need_cmd rsync; then
|
|
missing+=("rsync")
|
|
fi
|
|
if ! need_cmd jq; then
|
|
missing+=("jq")
|
|
fi
|
|
if ! need_cmd java; then
|
|
missing+=("java")
|
|
fi
|
|
|
|
if [ "${#missing[@]}" -eq 0 ]; then
|
|
log "All dependencies already satisfied."
|
|
exit 0
|
|
fi
|
|
|
|
log "Missing dependencies detected: ${missing[*]}"
|
|
|
|
SUDO=""
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
if need_cmd sudo; then
|
|
SUDO="sudo"
|
|
else
|
|
die "Root privileges are required to install dependencies (sudo not found)."
|
|
fi
|
|
fi
|
|
|
|
if need_cmd apt-get; then
|
|
${SUDO} apt-get update
|
|
${SUDO} apt-get install -y curl wget jq rsync p7zip-full python3
|
|
log "Installing Java runtime (trying OpenJDK 11, 17, then default-jre)..."
|
|
if ! ${SUDO} apt-get install -y openjdk-11-jre-headless; then
|
|
if ! ${SUDO} apt-get install -y openjdk-17-jre-headless; then
|
|
if ! ${SUDO} apt-get install -y default-jre-headless; then
|
|
${SUDO} apt-get install -y default-jre
|
|
fi
|
|
fi
|
|
fi
|
|
elif need_cmd apt; then
|
|
${SUDO} apt update
|
|
${SUDO} apt install -y curl wget jq rsync p7zip-full python3
|
|
log "Installing Java runtime (trying OpenJDK 11, 17, then default-jre)..."
|
|
if ! ${SUDO} apt install -y openjdk-11-jre-headless; then
|
|
if ! ${SUDO} apt install -y openjdk-17-jre-headless; then
|
|
if ! ${SUDO} apt install -y default-jre-headless; then
|
|
${SUDO} apt install -y default-jre
|
|
fi
|
|
fi
|
|
fi
|
|
elif need_cmd dnf; then
|
|
${SUDO} dnf install -y curl wget jq rsync p7zip p7zip-plugins python3 java-11-openjdk-headless
|
|
elif need_cmd yum; then
|
|
${SUDO} yum install -y curl wget jq rsync p7zip p7zip-plugins python3 java-11-openjdk-headless
|
|
elif need_cmd pacman; then
|
|
${SUDO} pacman -Sy --noconfirm curl wget jq rsync p7zip python jre11-openjdk
|
|
elif need_cmd apk; then
|
|
${SUDO} apk add --no-cache curl wget jq rsync p7zip python3 openjdk11-jre
|
|
elif need_cmd zypper; then
|
|
${SUDO} zypper install -y curl wget jq rsync p7zip python3 java-11-openjdk
|
|
else
|
|
die "No supported package manager found. Please install curl/wget, 7z, rsync, jq, and Java manually."
|
|
fi
|
|
|
|
if ! need_cmd 7z || ( ! need_cmd curl && ! need_cmd wget ) || ! need_cmd rsync || ! need_cmd jq || ! need_cmd java; then
|
|
die "Dependencies are still missing after install attempt. Please install manually."
|
|
fi
|
|
|
|
log "Dependencies installed successfully."
|