optimized installer
This commit is contained in:
+222
-8
@@ -2,43 +2,223 @@
|
||||
|
||||
set -e
|
||||
|
||||
# ============================================================
|
||||
# Linux Parental Control - Installer
|
||||
# ============================================================
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run with sudo"
|
||||
echo "Please run with sudo:"
|
||||
echo " sudo ./install.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
echo
|
||||
echo "=================================="
|
||||
echo "Linux Parental Control Installer"
|
||||
echo "=================================="
|
||||
echo
|
||||
echo "Installing from:"
|
||||
echo "$INSTALL_DIR"
|
||||
echo
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Detect Linux distribution
|
||||
# ============================================================
|
||||
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
else
|
||||
echo "ERROR: Cannot determine Linux distribution."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Detected:"
|
||||
echo " Distribution: ${PRETTY_NAME:-Unknown}"
|
||||
echo
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Detect package manager
|
||||
# ============================================================
|
||||
|
||||
PACKAGE_MANAGER=""
|
||||
|
||||
if command -v pacman >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="pacman"
|
||||
|
||||
elif command -v apt-get >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="apt"
|
||||
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="dnf"
|
||||
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="zypper"
|
||||
|
||||
elif command -v apk >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="apk"
|
||||
|
||||
elif command -v xbps-install >/dev/null 2>&1; then
|
||||
PACKAGE_MANAGER="xbps"
|
||||
|
||||
else
|
||||
echo "ERROR: Unsupported Linux distribution."
|
||||
echo
|
||||
echo "Supported package managers:"
|
||||
echo " pacman"
|
||||
echo " apt"
|
||||
echo " dnf"
|
||||
echo " zypper"
|
||||
echo " apk"
|
||||
echo " xbps"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Package manager:"
|
||||
echo " $PACKAGE_MANAGER"
|
||||
echo
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Check systemd
|
||||
# ============================================================
|
||||
|
||||
if ! command -v systemctl >/dev/null 2>&1; then
|
||||
echo "ERROR: systemd is required."
|
||||
echo
|
||||
echo "This installer installs a systemd service."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d /run/systemd/system ]; then
|
||||
echo "ERROR: systemd is not currently running."
|
||||
echo
|
||||
echo "This installer requires a running systemd system."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "systemd detected."
|
||||
echo
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Install system dependencies
|
||||
# ============================================================
|
||||
|
||||
echo "[1/5] Installing dependencies"
|
||||
|
||||
pacman -S --needed --noconfirm python python-pip
|
||||
case "$PACKAGE_MANAGER" in
|
||||
|
||||
pacman)
|
||||
pacman -Syu --needed --noconfirm \
|
||||
python \
|
||||
python-pip
|
||||
;;
|
||||
|
||||
apt)
|
||||
apt-get update
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-venv
|
||||
;;
|
||||
|
||||
dnf)
|
||||
dnf install -y \
|
||||
python3 \
|
||||
python3-pip
|
||||
;;
|
||||
|
||||
zypper)
|
||||
zypper --non-interactive install \
|
||||
python3 \
|
||||
python3-pip
|
||||
;;
|
||||
|
||||
apk)
|
||||
apk add \
|
||||
python3 \
|
||||
py3-pip \
|
||||
py3-virtualenv
|
||||
;;
|
||||
|
||||
xbps)
|
||||
xbps-install -Sy \
|
||||
python3 \
|
||||
python3-pip
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Verify Python
|
||||
# ============================================================
|
||||
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "ERROR: python3 was not installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PYTHON="$(command -v python3)"
|
||||
|
||||
echo
|
||||
echo "Python:"
|
||||
"$PYTHON" --version
|
||||
echo
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Create virtual environment
|
||||
# ============================================================
|
||||
|
||||
echo "[2/5] Creating virtual environment"
|
||||
|
||||
if [ ! -d "$INSTALL_DIR/.venv" ]; then
|
||||
python -m venv "$INSTALL_DIR/.venv"
|
||||
"$PYTHON" -m venv "$INSTALL_DIR/.venv"
|
||||
else
|
||||
echo "Virtual environment already exists."
|
||||
fi
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Install Python packages
|
||||
# ============================================================
|
||||
|
||||
echo
|
||||
echo "[3/5] Installing Python packages"
|
||||
|
||||
"$INSTALL_DIR/.venv/bin/pip" install -r "$INSTALL_DIR/requirements.txt"
|
||||
"$INSTALL_DIR/.venv/bin/python" -m pip install \
|
||||
--upgrade pip
|
||||
|
||||
"$INSTALL_DIR/.venv/bin/python" -m pip install \
|
||||
-r "$INSTALL_DIR/requirements.txt"
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Install systemd service
|
||||
# ============================================================
|
||||
|
||||
echo
|
||||
echo "[4/5] Installing systemd service"
|
||||
|
||||
SERVICE_FILE="/etc/systemd/system/parental-control.service"
|
||||
|
||||
sed \
|
||||
"s|%INSTALL_DIR%|$INSTALL_DIR|g" \
|
||||
"$INSTALL_DIR/parental-control.service" \
|
||||
> /etc/systemd/system/parental-control.service
|
||||
> "$SERVICE_FILE"
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Enable and start service
|
||||
# ============================================================
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
systemctl enable parental-control.service
|
||||
@@ -46,13 +226,47 @@ systemctl enable parental-control.service
|
||||
systemctl restart parental-control.service
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Verify service
|
||||
# ============================================================
|
||||
|
||||
echo
|
||||
echo "[5/5] Verifying installation"
|
||||
|
||||
if systemctl is-active --quiet parental-control.service; then
|
||||
SERVICE_STATUS="running"
|
||||
else
|
||||
SERVICE_STATUS="FAILED"
|
||||
fi
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Result
|
||||
# ============================================================
|
||||
|
||||
echo
|
||||
echo "=================================="
|
||||
echo "Parental Control installed"
|
||||
echo "=================================="
|
||||
echo
|
||||
echo "Distribution:"
|
||||
echo " ${PRETTY_NAME:-Unknown}"
|
||||
echo
|
||||
echo "Python:"
|
||||
"$INSTALL_DIR/.venv/bin/python" --version
|
||||
echo
|
||||
echo "Installation directory:"
|
||||
echo " $INSTALL_DIR"
|
||||
echo
|
||||
echo "Service:"
|
||||
echo " $SERVICE_STATUS"
|
||||
echo
|
||||
echo "Admin panel:"
|
||||
echo " http://127.0.0.1:8765/admin"
|
||||
echo
|
||||
echo "Service status:"
|
||||
echo "systemctl status parental-control"
|
||||
echo "Service commands:"
|
||||
echo " sudo systemctl status parental-control"
|
||||
echo " sudo systemctl restart parental-control"
|
||||
echo " sudo journalctl -u parental-control -f"
|
||||
echo
|
||||
echo "=================================="
|
||||
|
||||
Reference in New Issue
Block a user