Update tools.func
Some checks failed
Bump build.func Revision / bump-revision (push) Has been cancelled

This commit is contained in:
CanbiZ 2025-10-20 09:19:47 +02:00
parent 57b9a609cb
commit 5022388d00

View File

@ -525,14 +525,35 @@ cleanup_old_repo_files() {
# Remove old GPG keys from trusted.gpg.d
rm -f /etc/apt/trusted.gpg.d/"${app}"*.gpg
# Remove keyrings from /etc/apt/keyrings (FIX: This was missing!)
# Remove keyrings from /etc/apt/keyrings
rm -f /etc/apt/keyrings/"${app}"*.gpg
# Remove duplicate .sources files (keep only the main one)
local sources_file="/etc/apt/sources.list.d/${app}.sources"
if [[ -f "$sources_file" ]]; then
find /etc/apt/sources.list.d/ -name "${app}*.sources" ! -name "${app}.sources" -delete 2>/dev/null || true
fi
# Remove ALL .sources files for this app (including the main one)
# This ensures no orphaned .sources files reference deleted keyrings
rm -f /etc/apt/sources.list.d/"${app}"*.sources
}
# ------------------------------------------------------------------------------
# Cleanup orphaned .sources files that reference missing keyrings
# This prevents APT signature verification errors
# ------------------------------------------------------------------------------
cleanup_orphaned_sources() {
local sources_dir="/etc/apt/sources.list.d"
local keyrings_dir="/etc/apt/keyrings"
[[ ! -d "$sources_dir" ]] && return 0
while IFS= read -r -d '' sources_file; do
# Extract Signed-By path from .sources file
local keyring_path
keyring_path=$(grep -E '^Signed-By:' "$sources_file" 2>/dev/null | awk '{print $2}')
# If keyring doesn't exist, remove the .sources file
if [[ -n "$keyring_path" ]] && [[ ! -f "$keyring_path" ]]; then
msg_warn "Removing orphaned sources file: $(basename "$sources_file") (missing keyring: $(basename "$keyring_path"))"
rm -f "$sources_file"
fi
done < <(find "$sources_dir" -name "*.sources" -print0 2>/dev/null)
}
# ------------------------------------------------------------------------------
@ -548,9 +569,12 @@ setup_deb822_repo() {
msg_info "Setting up $name repository"
# Cleanup old configs
# Cleanup old configs for this app
cleanup_old_repo_files "$name"
# Cleanup any orphaned .sources files from other apps
cleanup_orphaned_sources
# Ensure keyring directory exists
mkdir -p /etc/apt/keyrings
@ -2135,6 +2159,9 @@ function setup_mongodb() {
# Cleanup old repository files
cleanup_old_repo_files "mongodb-org-${MONGO_VERSION}"
# Cleanup any orphaned .sources files from other apps
cleanup_orphaned_sources
# Use helper function to get fallback suite
local SUITE
SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "$MONGO_BASE_URL")
@ -2565,12 +2592,25 @@ function setup_postgresql() {
# Cleanup old repository files
cleanup_old_repo_files "pgdg"
# Use helper function to get fallback suite
# PostgreSQL PGDG repository uses special suite naming
# For unstable/testing Debian, we need to check what's actually available
local SUITE
SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "https://apt.postgresql.org/pub/repos/apt")
# PGDG uses special suite naming: ${SUITE}-pgdg
SUITE="${SUITE}-pgdg"
case "$DISTRO_CODENAME" in
trixie | forky | sid)
# Try trixie-pgdg first, fallback to bookworm-pgdg if not available
if verify_repo_available "https://apt.postgresql.org/pub/repos/apt" "trixie-pgdg"; then
SUITE="trixie-pgdg"
else
SUITE="bookworm-pgdg"
fi
;;
*)
# Use helper function for stable releases
SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "https://apt.postgresql.org/pub/repos/apt")
# PGDG uses special suite naming: ${SUITE}-pgdg
SUITE="${SUITE}-pgdg"
;;
esac
# Use standardized repo setup
setup_deb822_repo \
@ -2581,7 +2621,23 @@ function setup_postgresql() {
"main" \
"amd64 arm64"
$STD apt install -y "postgresql-${PG_VERSION}" "postgresql-client-${PG_VERSION}"
# Update apt and verify package availability
if ! $STD apt update; then
msg_error "APT update failed for PostgreSQL repository"
return 1
fi
if ! apt-cache policy "postgresql-${PG_VERSION}" | grep -q 'Candidate:'; then
msg_error "PostgreSQL ${PG_VERSION} package not available for suite ${SUITE}"
msg_info "Available PostgreSQL versions:"
apt-cache search "^postgresql-[0-9]" | grep "^postgresql-" | sed 's/^/ /'
return 1
fi
if ! $STD apt install -y "postgresql-${PG_VERSION}" "postgresql-client-${PG_VERSION}"; then
msg_error "Failed to install PostgreSQL ${PG_VERSION}"
return 1
fi
if [[ -n "$CURRENT_PG_VERSION" ]]; then
$STD apt purge -y "postgresql-${CURRENT_PG_VERSION}" "postgresql-client-${CURRENT_PG_VERSION}" || true
@ -2791,9 +2847,8 @@ function setup_clickhouse() {
# Ensure dependencies
ensure_dependencies apt-transport-https ca-certificates dirmngr gnupg
# Use helper function to get fallback suite
local SUITE
SUITE=$(get_fallback_suite "$DISTRO_ID" "$DISTRO_CODENAME" "https://packages.clickhouse.com/deb")
# ClickHouse uses 'stable' instead of distro codenames
local SUITE="stable"
# Use standardized repo setup
setup_deb822_repo \
@ -2804,17 +2859,42 @@ function setup_clickhouse() {
"main" \
"amd64 arm64"
# Install ClickHouse packages
# Update and install ClickHouse packages
export DEBIAN_FRONTEND=noninteractive
$STD apt install -y clickhouse-server clickhouse-client
if ! $STD apt update; then
msg_error "APT update failed for ClickHouse repository"
return 1
fi
if ! $STD apt install -y clickhouse-server clickhouse-client; then
msg_error "Failed to install ClickHouse packages"
return 1
fi
# Verify installation
if ! command -v clickhouse-server >/dev/null 2>&1; then
msg_error "ClickHouse installation completed but clickhouse-server command not found"
return 1
fi
# Create data directory if it doesn't exist
mkdir -p /var/lib/clickhouse
chown -R clickhouse:clickhouse /var/lib/clickhouse
# Check if clickhouse user exists before chown
if id clickhouse >/dev/null 2>&1; then
chown -R clickhouse:clickhouse /var/lib/clickhouse
else
msg_warn "ClickHouse user not found, skipping chown"
fi
# Enable and start service
$STD systemctl enable clickhouse-server
safe_service_restart clickhouse-server
if ! $STD systemctl enable clickhouse-server; then
msg_warn "Failed to enable clickhouse-server service"
fi
if ! safe_service_restart clickhouse-server; then
msg_warn "Failed to start clickhouse-server service (this may be normal on first install)"
fi
cache_installed_version "clickhouse" "$CLICKHOUSE_VERSION"
msg_ok "Installed ClickHouse $CLICKHOUSE_VERSION"