Improve MariaDB setup and repository update logic
Some checks failed
Bump build.func Revision / bump-revision (push) Has been cancelled

Enhanced the setup_mariadb function to better handle MariaDB repository updates, version checks, and upgrade flows. The script now updates the repository if the version differs, provides clearer messaging, and ensures proper upgrade steps for both repository and package updates.
This commit is contained in:
CanbiZ 2025-10-24 15:16:37 +02:00
parent 05f56e9ef1
commit 8a7ddb05dc

View File

@ -2231,31 +2231,71 @@ setup_mariadb() {
local CACHED_VERSION
CACHED_VERSION=$(get_cached_version "mariadb")
if [[ "$CURRENT_VERSION" == "$MARIADB_VERSION" ]]; then
if [[ "$CACHED_VERSION" == "$MARIADB_VERSION" ]]; then
upgrade_package mariadb-server
upgrade_package mariadb-client
else
$STD apt update || {
msg_error "Failed to update package list"
return 1
}
$STD apt install --only-upgrade -y mariadb-server mariadb-client || {
msg_error "Failed to upgrade MariaDB"
return 1
}
cache_installed_version "mariadb" "$MARIADB_VERSION"
# Check if MariaDB is already installed and needs update
if [[ -n "$CURRENT_VERSION" ]]; then
# Check if repository exists and needs update
local REPO_VERSION=""
if [[ -f /etc/apt/sources.list.d/mariadb.sources ]]; then
REPO_VERSION=$(grep -oP 'repo/\K[0-9]+\.[0-9]+\.[0-9]+' /etc/apt/sources.list.d/mariadb.sources 2>/dev/null || echo "")
fi
if [[ -n "$REPO_VERSION" && "$REPO_VERSION" != "$MARIADB_VERSION" ]]; then
msg_info "Update MariaDB repository from $REPO_VERSION to $MARIADB_VERSION"
# Remove old repository
cleanup_old_repo_files "mariadb"
# Use helper function to get fallback suite
local SUITE
DISTRO_ID=$(awk -F= '/^ID=/{print $2}' /etc/os-release | tr -d '"')
DISTRO_CODENAME=$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)
SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "http://mirror.mariadb.org/repo/${MARIADB_VERSION}/${DISTRO_ID}")
# Setup new repository
setup_deb822_repo \
"mariadb" \
"https://mariadb.org/mariadb_release_signing_key.asc" \
"http://mirror.mariadb.org/repo/${MARIADB_VERSION}/${DISTRO_ID}" \
"$SUITE" \
"main" \
"amd64 arm64" || {
msg_error "Failed to update MariaDB repository"
return 1
}
msg_ok "Update MariaDB repository from $REPO_VERSION to $MARIADB_VERSION"
fi
# Now perform the update
if [[ "$CURRENT_VERSION" == "$MARIADB_VERSION" ]]; then
if [[ "$CACHED_VERSION" == "$MARIADB_VERSION" ]]; then
msg_info "Update MariaDB $MARIADB_VERSION"
upgrade_package mariadb-server
upgrade_package mariadb-client
msg_ok "Update MariaDB $MARIADB_VERSION"
else
msg_info "Update MariaDB $MARIADB_VERSION"
$STD apt update || {
msg_error "Failed to update package list"
return 1
}
$STD apt install --only-upgrade -y mariadb-server mariadb-client || {
msg_error "Failed to upgrade MariaDB"
return 1
}
cache_installed_version "mariadb" "$MARIADB_VERSION"
msg_ok "Update MariaDB $MARIADB_VERSION"
fi
return 0
else
# Version mismatch - need to upgrade to new version
msg_info "Upgrade MariaDB from $CURRENT_VERSION to $MARIADB_VERSION"
$STD systemctl stop mariadb >/dev/null 2>&1 || true
fi
return 0
fi
msg_info "Setup MariaDB $MARIADB_VERSION"
if [[ -n "$CURRENT_VERSION" ]]; then
$STD systemctl stop mariadb >/dev/null 2>&1 || true
$STD apt purge -y 'mariadb*' || true
fi
# Ensure APT is working before proceeding
ensure_apt_working || return 1