From dadf6471b7a19eb5079d718f0a867f143afdbd80 Mon Sep 17 00:00:00 2001 From: amidevous Date: Sat, 21 Oct 2023 10:52:39 +0200 Subject: [PATCH] Create install-dep.sh --- install-dep.sh | 963 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 963 insertions(+) create mode 100644 install-dep.sh diff --git a/install-dep.sh b/install-dep.sh new file mode 100644 index 0000000..a04ec88 --- /dev/null +++ b/install-dep.sh @@ -0,0 +1,963 @@ +#!/bin/bash +echo -e "\nChecking that minimal requirements are ok" +# Ensure the OS is compatible with the launcher +if [ -f /etc/centos-release ]; then + inst() { + rpm -q "$1" &> /dev/null + } + if (inst "centos-stream-repos"); then + OS="CentOs-Stream" + else + OS="CentOs" + fi + VERFULL=$(sed 's/^.*release //;s/ (Fin.*$//' /etc/centos-release) + VER=${VERFULL:0:1} # return 6, 7 or 8 +elif [ -f /etc/fedora-release ]; then + inst() { + rpm -q "$1" &> /dev/null + } + OS="Fedora" + VERFULL=$(sed 's/^.*release //;s/ (Fin.*$//' /etc/fedora-release) + VER=${VERFULL:0:2} # return 34, 35 or 36 +elif [ -f /etc/lsb-release ]; then + OS=$(grep DISTRIB_ID /etc/lsb-release | sed 's/^.*=//') + VER=$(grep DISTRIB_RELEASE /etc/lsb-release | sed 's/^.*=//') +elif [ -f /etc/os-release ]; then + OS=$(grep -w ID /etc/os-release | sed 's/^.*=//') + VER=$(grep VERSION_ID /etc/os-release | sed 's/^.*"\(.*\)"/\1/' | head -n 1 | tail -n 1) + else + OS=$(uname -s) + VER=$(uname -r) +fi +ARCH=$(uname -m) +if [[ "$VER" = "8" && "$OS" = "CentOs" ]]; then + echo "Centos 8 obsolete udate to CentOS-Stream 8" + echo "this operation may take some time" + sleep 60 + # change repository to use vault.centos.org CentOS 8 found online to vault.centos.org + find /etc/yum.repos.d -name '*.repo' -exec sed -i 's|mirrorlist=http://mirrorlist.centos.org|#mirrorlist=http://mirrorlist.centos.org|' {} \; + find /etc/yum.repos.d -name '*.repo' -exec sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|' {} \; + #update package list + dnf update -y + #upgrade all packages to latest CentOS 8 + dnf upgrade -y + #install CentOS-Stream 8 repository + dnf -y install centos-release-stream --allowerasing + #install rpmconf + dnf -y install rpmconf + #set config file with rpmconf + rpmconf -a + # remove Centos 8 repository and set CentOS-Stream 8 repository by default + dnf -y swap centos-linux-repos centos-stream-repos + # system upgrade + dnf -y distro-sync + # ceanup old rpmconf file create + find / -name '*.rpmnew' -exec rm -f {} \; + find / -name '*.rpmsave' -exec rm -f {} \; + OS="CentOs-Stream" + fi + mkdir -p /etc/yum.repos.d/ + + +echo "Detected : $OS $VER $ARCH" +if [[ "$OS" = "CentOs" && "$VER" = "6" && "$ARCH" == "x86_64" || +"$OS" = "CentOs" && "$VER" = "7" && "$ARCH" == "x86_64" || +"$OS" = "CentOs-Stream" && "$VER" = "8" && "$ARCH" == "x86_64" || +"$OS" = "CentOs-Stream" && "$VER" = "9" && "$ARCH" == "x86_64" || +"$OS" = "Fedora" && ("$VER" = "36" || "$VER" = "37" || "$VER" = "38" ) && "$ARCH" == "x86_64" || +"$OS" = "Ubuntu" && ( "$VER" = "18.04" || "$VER" = "20.04" || "$VER" = "22.04" ) && "$ARCH" == "x86_64" || +"$OS" = "debian" && ("$VER" = "10" || "$VER" = "11" ) && "$ARCH" == "x86_64" ]] ; then +echo "Ok." +else + echo "Sorry, this OS is not supported by Xtream UI." + exit 1 +fi +echo -e "\n-- Updating repositories and packages sources" +if [[ "$OS" = "CentOs" ]] ; then + PACKAGE_INSTALLER="yum -y install" + PACKAGE_REMOVER="yum -y remove" + PACKAGE_UPDATER="yum -y update" + PACKAGE_UTILS="yum-utils" + PACKAGE_GROUPINSTALL="yum -y groupinstall" + PACKAGE_SOURCEDOWNLOAD="yumdownloader --source" + BUILDDEP="yum-builddep -y" + MYSQLCNF=/etc/my.cnf +elif [[ "$OS" = "Fedora" || "$OS" = "CentOs-Stream" ]]; then + PACKAGE_INSTALLER="dnf -y install" + PACKAGE_REMOVER="dnf -y remove" + PACKAGE_UPDATER="dnf -y update" + PACKAGE_UTILS="dnf-utils" + PACKAGE_GROUPINSTALL="dnf -y groupinstall" + PACKAGE_SOURCEDOWNLOAD="dnf download --source" + BUILDDEP="dnf build-dep -y" + MYSQLCNF=/etc/my.cnf +elif [[ "$OS" = "Ubuntu" || "$OS" = "debian" ]]; then + PACKAGE_INSTALLER="apt-get -y install" + PACKAGE_REMOVER="apt-get -y purge" + MYSQLCNF=/etc/mysql/mariadb.cnf + inst() { + dpkg -l "$1" 2> /dev/null | grep '^ii' &> /dev/null + } +fi +if [[ "$OS" = "CentOs" || "$OS" = "CentOs-Stream" || "$OS" = "Fedora" ]]; then + if [[ "$OS" = "CentOs" || "$OS" = "CentOs-Stream" ]]; then + #To fix some problems of compatibility use of mirror centos.org to all users + #Replace all mirrors by base repos to avoid any problems. + find /etc/yum.repos.d -name '*.repo' -exec sed -i 's|mirrorlist=http://mirrorlist.centos.org|#mirrorlist=http://mirrorlist.centos.org|' {} \; + find /etc/yum.repos.d -name '*.repo' -exec sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirror.centos.org|' {} \; + #check if the machine and on openvz + if [ -f "/etc/yum.repos.d/vz.repo" ]; then + sed -i "s|mirrorlist=http://vzdownload.swsoft.com/download/mirrors/centos-$VER|baseurl=http://vzdownload.swsoft.com/ez/packages/centos/$VER/$ARCH/os/|" "/etc/yum.repos.d/vz.repo" + sed -i "s|mirrorlist=http://vzdownload.swsoft.com/download/mirrors/updates-released-ce$VER|baseurl=http://vzdownload.swsoft.com/ez/packages/centos/$VER/$ARCH/updates/|" "/etc/yum.repos.d/vz.repo" + fi + #EPEL Repo Install + $PACKAGE_INSTALLER epel-release + fi + $PACKAGE_INSTALLER $PACKAGE_UTILS + #disable deposits that could result in installation errors + # disable all repository + if [[ "$OS" = "Fedora" ]]; then + dnf -y install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm + dnf -y install https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm + fi + if [[ "$OS" = "CentOs" || "$OS" = "CentOs-Stream" ]]; then +if [[ "$OS" = "CentOs" && "$VER" = "6" ]] ; then +cat > /etc/yum.repos.d/mariadb.repo < CentOS-Base.repo < epel.repo < /etc/yum.repos.d/mariadb.repo < /etc/yum.repos.d/mariadb.repo </dev/tty + mkdir -p "/etc/apt/sources.list.d.save" + cp -R "/etc/apt/sources.list.d/*" "/etc/apt/sources.list.d.save" &> /dev/null + rm -rf "/etc/apt/sources.list/*" + cp "/etc/apt/sources.list" "/etc/apt/sources.list.save" + cat > /etc/apt/sources.list < /dev/null + apt-get update +wget -qO- "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xF1656F24C74CD1D8" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mariadb.gpg > /dev/null + add-apt-repository -y "deb [arch=amd64,arm64,ppc64el] https://mirrors.nxthost.com/mariadb/repo/10.6/ubuntu/ $(lsb_release -cs) main" + apt-get update +elif [[ "$OS" = "debian" ]]; then + DEBIAN_FRONTEND=noninteractive + export DEBIAN_FRONTEND=noninteractive + # Update the enabled Aptitude repositories + echo -ne "\nUpdating Aptitude Repos: " >/dev/tty + apt-get update + apt install curl wget apt-transport-https gnupg2 dirmngr -y + mkdir -p "/etc/apt/sources.list.d.save" + cp -R "/etc/apt/sources.list.d/*" "/etc/apt/sources.list.d.save" &> /dev/null + rm -rf "/etc/apt/sources.list/*" + cp "/etc/apt/sources.list" "/etc/apt/sources.list.save" + cat > /etc/apt/sources.list < /dev/null + add-apt-repository -y "deb [arch=amd64,arm64,ppc64el] https://mirrors.nxthost.com/mariadb/repo/10.6/debian/ $(lsb_release -cs) main" + apt-get update + apt-get -y install debhelper cdbs lintian build-essential fakeroot devscripts dh-make ca-certificates gpg reprepro +cat > /etc/apt/sources.list.d/php.list < /etc/apt/sources.list.d/apache2.list < /etc/apt/sources.list.d/podman.list <