Initial import of percona-release-1.0-27

This commit is contained in:
Andrew Lukoshko 2023-09-27 08:44:56 +00:00
commit 9acf61043e
4 changed files with 809 additions and 0 deletions

View File

@ -0,0 +1,77 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
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
=cTh+
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.9 (GNU/Linux)
mQGiBEsm3aERBACyB1E9ixebIMRGtmD45c6c/wi2IVIa6O3G1f6cyHH4ump6ejOi
AX63hhEs4MUCGO7KnON1hpjuNN7MQZtGTJC0iX97X2Mk+IwB1KmBYN9sS/OqhA5C
itj2RAkug4PFHR9dy21v0flj66KjBS3GpuOadpcrZ/k0g7Zi6t7kDWV0hwCgxCa2
f/ESC2MN3q3j9hfMTBhhDCsD/3+iOxtDAUlPMIH50MdK5yqagdj8V/sxaHJ5u/zw
YQunRlhB9f9QUFfhfnjRn8wjeYasMARDctCde5nbx3Pc+nRIXoB4D1Z1ZxRzR/lb
7S4i8KRr9xhommFnDv/egkx+7X1aFp1f2wN2DQ4ecGF4EAAVHwFz8H4eQgsbLsa6
7DV3BACj1cBwCf8tckWsvFtQfCP4CiBB50Ku49MU2Nfwq7durfIiePF4IIYRDZgg
kHKSfP3oUZBGJx00BujtTobERraaV7lIRIwETZao76MqGt9K1uIqw4NT/jAbi9ce
rFaOmAkaujbcB11HYIyjtkAGq9mXxaVqCC3RPWGr+fqAx/akBLQ2UGVyY29uYSBN
eVNRTCBEZXZlbG9wbWVudCBUZWFtIDxteXNxbC1kZXZAcGVyY29uYS5jb20+iGAE
ExECACAFAksm3aECGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAcTL3NzS79
Kpk/AKCQKSEgwX9r8jR+6tAnCVpzyUFOQwCfX+fw3OAoYeFZB3eu2oT8OBTiVYu5
Ag0ESybdoRAIAKKUV8rbqlB8qwZdWlmrwQqg3o7OpoAJ53/QOIySDmqy5TmNEPLm
lHkwGqEqfbFYoTbOCEEJi2yFLg9UJCSBM/sfPaqb2jGP7fc0nZBgUBnFuA9USX72
O0PzVAF7rCnWaIz76iY+AMI6xKeRy91TxYo/yenF1nRSJ+rExwlPcHgI685GNuFG
chAExMTgbnoPx1ka1Vqbe6iza+FnJq3f4p9luGbZdSParGdlKhGqvVUJ3FLeLTqt
caOn5cN2ZsdakE07GzdSktVtdYPT5BNMKgOAxhXKy11IPLj2Z5C33iVYSXjpTelJ
b2qHvcg9XDMhmYJyE3O4AWFh2no3Jf4ypIcABA0IAJO8ms9ov6bFqFTqA0UW2gWQ
cKFN4Q6NPV6IW0rV61ONLUc0VFXvYDtwsRbUmUYkB/L/R9fHj4lRUDbGEQrLCoE+
/HyYvr2rxP94PT6Bkjk/aiCCPAKZRj5CFUKRpShfDIiow9qxtqv7yVd514Qqmjb4
eEihtcjltGAoS54+6C3lbjrHUQhLwPGqlAh8uZKzfSZq0C06kTxiEqsG6VDDYWy6
L7qaMwOqWdQtdekKiCk8w/FoovsMYED2qlWEt0i52G+0CjoRFx2zNsN3v4dWiIhk
ZSL00Mx+g3NA7pQ1Yo5Vhok034mP8L2fBLhhWaK3LG63jYvd0HLkUFhNG+xjkpeI
SQQYEQIACQUCSybdoQIbDAAKCRAcTL3NzS79KlacAJ0aAkBQapIaHNvmAhtVjLPN
wke4ZgCePe3sPPF49lBal7QaYPdjqapa1SQ=
=qcCk
-----END PGP PUBLIC KEY BLOCK-----

608
SOURCES/percona-release.sh Executable file
View File

@ -0,0 +1,608 @@
#!/bin/bash
#
#
#If you want to make script non-interactive please change this variable to NO
INTERACTIVE=YES
#
if [[ $(id -u) -gt 0 ]]; then
echo "Please run $(basename ${0}) as root!"
exit 1
fi
#
ALIASES="ps56 ps57 ps80 psmdb34 psmdb36 psmdb40 psmdb42 pxb24 pxb80 pxc56 pxc57 pxc80 ppg11 ppg11.5 ppg11.6 ppg11.7 ppg11.8 ppg12 ppg12.2 ppg12.3 pdmdb4.2 pdmdb4.2.6 pdmdb4.2.7 pdmdb4.2.8 pdps8.0.19 pdps8.0.20 pdpxc8.0.19 pdps8.0 pdpxc8.0 prel proxysql sysbench pt pmm-client pmm2-client mysql-shell pbm pdmdb4.4 pdmdb4.4.0 psmdb44"
COMMANDS="enable enable-only setup disable show"
REPOSITORIES="original ps-56 ps-57 ps-80 pxc-56 pxc-57 pxc-80 psmdb-36 psmdb-40 psmdb-42 pxb-24 pxb-80 tools ppg-11 ppg-11.5 ppg-11.6 ppg-11.7 ppg-11.8 ppg-12 ppg-12.2 ppg-12.3 pdmdb-4.2 pdmdb-4.2.6 pdmdb-4.2.7 pdmdb-4.2.8 pdps-8.0.19 pdpxc-8.0.19 pdps-8.0.20 pdps-8.0 pdpxc-8.0 prel proxysql sysbench pt mysql-shell pbm pmm-client pmm2-client pdmdb-4.4 pdmdb-4.4.0 psmdb-44"
COMPONENTS="release testing experimental"
URL="http://repo.percona.com"
SUPPORTED_ARCHS="i386 noarch x86_64 sources"
if [[ -f /etc/default/percona-release ]]; then
source /etc/default/percona-release
fi
#
DESCRIPTION=""
DEFAULT_REPO_DESC="Percona Original"
PREL_DESC="Percona Release"
PT_DESC="Percona Toolkit"
SYSBENCH_DESC="Sysbench"
PROXYSQL_DESC="Proxysql"
PBM_DESC="Percona Backup MongoDB"
MYSQL_SHELL_DESC="Percona MySQL Shell"
PMM_CLIENT_DESC="PMM Client"
PMM2_CLIENT_DESC="PMM2 Client"
PS56_DESC="Percona Server 5.6"
PS57_DESC="Percona Server 5.7"
PS80_DESC="Percona Server 8.0"
PXB24_DESC="Percona XtraBackup 2.4"
PXB80_DESC="Percona XtraBackup 8.0"
PXC56_DESC="Percona XtraDB Cluster 5.6"
PXC57_DESC="Percona XtraDB Cluster 5.7"
PXC80_DESC="Percona XtraDB Cluster 8.0"
PSMDB36_DESC="Percona Server for MongoDB 3.6"
PSMDB40_DESC="Percona Server for MongoDB 4.0"
PSMDB42_DESC="Percona Server for MongoDB 4.2"
PSMDB_DESC="Percona Server for MongoDB"
TOOLS_DESC="Percona Tools"
PPG11_DESC="Percona Distribution for PostgreSQL 11"
PPG11_5_DESC="Percona Distribution for PostgreSQL 11.5"
PPG11_6_DESC="Percona Distribution for PostgreSQL 11.6"
PPG11_7_DESC="Percona Distribution for PostgreSQL 11.7"
PPG11_8_DESC="Percona Distribution for PostgreSQL 11.8"
PDMDB4_2_DESC="Percona Distribution for MongoDB 4.2"
PDMDB4_2_6_DESC="Percona Distribution for MongoDB 4.2.6"
PDMDB4_2_7_DESC="Percona Distribution for MongoDB 4.2.7"
PDMDB4_2_8_DESC="Percona Distribution for MongoDB 4.2.8"
PPG12_DESC="Percona Distribution for PostgreSQL 12"
PPG12_2_DESC="Percona Distribution for PostgreSQL 12.2"
PPG12_3_DESC="Percona Distribution for PostgreSQL 12.3"
PDPXC80_19_DESC="Percona Distribution for MySQL 8.0.19 - PXC"
PDPS80_19_DESC="Percona Distribution for MySQL 8.0.19 - PS"
PDPS80_20_DESC="Percona Distribution for MySQL 8.0.20 - PS"
PDPS80_DESC="Percona Distribution for MySQL 8.0 - PS"
PDPXC80_DESC="Percona Distribution for MySQL 8.0 - PXC"
PPG_DESC="Percona Distribution for PostgreSQL"
PDMDB_DESC="Percona Distribution for MongoDB"
PDPS_DESC="Percona Distribution for MySQL - PS"
PDPXC_DESC="Percona Distribution for MySQL - PXC"
#
PS56REPOS="ps-56 tools"
PS57REPOS="ps-57 pxb-24"
PS80REPOS="ps-80 tools"
PXC56REPOS="pxc-56 tools"
PXC57REPOS="pxc-57 pxb-24"
PXC80REPOS="pxc-80 tools"
PXB24REPOS="pxb-24"
PXB80REPOS="pxb-80"
PSMDB36REPOS="psmdb-36 pbm"
PSMDB40REPOS="psmdb-40 tools"
PSMDB42REPOS="psmdb-42 tools"
PPG11REPOS="ppg-11"
PPG11_5_REPOS="ppg-11.5"
PPG11_6_REPOS="ppg-11.6"
PPG11_7_REPOS="ppg-11.7"
PPG11_8_REPOS="ppg-11.8"
PDMDB4_2_6_REPOS="pdmdb-4.2.6"
PDMDB4_2_7_REPOS="pdmdb-4.2.7"
PDMDB4_2_8_REPOS="pdmdb-4.2.8"
PDMDB4_2_REPOS="pdmdb-4.2"
PPG12_REPOS="ppg-12"
PPG12_2_REPOS="ppg-12.2"
PPG12_3_REPOS="ppg-12.3"
PDPS80_REPOS="pdps-8.0"
PDPXC80_REPOS="pdpxc-8.0"
PDPS80_19_REPOS="pdps-8.0.19"
PDPS80_20_REPOS="pdps-8.0.20"
PDPXC80_19_REPOS="pdpxc-8.0.19"
PREL_REPOS="prel"
PROXYSQL_REPOS="proxysql"
SYSBENCH_REPOS="sysbench"
PT_REPOS="pt"
MYSQL_SHELL_REPOS="mysql-shell"
PBM_REPOS="PBM"
PMM_CLIENT_REPOS="pmm-client"
PMM2_CLIENT_REPOS="pmm2-client"
TOOLS_REPOS="tools"
ORIGINAL_REPO="original"
#
AUTOUPDATE=NO
MODIFIED=NO
REPOFILE=""
# RH derivatives and Amazon Linux
if [[ -f /etc/redhat-release ]] || [[ -f /etc/system-release ]]; then
LOCATION=/etc/yum.repos.d
EXT=repo
PKGTOOL=yum
ARCH=$(rpm --eval %_arch)
elif [[ -f /etc/debian_version ]]; then
LOCATION=/etc/apt/sources.list.d
EXT=list
PKGTOOL="apt-get"
CODENAME=$(lsb_release -sc)
else
echo "==>> ERROR: Unsupported operating system"
exit 1
fi
#
function show_enabled {
echo "The following repositories are enabled on your system:"
if [[ -f /etc/redhat-release ]] || [[ -f /etc/system-release ]]; then
for line in $(yum repolist enabled | egrep -ie "percona|sysbench|proxysql|pmm" | awk '{print $1}' | awk -F'/' '{print $1}' ); do
count=$(grep -o '-' <<< $line | wc -l)
if [[ $count = 3 ]]; then
echo $line | awk -F '-' '{print $1"-"$2,"- "$3,"| "$4}'
else
echo $line | awk -F '-' '{print $1" - "$2" | " $3}'
fi
done
elif [[ -f /etc/debian_version ]]; then
grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list | cut -f2- -d: | grep percona | awk '{print $2$4}' | sed 's;http://repo.percona.com/;;g' | sed 's;/apt; - ;g' | sed 's;percona;original;g' | sed 's;main;release;g'
else
echo "==>> ERROR: Unsupported operating system"
exit 1
fi
}
#
function is_supported_arch {
local arch=$1
for _arch in ${SUPPORTED_ARCHS}; do
[[ ${_arch} = ${arch} ]] && return
done
return 1
}
function check_specified_alias {
local found=NO
[[ -z ${1} ]] && echo "ERROR: No product alias specified!" && show_help && exit 2
for _alias in ${ALIASES}; do
NAME=$(echo ${1} | sed 's/-//' )
[[ ${_alias} = ${NAME} ]] && found=YES
done
if [[ ${found} = NO ]]; then
echo "ERROR: Unknown alias specification: ${1}"
echo "Available product aliases are: ${ALIASES}"
exit 2
fi
}
function check_specified_repo {
local found=NO
[[ -z ${1} ]] && echo "ERROR: No repository specified!" && show_help && exit 2
for _repo in ${REPOSITORIES}; do
[[ ${_repo} = ${1} ]] && found=YES
done
if [[ ${found} = NO ]]; then
echo "ERROR: Unknown repository: ${1}"
echo "Available repositories are: ${REPOSITORIES}"
exit 2
fi
}
#
function check_os_support {
REPO_NAME=$1
if [[ ${PKGTOOL} = yum ]]; then
if [ -f /etc/os-release ]; then
OS_VER=$(grep VERSION_ID= /etc/os-release | awk -F'"' '{print $2}' | awk -F'.' '{print $1}')
else
OS_VER=$(cat /etc/system-release | awk '{print $(NF-1)}' | awk -F'.' '{print $1}')
fi
reply=$(curl -Is http://repo.percona.com/${REPO_NAME}/yum/release/${OS_VER}/ | head -n 1 | awk '{print $2}')
elif [[ ${PKGTOOL} = "apt-get" ]]; then
OS_VER=$(lsb_release -sc)
reply=$(curl -Is http://repo.percona.com/${REPO_NAME}/apt/dists/${OS_VER}/ | head -n 1 | awk '{print $2}')
fi
if [[ ${reply} != 200 ]]; then
echo "Specified repository is not supported for current operating system!"
exit 2
fi
}
#
function check_repo_availability {
if [[ "$2" == "-y" ]]; then
REPO_NAME=${3}
else
REPO_NAME=${2}
fi
[[ -z ${REPO_NAME} ]] && return 0
[[ ${REPO_NAME} == "original" ]] && REPO_NAME=percona
[[ ${REPO_NAME} == "all" ]] && return 0
if [ ${REPO_NAME} != "mysql-shell" -a ${REPO_NAME} != "pmm-client" -a ${REPO_NAME} != "pmm2-client" -a ${REPO_NAME} != "pmm2-components" ]; then
REPO_NAME=$(echo ${REPO_NAME} | sed 's/-//' | sed 's/\([0-9]\)/-\1/')
fi
REPO_LINK="http://repo.percona.com/${REPO_NAME}/"
reply=$(curl -Is ${REPO_LINK} | head -n 1 | awk '{print $2}')
if [[ ${reply} == 200 ]]; then
if [[ ${REPOSITORIES} != "*${REPONAME}*" ]]; then
REPO_ALIAS=$(echo ${REPO_NAME} | sed 's/-//')
ALIASES="${REPOSITORIES} ${REPO_ALIAS}"
REPOSITORIES="${REPOSITORIES} ${REPO_NAME}"
check_os_support ${REPO_NAME}
fi
else
echo "Specified repository does not exist: ${REPO_LINK}"
exit 2
fi
}
#
function check_specified_component {
local message=""
local found=NO
for _component in all ${COMPONENTS}; do
[[ ${_component} = ${1} ]] && found=YES
done
[[ ${found} = NO ]] && message="ERROR: Unknown component specification: ${1}"
[[ -n ${message} ]] && echo ${message} && show_help && exit 2
}
#
function show_message {
echo "<*> All done!"
if [[ ${MODIFIED} = YES ]] && [[ ${PKGTOOL} = "apt-get" ]]; then
echo "==> Please run \"${PKGTOOL} update\" to apply changes"
fi
}
#
function show_help {
echo
echo "Usage: $(basename ${0}) enable | enable-only | setup | disable (<REPO> | all) [COMPONENT] | show"
echo " Example: $(basename ${0}) enable tools release"
echo " Example: $(basename ${0}) enable-only ps-80 experimental"
echo " Example: $(basename ${0}) setup ps57 | setup-57"
echo " Example: $(basename ${0}) setup -y ps57 | setup -y ps-57"
echo " Example: $(basename ${0}) show"
echo
echo "-> Available commands: ${COMMANDS}"
echo "-> Available setup products: ${ALIASES}"
echo "-> Available repositories: ${REPOSITORIES}"
echo "-> Available components: ${COMPONENTS}"
echo "=> The \"-y\" option for the setup command automatically answers \"yes\" for all interactive questions."
echo "=> The \"show\" command will list all enabled Percona repos on the system."
echo "=> Please see percona-release page for help: https://www.percona.com/doc/percona-repo-config/percona-release.html"
}
#
function run_update {
if [[ ${PKGTOOL} = "apt-get" ]]; then
AUTOUPDATE="YES"
${PKGTOOL} update
fi
}
#
function create_yum_repo {
local _repo=${1}
ARCH_LIST="${ARCH} sources"
[[ ${1} = "original" ]] && _repo=percona && ARCH_LIST="${ARCH} noarch sources"
[[ ${1} = "prel" ]] && ARCH_LIST="noarch"
for _key in ${ARCH_LIST}; do
if ! is_supported_arch "$_key"; then
echo "WARNING: Skipping ${_key} architecture, as it's not supported"
continue
fi
echo "[${_repo}-${2}-${_key}]" >> ${REPOFILE}
echo "name = ${DESCRIPTION} ${2}/${_key} YUM repository" >> ${REPOFILE}
if [[ ${_key} = sources ]]; then
DIR=SRPMS
rPATH=""
ENABLE=0
else
DIR=RPMS
rPATH="/${_key}"
ENABLE=1
fi
echo "baseurl = ${URL}/${_repo}/yum/${2}/\$releasever/${DIR}${rPATH}" >> ${REPOFILE}
echo "enabled = ${ENABLE}" >> ${REPOFILE}
echo "gpgcheck = 1" >> ${REPOFILE}
echo "gpgkey = file:///etc/pki/rpm-gpg/PERCONA-PACKAGING-KEY" >> ${REPOFILE}
echo >> ${REPOFILE}
done
}
#
function create_apt_repo {
local _repo=${1}
[[ ${1} = "original" ]] && _repo=percona
REPOURL="${URL}/${_repo}/apt ${CODENAME}"
if [[ ${2} = release ]]; then
_component=main
echo "deb ${REPOURL} ${_component}" >> ${REPOFILE}
echo "deb-src ${REPOURL} ${_component}" >> ${REPOFILE}
else
echo "deb ${REPOURL} ${_component}" >> ${REPOFILE}
fi
}
#
function enable_component {
local _repo=percona-${1}
[[ -n ${2} ]] && check_specified_component ${2}
if [[ ${2} = all ]]; then
dCOMP=${COMPONENTS}
elif [[ -z ${2} ]]; then
dCOMP=release
else
dCOMP=${2}
fi
#
for _component in ${dCOMP}; do
if [[ ${_repo} = percona-original ]]; then
[[ -f ${LOCATION}/percona-percona-${_component}.${EXT} ]] && _repo="percona-percona"
elif [[ ${_repo} = percona-percona ]]; then
[[ -f ${LOCATION}/percona-original-${_component}.${EXT} ]] && _repo="percona-original"
fi
REPOFILE=${LOCATION}/${_repo}-${_component}.${EXT}
echo "#" > ${REPOFILE}
echo "# This repo is managed by \"$(basename ${0})\" utility, do not edit!" >> ${REPOFILE}
echo "#" >> ${REPOFILE}
if [[ ${PKGTOOL} = yum ]]; then
create_yum_repo ${1} ${_component}
elif [[ ${PKGTOOL} = "apt-get" ]]; then
create_apt_repo ${1} ${_component}
fi
done
}
#
function disable_component {
local _repo=percona-${1}
if [[ ${1} = all ]]; then
for REPO_FILE in $(find ${LOCATION} -type f -iname "percona*.${EXT}" -not -iname "*prel-release*"); do
mv -f ${REPO_FILE} ${REPO_FILE}.bak 2>/dev/null
done
elif [[ -z ${2} ]]; then
for comp in testing experimental; do
mv -f ${LOCATION}/${_repo}-${comp}.${EXT} ${LOCATION}/${_repo}-${comp}.${EXT}.bak 2>/dev/null
done
if [[ ${_repo} != *prel ]]; then
mv -f ${LOCATION}/${_repo}-release.${EXT} ${LOCATION}/${_repo}-release.${EXT}.bak 2>/dev/null
fi
else
check_specified_component ${2}
if [[ ${_repo} != *prel ]]; then
mv -f ${LOCATION}/${_repo}-${2}.${EXT} ${LOCATION}/${_repo}-${2}.${EXT}.bak 2>/dev/null
else
if [[ ${2} != "release" ]]; then
mv -f ${LOCATION}/${_repo}-${2}.${EXT} ${LOCATION}/${_repo}-${2}.${EXT}.bak 2>/dev/null
fi
fi
fi
}
#
function enable_repository {
check_specified_repo ${1}
[[ ${1} = "ps-56" ]] && DESCRIPTION=${PS56_DESC}
[[ ${1} = "ps-57" ]] && DESCRIPTION=${PS57_DESC}
[[ ${1} = "ps-80" ]] && DESCRIPTION=${PS80_DESC}
[[ ${1} = "pxc-56" ]] && DESCRIPTION=${PXC56_DESC}
[[ ${1} = "pxc-57" ]] && DESCRIPTION=${PXC57_DESC}
[[ ${1} = "pxc-80" ]] && DESCRIPTION=${PXC80_DESC}
[[ ${1} = "pxb-24" ]] && DESCRIPTION=${PXB24_DESC}
[[ ${1} = "pxb-80" ]] && DESCRIPTION=${PXB80_DESC}
[[ ${1} = "psmdb-36" ]] && DESCRIPTION=${PSMDB36_DESC}
[[ ${1} = "psmdb-40" ]] && DESCRIPTION=${PSMDB40_DESC}
[[ ${1} = "psmdb-42" ]] && DESCRIPTION=${PSMDB42_DESC}
[[ ${1} = "tools" ]] && DESCRIPTION=${TOOLS_DESC}
[[ ${1} = "ppg-11" ]] && DESCRIPTION=${PPG11_DESC}
[[ ${1} = "ppg-11.5" ]] && DESCRIPTION=${PPG11_5_DESC}
[[ ${1} = "ppg-11.6" ]] && DESCRIPTION=${PPG11_6_DESC}
[[ ${1} = "ppg-11.7" ]] && DESCRIPTION=${PPG11_7_DESC}
[[ ${1} = "ppg-11.8" ]] && DESCRIPTION=${PPG11_8_DESC}
[[ ${1} = "pdmdb-4.2" ]] && DESCRIPTION=${PDMDB4_2_DESC}
[[ ${1} = "pdmdb-4.2.6" ]] && DESCRIPTION=${PDMDB4_2_6_DESC}
[[ ${1} = "pdmdb-4.2.7" ]] && DESCRIPTION=${PDMDB4_2_7_DESC}
[[ ${1} = "pdmdb-4.2.8" ]] && DESCRIPTION=${PDMDB4_2_8_DESC}
[[ ${1} = "ppg-12" ]] && DESCRIPTION=${PPG12_DESC}
[[ ${1} = "ppg-12.2" ]] && DESCRIPTION=${PPG12_2_DESC}
[[ ${1} = "ppg-12.3" ]] && DESCRIPTION=${PPG12_3_DESC}
[[ ${1} = "pdps-8.0" ]] && DESCRIPTION=${PDPS80_DESC}
[[ ${1} = "pdpxc-8.0" ]] && DESCRIPTION=${PDPXC80_DESC}
[[ ${1} = "pdps-8.0.19" ]] && DESCRIPTION=${PDMYSQL80_19_DESC}
[[ ${1} = "pdps-8.0.20" ]] && DESCRIPTION=${PDMYSQL80_20_DESC}
[[ ${1} = "pdpxc-8.0.19" ]] && DESCRIPTION=${PDPXC80_19_DESC}
[[ ${1} = "prel" ]] && DESCRIPTION=${PREL_DESC}
[[ ${1} = "proxysql" ]] && DESCRIPTION=${PROXYSQL_DESC}
[[ ${1} = "sysbench" ]] && DESCRIPTION=${SYSBENCH_DESC}
[[ ${1} = "pt" ]] && DESCRIPTION=${PT_DESC}
[[ ${1} = "pbm" ]] && DESCRIPTION=${PBM_DESC}
[[ ${1} = "mysql-shell" ]] && DESCRIPTION=${MYSQL_SHELL_DESC}
[[ ${1} = "pmm-client" ]] && DESCRIPTION=${PMM_CLIENT_DESC}
[[ ${1} = "pmm2-client" ]] && DESCRIPTION=${PMM2_CLIENT_DESC}
if [[ -z ${DESCRIPTION} ]]; then
REPO_NAME=$(echo ${1} | sed 's/-//')
name=$(echo ${REPO_NAME} | sed 's/[0-9].*//g')
version=$(echo ${REPO_NAME} | sed 's/[a-z]*//g')
if [[ $version != *.* ]] ; then
version=$(echo $version | sed -r ':A;s|([0-9])([0-9]){1}|\1.\2|g')
fi
[[ ${name} == ppg* ]] && DESCRIPTION="${PPG_DESC} $version"
[[ ${name} == pdmdb* ]] && DESCRIPTION="${PDMDB_DESC} $version"
[[ ${name} == psmdb* ]] && DESCRIPTION="${PSMDB_DESC} $version"
[[ ${name} == pdps* ]] && DESCRIPTION="${PDPS_DESC} $version"
[[ ${name} == pdpxc* ]] && DESCRIPTION="${PDPXC_DESC} $version"
fi
[[ -z ${DESCRIPTION} ]] && DESCRIPTION=${DEFAULT_REPO_DESC}
echo "* Enabling the ${DESCRIPTION} repository"
enable_component ${1} ${2}
MODIFIED=YES
}
#
function disable_repository {
local _repos=${1}
if [[ ${1} = all ]]; then
disable_component all
else
check_specified_repo ${1}
if [[ ${1} != "prel" ]]; then
disable_component ${1} ${2}
else
if [[ ${2} != "release" ]]; then
disable_component ${1} ${2}
fi
fi
fi
MODIFIED=YES
}
#
function disable_dnf_module {
REPO_NAME=${1}
MODULE="mysql"
PRODUCT="Percona-Server"
if [[ ${REPO_NAME} == ppg* ]]; then
MODULE="postgresql llvm-toolset"
PRODUCT="Percona PostgreSQL Distribution"
fi
if [[ ${REPO_NAME} == pdps* ]]; then
MODULE="mysql"
PRODUCT="Percona Distribution for MySQL - PS"
fi
if [[ ${REPO_NAME} == pdpxc* ]]; then
MODULE="mysql"
PRODUCT="Percona Distribution for MySQL - PXC"
fi
if [[ ${REPO_NAME} = pxc* ]]; then
MODULE="mysql"
PRODUCT="Percona XtraDB Cluster"
fi
if [[ -f /usr/bin/dnf ]]; then
if [[ ${INTERACTIVE} = YES ]]; then
echo "On Red Hat 8 systems it is needed to disable the following DNF module(s): ${MODULE} to install ${PRODUCT}"
read -r -p "Do you want to disable it? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "Disabling dnf module..."
dnf -y module disable ${MODULE}
echo "DNF ${MODULE} module was disabled"
else
echo "Please note that some packages might be unavailable as packages that aren't included into DNF module are filtered"
echo "If in the future you decide to disable module(s) please execute the next command:"
echo " dnf module disable ${MODULE}"
fi
else
echo "On Red Hat 8 systems it is needed to disable the following DNF module(s): ${MODULE} to install ${PRODUCT}"
echo "Disabling DNF module..."
dnf -y module disable ${MODULE}
echo "DNF ${MODULE} module was disabled"
fi
fi
}
#
function enable_alias {
local REPOS=""
local NAME=$( echo ${1} | sed 's/-//' )
check_specified_alias ${NAME}
[[ ${NAME} = ps56 ]] && REPOS=${PS56REPOS:-}
[[ ${NAME} = ps57 ]] && REPOS=${PS57REPOS:-}
[[ ${NAME} = ps80 ]] && REPOS=${PS80REPOS:-}
[[ ${NAME} = pxc56 ]] && REPOS=${PXC56REPOS:-}
[[ ${NAME} = pxc57 ]] && REPOS=${PXC57REPOS:-}
[[ ${NAME} = pxc80 ]] && REPOS=${PXC80REPOS:-}
[[ ${NAME} = pxb24 ]] && REPOS=${PXB24REPOS:-}
[[ ${NAME} = pxb80 ]] && REPOS=${PXB80REPOS:-}
[[ ${NAME} = psmdb36 ]] && REPOS=${PSMDB36REPOS:-}
[[ ${NAME} = psmdb40 ]] && REPOS=${PSMDB40REPOS:-}
[[ ${NAME} = psmdb42 ]] && REPOS=${PSMDB42REPOS:-}
[[ ${NAME} = ppg11 ]] && REPOS=${PPG11REPOS:-}
[[ ${NAME} = ppg11.5 ]] && REPOS=${PPG11_5_REPOS:-}
[[ ${NAME} = ppg11.6 ]] && REPOS=${PPG11_6_REPOS:-}
[[ ${NAME} = ppg11.7 ]] && REPOS=${PPG11_7_REPOS:-}
[[ ${NAME} = ppg11.8 ]] && REPOS=${PPG11_8_REPOS:-}
[[ ${NAME} = pdmdb4.2 ]] && REPOS=${PDMDB4_2_REPOS:-}
[[ ${NAME} = pdmdb4.2.6 ]] && REPOS=${PDMDB4_2_6_REPOS:-}
[[ ${NAME} = pdmdb4.2.7 ]] && REPOS=${PDMDB4_2_7_REPOS:-}
[[ ${NAME} = pdmdb4.2.8 ]] && REPOS=${PDMDB4_2_8_REPOS:-}
[[ ${NAME} = ppg12 ]] && REPOS=${PPG12_REPOS:-}
[[ ${NAME} = ppg12.2 ]] && REPOS=${PPG12_2_REPOS:-}
[[ ${NAME} = ppg12.3 ]] && REPOS=${PPG12_3_REPOS:-}
[[ ${NAME} = pdps8.0 ]] && REPOS=${PDPS80_REPOS:-}
[[ ${NAME} = pdps8.0.19 ]] && REPOS=${PDPS80_19_REPOS:-}
[[ ${NAME} = pdps8.0.20 ]] && REPOS=${PDPS80_20_REPOS:-}
[[ ${NAME} = pdpxc8.0 ]] && REPOS=${PDPXC80_REPOS:-}
[[ ${NAME} = pdpxc8.0.19 ]] && REPOS=${PDPXC80_19_REPOS:-}
[[ ${NAME} = prel ]] && REPOS=${PREL_REPOS:-}
[[ ${NAME} = proxysql ]] && REPOS=${PROXYSQL_REPOS:-}
[[ ${NAME} = sysbench ]] && REPOS=${SYSBENCH_REPOS:-}
[[ ${NAME} = pt ]] && REPOS=${PT_REPOS:-}
[[ ${NAME} = pbm ]] && REPOS=${PBM_REPOS:-}
[[ ${NAME} = mysqlshell ]] && REPOS=${MYSQL_SHELL_REPOS:-}
[[ ${NAME} = pmmclient ]] && REPOS=${PMM_CLIENT_REPOS:-}
[[ ${NAME} = pmm2client ]] && REPOS=${PMM2_CLIENT_REPOS:-}
[[ ${NAME} = tools ]] && REPOS=${TOOLS_REPOS:-}
[[ ${NAME} = original ]] && REPOS=${ORIGINAL_REPOS:-}
[[ ${NAME} = percona ]] && REPOS=${ORIGINAL_REPOS:-}
if [[ -z ${DESCRIPTION} ]]; then
if [[ -z "${REPOS}" ]]; then
name=$(echo ${NAME} | sed 's/[0-9].*//g')
version=$(echo ${NAME} | sed 's/[a-z]*//g')
[[ ${name} = "ppg" ]] && REPOS="$name-$version"
[[ ${name} = "pdmdb" ]] && REPOS="$name-$version"
[[ ${name} = "psmdb" ]] && REPOS="$name-$version"
[[ ${name} = "pdps" ]] && REPOS="$name-$version"
[[ ${name} = "pdpxc" ]] && REPOS="$name-$version"
fi
fi
if [[ ${NAME} = ps80 ]] || [[ ${NAME} == pxc* ]] || [[ ${NAME} == ppg* ]] || [[ ${NAME} == pdps* ]] || [[ ${NAME} == pdpxc* ]]; then
disable_dnf_module ${NAME}
fi
for _repo in ${REPOS}; do
if [[ -z $(echo ${REPOSITORIES} | grep -o ${_repo}) ]]; then
echo "ERROR: Selected product uses \"${REPOS}\" repositories. But the \"${_repo}\" repository is disabled"
echo "Add \"${_repo}\" repository to REPOSITORIES=\"\" variable in /etc/default/percona-release file and re-run the script"
exit 1
fi
enable_repository ${_repo}
done
run_update
}
#
function check_setup_command {
if [[ "$1" == "-y" || "${!#}" == "-y" ]]; then
export INTERACTIVE=no
elif [[ -n ${2} ]]; then
echo "* \"setup\" command supports only \"-y\""
show_help
exit 2
fi
}
#
if [[ ${COMMANDS} != *${1}* ]]; then
echo "ERROR: Unknown action specified: ${1}"
show_help
exit 2
fi
#
check_repo_availability $@
case $1 in
enable )
shift
enable_repository $@
;;
enable-only )
shift
echo "* Disabling all Percona Repositories"
disable_repository all all
enable_repository $@
;;
setup )
shift
check_setup_command $@
check_specified_alias ${@##-*}
echo "* Disabling all Percona Repositories"
disable_repository all all
enable_alias ${@##-*}
;;
disable )
shift
disable_repository $@
;;
show )
shift
show_enabled
;;
* )
show_help
exit 3
;;
esac
#
if [[ ${AUTOUPDATE} = NO ]]; then
show_message
fi
#

View File

@ -0,0 +1,94 @@
Name: percona-release
Version: 1.0
Release: 27%{?dist}
Summary: Package to install Percona GPG key and YUM repo
License: GPL-3.0+
Group: System Environment/Base
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}
Requires: findutils curl grep
Source0: PERCONA-PACKAGING-KEY
Source1: percona-release.sh
Source2: RPM-GPG-KEY-Percona
%description
%{name} package contains Percona GPG public keys and Percona repository configuration for YUM
%clean
%{__rm} -rf %{buildroot}
%prep
%build
%{__cp} -f %{SOURCE0} %{_builddir}
%{__cp} -f %{SOURCE1} %{_builddir}
%{__cp} -f %{SOURCE2} %{_builddir}
%install
%{__rm} -rf %{buildroot}
%{__install} -D -m 0644 %{SOURCE0} %{buildroot}%{_sysconfdir}/pki/rpm-gpg/PERCONA-PACKAGING-KEY
%{__install} -D -m 0755 %{SOURCE1} %{buildroot}%{_bindir}/percona-release
%{__install} -D -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-Percona
%files
%defattr(-, root, root, 0644)
%{_sysconfdir}/pki/rpm-gpg/PERCONA-PACKAGING-KEY
%{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-Percona
%attr(755, root, root) %{_bindir}/percona-release
%doc PERCONA-PACKAGING-KEY
%pubkey PERCONA-PACKAGING-KEY
%post
#
OS=$(cat /etc/system-release | tr -dc '0-9.'|awk -F'.' {'print $1'})
if [ "x${OS}" != "x8" ]; then
rpm --import %{_sysconfdir}/pki/rpm-gpg/RPM-GPG-KEY-Percona
fi
#
%{_bindir}/percona-release enable original release
%{_bindir}/percona-release enable prel release
#
cat << EOF
The percona-release package now contains a percona-release script that can enable additional repositories for our newer products.
For example, to enable the Percona Server 8.0 repository use:
percona-release setup ps80
Note: To avoid conflicts with older product versions, the percona-release setup command may disable our original repository for some products.
For more information, please visit:
https://www.percona.com/doc/percona-repo-config/percona-release.html
EOF
%preun
#
if [ $1 -eq 0 ]; then
%{_bindir}/percona-release disable all
mv /etc/yum.repos.d/percona-prel-release.repo /etc/yum.repos.d/percona-prel-release.repo.bak
fi
#
%changelog
* Wed Oct 24 2018 Alexey Bychko <alexey.bychko@percona.com> - 0.1-8
- Changed rpm keys, added new paths for repositories
- Added percona-release shell utility
* Wed Sep 06 2017 Alexey Bychko <alexey.bychko@percona.com> - 0.1-5
- Changed description and email for keys, rpm refreshed
* Thu Jun 30 2016 Alexey Bychko <alexey.bychko@percona.com> - 0.1-4
- Added new gpg key (SHA512)
* Tue Sep 23 2014 Alexey Bychko <alexey.bychko@percona.com> - 0.1-3
- Disabled source repo by default
* Thu Sep 18 2014 Alexey Bychko <alexey.bychko@percona.com> - 0.1-2
- Fixed bug #1371003 (removed /usr/bin/gpg dependency)
* Thu Sep 04 2014 Alexey Bychko <alexey.bychko@percona.com> - 0.1-1
- Reworked old rpm from Alexander Kuzminsky