function set_centos_python3_version() {
# This function expects $1 to be a string like "python3.9"
- local CURRENT_PYTHON3_VERSION=$(sudo alternatives --display python3 | grep -e 'Current.*best.* version is' | awk '{ print $5 }' | sed 's/\.$//')
local EXPECTED_PYTHON3_VERSION=$1
- if ! [[ "$CURRENT_PYTHON3_VERSION" =~ .*"$EXPECTED_PYTHON3_VERSION" ]]; then
- PYTHON3_TO_REMOVE=$(rpm -qf $CURRENT_PYTHON3_VERSION | cut -d '-' -f1)
- sudo dnf remove -y ${PYTHON3_TO_REMOVE}\*
- sudo dnf install -y $EXPECTED_PYTHON3_VERSION || sudo dnf reinstall -y $EXPECTED_PYTHON3_VERSION
- sudo alternatives --display python3
- else
- echo "python3 symlink already points to $CURRENT_PYTHON3_VERSION"
- fi
+ local EXPECTED_PYTHON3_VERSION_MASHED=$(echo $EXPECTED_PYTHON3_VERSION | tr -d '.')
+ for package in $(rpm -qa | grep -E '^python3[1-9]{1,3}' | grep -v $EXPECTED_PYTHON3_VERSION_MASHED); do
+ sudo dnf remove -y $package --noautoremove
+ done
+ sudo dnf reinstall -y $EXPECTED_PYTHON3_VERSION || sudo dnf install -y $EXPECTED_PYTHON3_VERSION
}