Skip to content
Open
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 47 additions & 95 deletions src/Misc/layoutbin/installdependencies.sh
Original file line number Diff line number Diff line change
@@ -1,63 +1,57 @@
#!/bin/bash

user_id=`id -u`
set -e -o pipefail

if [ $user_id -ne 0 ]; then
if [ "$(id -u)" -ne "0" ]; then
echo "Need to run with sudo privilege"
exit 1
fi

# Determine OS type
# Determine OS type
# Debian based OS (Debian, Ubuntu, Linux Mint) has /etc/debian_version
# Fedora based OS (Fedora, Red Hat Enterprise Linux, CentOS, Oracle Linux 7) has /etc/redhat-release
# SUSE based OS (OpenSUSE, SUSE Enterprise) has ID_LIKE=suse in /etc/os-release

function print_errormessage()
function print_errormessage()
{
echo "Can't install dotnet core dependencies."
echo "You can manually install all required dependencies based on following documentation"
echo "https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x"
}

function print_rhel6message()
function print_rhel6message()
{
echo "We did our best effort to install dotnet core dependencies"
echo "However, there are some dependencies which require manual installation"
echo "However, there are some dependencies which require manual installation"
echo "You can install all remaining required dependencies based on the following documentation"
echo "https://github.com/dotnet/core/blob/master/Documentation/build-and-install-rhel6-prerequisites.md"
}

function print_rhel6errormessage()
function print_rhel6errormessage()
{
echo "We couldn't install dotnet core dependencies"
echo "You can manually install all required dependencies based on following documentation"
echo "https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x"
echo "In addition, there are some dependencies which require manual installation. Please follow this documentation"
echo "In addition, there are some dependencies which require manual installation. Please follow this documentation"
echo "https://github.com/dotnet/core/blob/master/Documentation/build-and-install-rhel6-prerequisites.md"
}

if [ -e /etc/os-release ]
then
if [ -e /etc/os-release ]; then
echo "--------OS Information--------"
cat /etc/os-release
echo "------------------------------"

if [ -e /etc/debian_version ]
then
if [ -e /etc/debian_version ]; then
echo "The current OS is Debian based"
echo "--------Debian Version--------"
cat /etc/debian_version
echo "------------------------------"

# prefer apt-get over apt
command -v apt-get
if [ $? -eq 0 ]
then
if command -v apt-get; then
apt_get=apt-get
else
command -v apt
if [ $? -eq 0 ]
then
if command -v apt; then
apt_get=apt
else
echo "Found neither 'apt-get' nor 'apt'"
Expand All @@ -66,114 +60,76 @@ then
fi
fi

$apt_get update && $apt_get install -y libkrb5-3 zlib1g
if [ $? -ne 0 ]
then
if ! "$apt_get" update && "$apt_get" install -y libkrb5-3 zlib1g; then
echo "'$apt_get' failed with exit code '$?'"
print_errormessage
exit 1
fi

apt_get_with_fallbacks() {
$apt_get install -y $1
fail=$?
if [ $fail -eq 0 ]
then
if [ "${1#"${1%?}"}" = '$' ]; then
dpkg -l "${1%?}" > /dev/null 2> /dev/null
fail=$?
fail=0
if "$apt_get" install -y "$1"; then
if ! dpkg -l | grep "^ii\s\s$1" &>/dev/null; then
fail=1
fi
fi
if [ $fail -ne 0 ]
then
else
shift
if [ -n "$1" ]
then
if [ $# -eq 0 ]; then
fail=1
return $fail
else
apt_get_with_fallbacks "$@"
fi
fi
}

apt_get_with_fallbacks liblttng-ust1 liblttng-ust0
if [ $? -ne 0 ]
then
echo "'$apt_get' failed with exit code '$?'"
if ! apt_get_with_fallbacks liblttng-ust1 liblttng-ust0; then
print_errormessage
exit 1
fi

apt_get_with_fallbacks libssl1.1$ libssl1.0.2$ libssl1.0.0$
if [ $? -ne 0 ]
then
echo "'$apt_get' failed with exit code '$?'"
if ! apt_get_with_fallbacks libssl3$ libssl1.1$ libssl1.0.2$ libssl1.0.0$; then
print_errormessage
exit 1
fi

apt_get_with_fallbacks libicu72 libicu71 libicu70 libicu69 libicu68 libicu67 libicu66 libicu65 libicu63 libicu60 libicu57 libicu55 libicu52
if [ $? -ne 0 ]
then
echo "'$apt_get' failed with exit code '$?'"
if ! apt_get_with_fallbacks libicu74 libicu73 libicu72 libicu71 libicu70 libicu69 libicu68 libicu67 libicu66 libicu65 libicu63 libicu60 libicu57 libicu55 libicu52; then
print_errormessage
exit 1
fi
elif [ -e /etc/redhat-release ]
then
echo "The current OS is Fedora based"
elif [ -e /etc/redhat-release ]; then
echo "--Fedora/RHEL/CentOS Version--"
cat /etc/redhat-release
echo "------------------------------"

# use dnf on fedora
# use yum on centos and rhel
if [ -e /etc/fedora-release ]
then
command -v dnf
if [ $? -eq 0 ]
then
dnf install -y lttng-ust openssl-libs krb5-libs zlib libicu
if [ $? -ne 0 ]
then
echo "'dnf' failed with exit code '$?'"
print_errormessage
exit 1
fi
else
echo "Can not find 'dnf'"
print_errormessage
exit 1
fi
if command -v dnf; then
dnf=dnf
elif command -v yum; then
dnf=yum
else
command -v yum
if [ $? -eq 0 ]
then
yum install -y lttng-ust openssl-libs krb5-libs zlib libicu
if [ $? -ne 0 ]
then
echo "'yum' failed with exit code '$?'"
print_errormessage
exit 1
fi
if command -v microdnf; then
dnf=microdnf
else
echo "Can not find 'yum'"
echo "Found neither 'dnf' nor 'yum'"
print_errormessage
exit 1
fi
fi

if ! $dnf install -y lttng-ust openssl-libs krb5-libs zlib libicu; then
exit_code=$?
echo "'$dnf' failed with exit code '$exit_code'"
print_errormessage
exit 1
fi
else
# we might on OpenSUSE
OSTYPE=$(grep ID_LIKE /etc/os-release | cut -f2 -d=)
echo $OSTYPE
echo $OSTYPE | grep "suse"
if [ $? -eq 0 ]
then
echo "$OSTYPE"
if echo "$OSTYPE" | grep "suse"; then
echo "The current OS is SUSE based"
command -v zypper
if [ $? -eq 0 ]
then
zypper -n install lttng-ust libopenssl1_1 krb5 zlib libicu60_2
if [ $? -ne 0 ]
then
if command -v zypper; then
if ! zypper -n install lttng-ust libopenssl1_1 krb5 zlib libicu60_2; then
echo "'zypper' failed with exit code '$?'"
print_errormessage
exit 1
Expand All @@ -199,12 +155,8 @@ then

# Install known dependencies, as a best effort.
# The remaining dependencies are covered by the GitHub doc that will be shown by `print_rhel6message`
command -v yum
if [ $? -eq 0 ]
then
yum install -y openssl krb5-libs zlib
if [ $? -ne 0 ]
then
if command -v yum; then
if ! yum install -y openssl krb5-libs zlib; then
echo "'yum' failed with exit code '$?'"
print_rhel6errormessage
exit 1
Expand Down