diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh index 0cb0c566d..e29a35a64 100644 --- a/lgsm/functions/check_deps.sh +++ b/lgsm/functions/check_deps.sh @@ -26,16 +26,16 @@ fn_install_mono_repo(){ echo -en " \r" if [ "${distroid}" == "ubuntu" ]; then if [ "${distroversion}" == "18.04" ]; then - cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" elif [ "${distroversion}" == "16.04" ]; then - cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" elif [ "${distroversion}" == "14.04" ]; then - cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-trusty main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-trusty main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" else - fn_print_warn_nl "Installing Mono repository" + fn_print_warn_nl "Installing Mono repository." echo -e "Mono auto install not available for ${distroname}" echo -e " Follow instructions on mono site to install the latest version of Mono." echo -e " https://www.mono-project.com/download/stable/#download-lin" @@ -43,13 +43,13 @@ fn_install_mono_repo(){ fi elif [ "${distroid}" == "debian" ]; then if [ "${distroversion}" == "10" ]; then - cmd="sudo apt-get install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" elif [ "${distroversion}" == "9" ]; then - cmd="sudo apt-get install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" elif [ "${distroversion}" == "8" ]; then - cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/debian stable-jessie main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update" + cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/debian stable-jessie main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" eval "${cmd}" else echo -e "Mono auto install not available for ${distroname}" @@ -91,11 +91,11 @@ fn_install_mono_repo(){ fi fi else - fn_print_information_nl "Installing Mono repository" + fn_print_information_nl "Installing Mono repository." echo -e "" fn_print_warning_nl "$(whoami) does not have sudo access. Manually install Mono repository." fn_script_log_warn "$(whoami) does not have sudo access. Manually install Mono repository." - echo -e " Follow instructions on mono site to install the latest version of Mono." + echo -e "* Follow instructions on mono site to install the latest version of Mono." echo -e " https://www.mono-project.com/download/stable/#download-lin" fi fi @@ -105,7 +105,7 @@ fn_install_universe_repo(){ # Defensive coding - As this is an ubuntu only issue then check to make sure this fix is needed, and we are using ubuntu. if [ "${jquniversemissing}" != "0" ]&&[ "${distroid}" == "ubuntu" ]; then fn_print_warning_nl "Ubuntu 18.04.1 contains a bug which means the sources.list file does not populate with the Ubuntu universe repository." - fn_print_information_nl "Attempting to add Universe Repo" + fn_print_information_nl "Attempting to add universe repository." if [ "${autoinstall}" == "1" ]; then sudo -n true > /dev/null 2>&1 else @@ -131,7 +131,8 @@ fn_install_universe_repo(){ else fn_print_warning_nl "$(whoami) does not have sudo access. Manually add Universe repository." fn_script_log_warn "$(whoami) does not have sudo access. Manually add Universe repository." - echo -e " Please run the following command as a user with sudo access, and re-run the installation" + echo -e "* Please run the following command as a user with sudo access, and re-run the installation" + echo -e "" echo -e " sudo apt-add-repository universe" fi fi @@ -228,7 +229,7 @@ fn_found_missing_deps(){ fn_install_mono_repo fi if [ -n "${jqstatus}" ]; then - fn_print_warning_nl "jq is not available in the ${distroname} repository" + fn_print_warning_nl "jq is not available in the ${distroname} repository." echo -e " * https://docs.linuxgsm.com/requirements/jq" fi if [ "${autoinstall}" == "1" ]; then @@ -247,7 +248,7 @@ fn_found_missing_deps(){ sleep 1 echo -en " \r" if [ "$(command -v dpkg-query 2>/dev/null)" ]; then - cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get -y install ${array_deps_missing[@]}" + cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; sudo dpkg --add-architecture i386; sudo apt update; sudo apt -y install ${array_deps_missing[@]}" eval "${cmd}" elif [ "$(command -v dnf 2>/dev/null)" ]; then cmd="sudo dnf -y install ${array_deps_missing[@]}" @@ -257,13 +258,13 @@ fn_found_missing_deps(){ eval "${cmd}" fi if [ $? != 0 ]; then - fn_print_failure_nl "Unable to install dependencies" - fn_script_log_fatal "Unable to install dependencies" + fn_print_failure_nl "Unable to install dependencies." + fn_script_log_fatal "Unable to install dependencies." echo -e "" fn_print_warning_nl "Manually install dependencies." fn_script_log_warn "Manually install dependencies." if [ "$(command -v dpkg-query 2>/dev/null)" ]; then - echo -e " sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install ${array_deps_missing[@]}" + echo -e " sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[@]}" elif [ "$(command -v dnf 2>/dev/null)" ]; then echo -e " sudo dnf install ${array_deps_missing[@]}" elif [ "$(command -v yum 2>/dev/null)" ]; then @@ -276,19 +277,19 @@ fn_found_missing_deps(){ core_exit.sh fi else - fn_print_complete_nl "Install dependencies completed" - fn_script_log_pass "Install dependencies completed" + fn_print_complete_nl "Install dependencies completed." + fn_script_log_pass "Install dependencies completed." fi else - echo -e "" fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies." fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies." + echo -e "" if [ "$(command -v dpkg-query 2>/dev/null)" ]; then - echo -e " sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install ${array_deps_missing[@]}" + echo -e "sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[@]}" elif [ "$(command -v dnf 2>/dev/null)" ]; then - echo -e " sudo dnf install ${array_deps_missing[@]}" + echo -e "sudo dnf install ${array_deps_missing[@]}" elif [ "$(command -v yum 2>/dev/null)" ]; then - echo -e " sudo yum install ${array_deps_missing[@]}" + echo -e "sudo yum install ${array_deps_missing[@]}" fi if [ "${steamcmdfail}" ]; then echo -e "" @@ -303,8 +304,8 @@ fn_found_missing_deps(){ fi else if [ "${function_selfname}" == "command_install.sh" ]; then - fn_print_information_nl "Required dependencies already installed" - fn_script_log_info "Required dependencies already installed" + fn_print_information_nl "Required dependencies already installed." + fn_script_log_info "Required dependencies already installed." fi fi } @@ -339,7 +340,7 @@ fn_deps_build_debian(){ # Game Specific requirements. - # Natural Selection 2 - x64 only. + # Natural Selection 2 (x64 only) if [ "${shortname}" == "ns2" ]; then array_deps_required+=( speex libtbb2 ) # NS2: Combat @@ -348,14 +349,14 @@ fn_deps_build_debian(){ # 7 Days to Die elif [ "${shortname}" == "sdtd" ]; then array_deps_required+=( telnet expect ) - # No More Room in Hell, Counter-Strike: Source and Garry's Mod + # No More Room in Hell, Counter-Strike: Source, Garry's Mod and Zombie Panic: Source elif [ "${shortname}" == "nmrih" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "zps" ]; then if [ "${arch}" == "x86_64" ]; then array_deps_required+=( lib32tinfo5 ) else array_deps_required+=( libtinfo5 ) fi - # Brainbread 2 ,Don't Starve Together & Team Fortress 2 + # Brainbread 2, Don't Starve Together & Team Fortress 2 elif [ "${shortname}" == "bb2" ]||[ "${shortname}" == "dst" ]||[ "${shortname}" == "tf2" ]; then array_deps_required+=( libcurl4-gnutls-dev:i386 ) if [ "${shortname}" == "tf2" ]; then @@ -364,8 +365,8 @@ fn_deps_build_debian(){ # Battlefield: 1942 elif [ "${shortname}" == "bf1942" ]; then array_deps_required+=( libncurses5:i386 ) - # Call of Duty - elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]; then + # Call of Duty & Medal of Honor: Allied Assault + elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then array_deps_required+=( libstdc++5:i386 ) # Factorio elif [ "${shortname}" == "fctr" ]; then @@ -373,18 +374,15 @@ fn_deps_build_debian(){ # Hurtword/Rust elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then array_deps_required+=( lib32z1 ) - # Minecraft - elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]||[ "${shortname}" == "pz" ]; then + # Minecraft, Rising World, Wurm + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]||[ "${shortname}" == "wurm" ]; then javaversion=$(java -version 2>&1 | grep "version") if [ "${javaversion}" ]; then # Added for users using Oracle JRE to bypass the check. javacheck=1 else - array_deps_required+=( openjdk-8-jre-headless ) + array_deps_required+=( default-jre ) fi - # Medal of Honor: Allied Assault - elif [ "${shortname}" == "mohaa" ]; then - array_deps_required+=( libstdc++5:i386 ) # Onset elif [ "${shortname}" == "onset" ]; then array_deps_required+=( libmariadbclient-dev ) @@ -418,6 +416,9 @@ fn_deps_build_debian(){ # Unreal Tournament elif [ "${shortname}" == "ut" ]; then array_deps_required+=( unzip ) + # Unturned + elif [ "${shortname}" == "unt" ]; then + array_deps_required+=( mono-complete ) # Wurm: Unlimited elif [ "${shortname}" == "wurm" ]; then array_deps_required+=( xvfb ) @@ -478,36 +479,50 @@ fn_deps_build_redhat(){ # Battlefield: 1942 elif [ "${shortname}" == "bf1942" ]; then array_deps_required+=( ncurses-libs.i686 ) - # Call of Duty - elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]; then + # Call of Duty & Medal of Honor: Allied Assault + elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then array_deps_required+=( compat-libstdc++-33.i686 ) # Factorio elif [ "${shortname}" == "fctr" ]; then array_deps_required+=( xz ) + # Hurtword/Rust elif [ "${shortname}" == "hw" ]||[ "${shortname}" == "rust" ]; then array_deps_required+=( zlib-devel ) - # Minecraft, Project Zomboid, Rising World - elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]||[ "${shortname}" == "pz" ]; then + # Minecraft, Rising World, Wurm + elif [ "${shortname}" == "mc" ]||[ "${shortname}" == "rw" ]||[ "${shortname}" == "wurm" ]; then javaversion=$(java -version 2>&1 | grep "version") if [ "${javaversion}" ]; then # Added for users using Oracle JRE to bypass the check. javacheck=1 - array_deps_required+=( rng-tools ) else - array_deps_required+=( java-1.8.0-openjdk rng-tools ) + array_deps_required+=( java-11-openjdk ) fi - # Onset + # Onset elif [ "${shortname}" == "onset" ]; then array_deps_required+=( mariadb-connector-c ) + # Project Zomboid + elif [ "${shortname}" == "pz" ]; then + if java -version 2>&1 | grep "version"; then + # Added for users using Oracle JRE to bypass the check. + javacheck=1 + array_deps_required+=( rng-tools ) + else + array_deps_required+=( java-11-openjdk rng-tools ) + fi # GoldenEye: Source elif [ "${shortname}" == "ges" ]; then array_deps_required+=( zlib.i686 openldap.i686 ) + # Serious Sam 3: BFE + elif [ "${shortname}" == "ss3" ]; then + : # not compatible + elif [ "${shortname}" == "sven" ]; then + : # not compatible # Unreal Engine elif [ "${executable}" == "./ucc-bin" ]; then - #UT2K4 + # UT2K4 if [ -f "${executabledir}/ut2004-bin" ]; then array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 ) - #UT99 + # UT99 else array_deps_required+=( SDL.i686 bzip2 ) fi @@ -517,6 +532,7 @@ fn_deps_build_redhat(){ # Unturned elif [ "${shortname}" == "unt" ]; then array_deps_required+=( mono-complete ) + # Wurm: Unlimited elif [ "${shortname}" == "wurm" ]; then array_deps_required+=( xorg-x11-server-Xvfb ) elif [ "${shortname}" == "pstbs" ]; then @@ -548,5 +564,5 @@ if [ -f "/etc/debian_version" ]; then elif [ -f "/etc/redhat-release" ]; then fn_deps_build_redhat else - fn_print_warning_nl "${distroname} dependency checking unavailable" + fn_print_warning_nl "${distroname} dependency checking unavailable." fi diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh index 50b9078c8..ff1e797cd 100644 --- a/lgsm/functions/command_dev_detect_deps.sh +++ b/lgsm/functions/command_dev_detect_deps.sh @@ -34,6 +34,10 @@ done sort "${tmpdir}/.depdetect_readelf" |uniq >"${tmpdir}/.depdetect_readelf_uniq" +touch "${tmpdir}/.depdetect_centos_list" +touch "${tmpdir}/.depdetect_ubuntu_list" +touch "${tmpdir}/.depdetect_debian_list" + while read -r lib; do echo -e "${lib}" local libs_array=( libm.so.6 libc.so.6 libtcmalloc_minimal.so.4 libpthread.so.0 libdl.so.2 libnsl.so.1 libgcc_s.so.1 librt.so.1 ld-linux.so.2 libdbus-glib-1.so.2 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libnm-glib.so.4 libnm-util.so.2 ) @@ -128,6 +132,31 @@ while read -r lib; do echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_ubuntu_list" echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_debian_list" libdetected=1 + elif [ "${lib}" == "libz.so.1" ]; then + echo -e "zlib" >> "${tmpdir}/.depdetect_centos_list" + echo -e "zlib1g" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "zlib1g" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 + elif [ "${lib}" == "libatk-1.0.so.0" ]; then + echo -e "atk" >> "${tmpdir}/.depdetect_centos_list" + echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 + elif [ "${lib}" == "libcairo.so.2" ]; then + echo -e "cairo" >> "${tmpdir}/.depdetect_centos_list" + echo -e "libcairo2" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "libcairo2" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 + elif [ "${lib}" == "libfontconfig.so.1" ]; then + echo -e "fontconfig" >> "${tmpdir}/.depdetect_centos_list" + echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 + elif [ "${lib}" == "libfreetype.so.6" ]; then + echo -e "freetype" >> "${tmpdir}/.depdetect_centos_list" + echo -e "libfreetype6" >> "${tmpdir}/.depdetect_ubuntu_list" + echo -e "libfreetype6" >> "${tmpdir}/.depdetect_debian_list" + libdetected=1 fi if [ "${libdetected}" != "1" ]; then diff --git a/lgsm/functions/command_dev_detect_ldd.sh b/lgsm/functions/command_dev_detect_ldd.sh index 3df4b0a58..848489ddf 100644 --- a/lgsm/functions/command_dev_detect_ldd.sh +++ b/lgsm/functions/command_dev_detect_ldd.sh @@ -25,6 +25,8 @@ elif [ -f "${serverfiles}" ]; then echo -e "${serverfiles}" fi echo -e "" +touch "${tmpdir}/detect_ldd.tmp" +touch "${tmpdir}/detect_ldd_not_found.tmp" files=$(find "${serverfiles}" | wc -l) find "${serverfiles}" -type f -print0 |