function set_centos_python3_version() {
# This function expects $1 to be a string like "python3.9"
- local CURRENT_PYTHON3_VERSION=$(sudo alternatives --list | grep -e '^python3' | awk '{ print $3 }')
+ 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
- sudo dnf install -y $EXPECTED_PYTHON3_VERSION
- sudo alternatives --set python3 /usr/bin/$EXPECTED_PYTHON3_VERSION
+ 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