From 05455e303a1947c996c6da51d4d4f4af6136aa6e Mon Sep 17 00:00:00 2001 From: BluTiger <65156144+Blu-Tiger@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:38:07 +0200 Subject: [PATCH] Update unix_install.sh, conversione da bash a sh, supporto bsd --- unix_install.sh | 164 ++++++++++++++++++++++++------------------------ 1 file changed, 83 insertions(+), 81 deletions(-) diff --git a/unix_install.sh b/unix_install.sh index 3597e22..a595cff 100644 --- a/unix_install.sh +++ b/unix_install.sh @@ -1,49 +1,50 @@ -#!/bin/bash +#!/bin/sh # Function to check if a command exists command_exists() { - command -v "$1" &> /dev/null + command -v "$1" > /dev/null 2>&1 } # Install on Debian/Ubuntu-based systems install_on_debian() { echo "Installing $1..." sudo apt update - sudo apt install -y $1 + sudo apt install -y "$1" } # Install on Red Hat/CentOS/Fedora-based systems install_on_redhat() { echo "Installing $1..." - sudo yum install -y $1 + sudo yum install -y "$1" } # Install on Arch-based systems install_on_arch() { echo "Installing $1..." - sudo pacman -Sy --noconfirm $1 + sudo pacman -Sy --noconfirm "$1" } # Install on BSD-based systems install_on_bsd() { echo "Installing $1..." - env ASSUME_ALWAYS_YES=yes pkg install -y $1 + env ASSUME_ALWAYS_YES=yes sudo pkg install -y "$1" } # Install on macOS install_on_macos() { echo "Installing $1..." if command_exists brew; then - brew install $1 + brew install "$1" else echo "Homebrew is not installed. Installing Homebrew first..." /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - brew install $1 + brew install "$1" fi } set -e + # Check and install Python3 # if command_exists python3 > /dev/null 2>&1; then # echo "Checking Python..." @@ -78,7 +79,7 @@ PYTHON_VERSION=$(python3 -c 'import sys; print(".".join(map(str, sys.version_inf # Compare the Python version with 3.8 REQUIRED_VERSION="3.8" -if [[ $(echo -e "$PYTHON_VERSION\n$REQUIRED_VERSION" | sort -V | head -n1) == "$REQUIRED_VERSION" ]]; then +if [ "$(echo -e "$PYTHON_VERSION\n$REQUIRED_VERSION" | sort -V | head -n1)" = "$REQUIRED_VERSION" ]; then echo "Python version $PYTHON_VERSION is >= $REQUIRED_VERSION. Continuing..." else echo "ERROR: Python version $PYTHON_VERSION is < $REQUIRED_VERSION. Exiting..." @@ -86,113 +87,114 @@ else fi if [ -d ".venv/" ]; then - echo ".venv exists. Installing requirements.txt. ..." + echo ".venv exists. Installing requirements.txt..." .venv/bin/pip install -r requirements.txt else - echo "Making .venv and installing requirements.txt. ..." - if [[ "$OSTYPE" == "linux-gnu"* ]]; then - # Detect the package manager + echo "Making .venv and installing requirements.txt..." + + if [ "$(uname)" = "Linux" ]; then + # Detect the package manager for venv installation check. if command_exists apt; then echo "Detected Debian-based system. Checking python3-venv." if dpkg -l | grep -q "python3-venv"; then - echo "python3-venv found." + echo "python3-venv found." else echo "python3-venv not found, installing..." install_on_debian "python3-venv" fi fi fi + python3 -m venv .venv .venv/bin/pip install -r requirements.txt fi -if command_exists ffmpeg > /dev/null 2>&1; then +if command_exists ffmpeg; then echo "ffmpeg exists." else - echo "ffmpeg does no exists." - # Detect the platform and install ffmpeg accordingly - if [[ "$OSTYPE" == "linux-gnu"* ]]; then - # Detect the package manager - if command_exists apt; then - echo "Detected Debian-based system." - install_on_debian "ffmpeg" - elif command_exists yum; then - echo "Detected Red Hat-based system." - echo "Installing needed repos for ffmpeg..." - echo "Enabling crb..." - sudo yum config-manager --set-enabled crb > /dev/null 2>&1 - echo "crb enabled." - echo "Installig epel..." - sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-$(rpm -E %rhel).noarch.rpm > /dev/null 2>&1 - echo "epel installed." - echo "Adding ffmpeg repos..." - sudo yum install -y --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm > /dev/null 2>&1 - echo "ffmpeg repos added." - install_on_redhat "ffmpeg" - elif command_exists pacman; then - echo "Detected Arch-based system." - install_on_arch "ffmpeg" - else - echo "Unsupported Linux distribution." + echo "ffmpeg does not exist." + + # Detect the platform and install ffmpeg accordingly. + case "$(uname)" in + Linux) + if command_exists apt; then + echo "Detected Debian-based system." + install_on_debian "ffmpeg" + elif command_exists yum; then + echo "Detected Red Hat-based system." + echo "Installing needed repos for ffmpeg..." + sudo yum config-manager --set-enabled crb > /dev/null 2>&1 || true + sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-$(rpm -E %rhel).noarch.rpm > /dev/null 2>&1 || true + sudo yum install -y --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm > /dev/null 2>&1 || true + install_on_redhat "ffmpeg" + elif command_exists pacman; then + echo "Detected Arch-based system." + install_on_arch "ffmpeg" + else + echo "Unsupported Linux distribution." + exit 1 + fi + ;; + FreeBSD|NetBSD|OpenBSD) + echo "Detected BSD-based system." + install_on_bsd "ffmpeg" + ;; + Darwin) + echo "Detected macOS." + install_on_macos "ffmpeg" + ;; + *) + echo "Unsupported operating system." exit 1 - fi - elif [[ "$OSTYPE" == "bsd"* ]]; then - echo "Detected BSD-based system." - install_on_bsd "ffmpeg" - elif [[ "$OSTYPE" == "darwin"* ]]; then - echo "Detected macOS." - install_on_macos "ffmpeg" - else - echo "Unsupported operating system." - exit 1 - fi + ;; + esac fi -if command_exists openssl > /dev/null 2>&1 || .venv/bin/pip list | grep -q "pycryptodome"; then +if command_exists openssl || .venv/bin/pip list | grep -q pycryptodome; then echo "openssl or pycryptodome exists." else echo "Please choose an option:" echo "1) openssl" echo "2) pycryptodome" read -p "Enter your choice (1): " choice - case $choice in + + case "$choice" in 2) echo "Installing pycryptodome." .venv/bin/pip install pycryptodome ;; *) - # Detect the platform and install OpenSSL accordingly - if [[ "$OSTYPE" == "linux-gnu"* ]]; then - # Detect the package manager - if command_exists apt; then - echo "Detected Debian-based system." - install_on_debian "openssl" - elif command_exists yum; then - echo "Detected Red Hat-based system." - install_on_redhat "openssl" - elif command_exists pacman; then - echo "Detected Arch-based system." - install_on_arch "openssl" - else - echo "Unsupported Linux distribution." + # Detect the platform and install OpenSSL accordingly. + case "$(uname)" in + Linux) + if command_exists apt; then + install_on_debian openssl + elif command_exists yum; then + install_on_redhat openssl + elif command_exists pacman; then + install_on_arch openssl + else + echo "Unsupported Linux distribution." + exit 1 + fi + ;; + FreeBSD|NetBSD|OpenBSD) + install_on_bsd openssl + ;; + Darwin) + install_on_macos openssl + ;; + *) + echo "Unsupported operating system." exit 1 - fi - elif [[ "$OSTYPE" == "bsd"* ]]; then - echo "Detected BSD-based system." - install_on_bsd "openssl" - elif [[ "$OSTYPE" == "darwin"* ]]; then - echo "Detected macOS." - install_on_macos "openssl" - else - echo "Unsupported operating system." - exit 1 - fi + ;; + esac ;; esac fi -sed -i.bak "1s|.*|#!.venv/bin/python3|" run.py +sed -i.bak '1s|.*|#!.venv/bin/python3|' run.py sudo chmod +x run.py -echo "Everything is installed!" -echo "Run StreamingCommunity with './run.py'" +echo 'Everything is installed!' +echo 'Run StreamingCommunity with "./run.py"'