From 647d05be1f21dce0f947036720357c7b8ecf912f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:35:23 +0200 Subject: [PATCH] Improve database setup scripts and dependency handling Adds explicit installation of MariaDB dependencies before setup. Updates MySQL setup to handle unsupported Debian testing/unstable suites by falling back to bookworm if available, with improved error messaging. Ensures PostgreSQL binaries are added to PATH during installation. Expands Ruby setup to install all required build dependencies. --- misc/tools.func | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/misc/tools.func b/misc/tools.func index b7c3e450..2f55f57d 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -2055,6 +2055,14 @@ setup_mariadb() { $STD apt purge -y 'mariadb*' || true fi + # Install required dependencies first (MariaDB needs these from main repos) + msg_info "Installing MariaDB dependencies" + $STD apt update + $STD apt install -y gawk rsync socat libdbi-perl pv || { + msg_error "Failed to install MariaDB dependencies" + return 1 + } + # Cleanup old repository files cleanup_old_repo_files "mariadb" @@ -2241,9 +2249,25 @@ function setup_mysql() { # Cleanup old repository files cleanup_old_repo_files "mysql" - # Use helper function to get fallback suite + # MySQL doesn't support Debian testing/unstable - try bookworm as fallback local SUITE - SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "https://repo.mysql.com/apt/${DISTRO_ID}") + case "$DISTRO_CODENAME" in + trixie | forky | sid) + # MySQL doesn't publish packages for Debian testing/unstable + # Try bookworm as fallback + if verify_repo_available "https://repo.mysql.com/apt/${DISTRO_ID}" "bookworm"; then + SUITE="bookworm" + msg_warn "MySQL ${MYSQL_VERSION} not available for ${DISTRO_CODENAME}, using bookworm packages" + else + msg_error "MySQL ${MYSQL_VERSION} package not available for ${DISTRO_ID}-${DISTRO_CODENAME}" + msg_info "MySQL typically doesn't support Debian testing/unstable. Consider using MariaDB instead." + return 1 + fi + ;; + *) + SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "https://repo.mysql.com/apt/${DISTRO_ID}") + ;; + esac # Use standardized repo setup setup_deb822_repo \ @@ -2263,7 +2287,9 @@ function setup_mysql() { fi if ! apt-cache policy mysql-server | grep -q 'Candidate:'; then - msg_error "MySQL ${MYSQL_VERSION} package not available for ${DISTRO_ID}-${DISTRO_CODENAME}" + msg_error "MySQL ${MYSQL_VERSION} package not available for suite ${SUITE}" + msg_info "Available MySQL components:" + apt-cache search "^mysql-" | grep "^mysql-" | head -20 | sed 's/^/ /' return 1 fi @@ -2645,6 +2671,12 @@ function setup_postgresql() { fi $STD systemctl enable --now postgresql + + # Add PostgreSQL binaries to PATH for the install script + if ! grep -q '/usr/lib/postgresql' /etc/environment 2>/dev/null; then + echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/'"${PG_VERSION}"'/bin"' >/etc/environment + fi + cache_installed_version "postgresql" "$PG_VERSION" msg_ok "Installed PostgreSQL $PG_VERSION" fi @@ -2687,7 +2719,10 @@ function setup_ruby() { msg_info "Installing Ruby $RUBY_VERSION" - ensure_dependencies jq + # Install all required build dependencies + ensure_dependencies jq autoconf patch build-essential rustc libssl-dev libyaml-dev \ + libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 \ + libgdbm-dev libdb-dev uuid-dev local RBENV_RELEASE RBENV_RELEASE=$(curl -fsSL https://api.github.com/repos/rbenv/rbenv/releases/latest | jq -r '.tag_name' | sed 's/^v//')