#!/bin/bashunknown_os (){echo"Unfortunately, your operating system distribution and version are not supported by this script."echoecho"You can override the OS detection by setting os= and dist= prior to running this script."echo"You can find a list of supported OSes and distributions on our website: https://packagecloud.io/docs#os_distro_version"echoecho"For example, to force CentOS 6: os=el dist=6 ./script.sh"echoecho"Please email support@packagecloud.io and let us know if you run into any issues."exit1}curl_check (){echo"Checking for curl..."ifcommand -v curl > /dev/null;thenecho"Detected curl..."elseecho"Installing curl..." yum install -d0 -e0 -y curl
fi}detect_os (){if[[( -z "${os}")&&( -z "${dist}")]];thenif[ -e /etc/os-release ];then . /etc/os-release
os=${ID}if["${os}"="poky"];thendist=`echo${VERSION_ID}`elif["${os}"="sles"];thendist=`echo${VERSION_ID}`elif["${os}"="opensuse"];thendist=`echo${VERSION_ID}`elif["${os}"="opensuse-leap"];thenos=opensuse
dist=`echo${VERSION_ID}`elsedist=`echo${VERSION_ID}| awk -F '.''{ print $1 }'`fielif[`which lsb_release 2>/dev/null`];then# get major version (e.g. '5' or '6')dist=`lsb_release -r | cut -f2 | awk -F '.''{ print $1 }'`# get os (e.g. 'centos', 'redhatenterpriseserver', etc)os=`lsb_release -i | cut -f2 | awk '{ print tolower($1) }'`elif[ -e /etc/oracle-release ];thendist=`cut -f5 --delimiter=' ' /etc/oracle-release | awk -F '.''{ print $1 }'`os='ol'elif[ -e /etc/fedora-release ];thendist=`cut -f3 --delimiter=' ' /etc/fedora-release`os='fedora'elif[ -e /etc/redhat-release ];thenos_hint=`cat /etc/redhat-release | awk '{ print tolower($1) }'`if["${os_hint}"="centos"];thendist=`cat /etc/redhat-release | awk '{ print $3 }'| awk -F '.''{ print $1 }'`os='centos'elif["${os_hint}"="scientific"];thendist=`cat /etc/redhat-release | awk '{ print $4 }'| awk -F '.''{ print $1 }'`os='scientific'elsedist=`cat /etc/redhat-release | awk '{ print tolower($7) }'| cut -f1 --delimiter='.'`os='redhatenterpriseserver'fielseaws=`grep -q Amazon /etc/issue`if["$?"="0"];thendist='6'os='aws'else unknown_os
fififiif[[( -z "${os}")||( -z "${dist}")]];then unknown_os
fi# remove whitespace from OS and dist nameos="${os// /}"dist="${dist// /}"echo"Detected operating system as ${os}/${dist}."if["${dist}"="8"];then_skip_pygpgme=1else_skip_pygpgme=0fi}finalize_yum_repo (){if["$_skip_pygpgme"=0];thenecho"Installing pygpgme to verify GPG signatures..." yum install -y pygpgme --disablerepo='rabbitmq_erlang'pypgpme_check=`rpm -qa | grep -qw pygpgme`if["$?" !="0"];thenechoecho"WARNING: "echo"The pygpgme package could not be installed. This means GPG verification is not possible for any RPM installed on your system. "echo"To fix this, add a repository with pygpgme. Usualy, the EPEL repository for your system will have this. "echo"More information: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F"echo# set the repo_gpgcheck option to 0 sed -i'''s/repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/rabbitmq_erlang.repo
fifiecho"Installing yum-utils..." yum install -y yum-utils --disablerepo='rabbitmq_erlang'yum_utils_check=`rpm -qa | grep -qw yum-utils`if["$?" !="0"];thenechoecho"WARNING: "echo"The yum-utils package could not be installed. This means you may not be able to install source RPMs or use other yum features."echofiecho"Generating yum cache for rabbitmq_erlang..." yum -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang'echo"Generating yum cache for rabbitmq_erlang-source..." yum -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang-source'}finalize_zypper_repo (){ zypper --gpg-auto-import-keys refresh rabbitmq_erlang
zypper --gpg-auto-import-keys refresh rabbitmq_erlang-source
}main (){ detect_os
curl_check
yum_repo_config_url="https://packagecloud.io/install/repositories/rabbitmq/erlang/config_file.repo?os=${os}&dist=${dist}&source=script"if["${os}"="sles"]||["${os}"="opensuse"];thenyum_repo_path=/etc/zypp/repos.d/rabbitmq_erlang.repo
elseyum_repo_path=/etc/yum.repos.d/rabbitmq_erlang.repo
fiecho"Downloading repository file: ${yum_repo_config_url}" curl -sSf "${yum_repo_config_url}" > $yum_repo_pathcurl_exit_code=$?if["$curl_exit_code"="22"];thenechoechoecho -n "Unable to download repo config from: "echo"${yum_repo_config_url}"echoecho"This usually happens if your operating system is not supported by "echo"packagecloud.io, or this script's OS detection failed."echoecho"You can override the OS detection by setting os= and dist= prior to running this script."echo"You can find a list of supported OSes and distributions on our website: https://packagecloud.io/docs#os_distro_version"echoecho"For example, to force CentOS 6: os=el dist=6 ./script.sh"echoecho"If you are running a supported OS, please email support@packagecloud.io and report this."[ -e $yum_repo_path]&& rm $yum_repo_pathexit1elif["$curl_exit_code"="35" -o "$curl_exit_code"="60"];thenechoecho"curl is unable to connect to packagecloud.io over TLS when running: "echo" curl ${yum_repo_config_url}"echoecho"This is usually due to one of two things:"echoecho" 1.) Missing CA root certificates (make sure the ca-certificates package is installed)"echo" 2.) An old version of libssl. Try upgrading libssl on your system to a more recent version"echoecho"Contact support@packagecloud.io with information about your system for help."[ -e $yum_repo_path]&& rm $yum_repo_pathexit1elif["$curl_exit_code" -gt "0"];thenechoecho"Unable to run: "echo" curl ${yum_repo_config_url}"echoecho"Double check your curl installation and try again."[ -e $yum_repo_path]&& rm $yum_repo_pathexit1elseecho"done."fiif["${os}"="sles"]||["${os}"="opensuse"];then finalize_zypper_repo
else finalize_yum_repo
fiechoecho"The repository is setup! You can now install packages."}main