Update common-functions.sh

This commit is contained in:
MacRimi 2025-08-06 21:47:53 +02:00
parent da9762f60e
commit 6e1cb2e0fe

View File

@ -84,52 +84,64 @@ lvm_repair_check() {
cleanup_duplicate_repos() { cleanup_duplicate_repos() {
msg_info "$(translate "Cleaning up duplicate repositories...")" msg_info "$(translate "Cleaning up duplicate repositories...")"
local sources_file="/etc/apt/sources.list"
local temp_file=$(mktemp)
local cleaned_count=0 local cleaned_count=0
declare -A seen_repos local sources_file="/etc/apt/sources.list"
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" =~ ^[[:space:]]*# ]] || [[ -z "$line" ]]; then if [[ -f "$sources_file" ]]; then
echo "$line" >> "$temp_file" local temp_file
continue temp_file=$(mktemp)
fi declare -A seen_repos
if [[ "$line" =~ ^deb ]]; then while IFS= read -r line || [[ -n "$line" ]]; do
read -r _ url dist components <<< "$line" if [[ "$line" =~ ^[[:space:]]*# ]] || [[ -z "$line" ]]; then
local key="${url}_${dist}" echo "$line" >> "$temp_file"
if [[ -v "seen_repos[$key]" ]]; then continue
echo "# $line" >> "$temp_file" fi
cleaned_count=$((cleaned_count + 1))
if [[ "$line" =~ ^[[:space:]]*deb ]]; then
read -r _ url dist components <<< "$line"
local key="${url}_${dist}"
if [[ -v "seen_repos[$key]" ]]; then
echo "# $line" >> "$temp_file"
cleaned_count=$((cleaned_count + 1))
else
echo "$line" >> "$temp_file"
seen_repos[$key]="$components"
fi
else else
echo "$line" >> "$temp_file" echo "$line" >> "$temp_file"
seen_repos[$key]="$components"
fi fi
else done < "$sources_file"
echo "$line" >> "$temp_file"
fi mv "$temp_file" "$sources_file"
done < "$sources_file" chmod 644 "$sources_file"
fi
mv "$temp_file" "$sources_file"
chmod 644 "$sources_file"
local old_pve_files=(/etc/apt/sources.list.d/pve-*.list /etc/apt/sources.list.d/proxmox.list)
local old_pve_files=(/etc/apt/sources.list.d/pve-*.list)
for file in "${old_pve_files[@]}"; do for file in "${old_pve_files[@]}"; do
if [ -f "$file" ] && [[ "$file" != "/etc/apt/sources.list.d/pve-enterprise.list" ]]; then if [[ -f "$file" ]]; then
if [ -f "/etc/apt/sources.list.d/proxmox.sources" ]; then local base_name
base_name=$(basename "$file" .list)
local sources_equiv="/etc/apt/sources.list.d/${base_name}.sources"
if [[ -f "$sources_equiv" ]] && grep -q "^Enabled: *true" "$sources_equiv"; then
msg_info "$(translate "Removing old repository file: $(basename "$file")")" msg_info "$(translate "Removing old repository file: $(basename "$file")")"
rm -f "$file" rm -f "$file"
cleaned_count=$((cleaned_count + 1)) cleaned_count=$((cleaned_count + 1))
fi fi
fi fi
done done
if [ $cleaned_count -gt 0 ]; then
if [ "$cleaned_count" -gt 0 ]; then
msg_ok "$(translate "Cleaned up $cleaned_count duplicate/old repositories")" msg_ok "$(translate "Cleaned up $cleaned_count duplicate/old repositories")"
apt-get update > /dev/null 2>&1 || true apt-get update > /dev/null 2>&1 || true
else else
msg_ok "$(translate "No duplicate repositories found")" msg_ok "$(translate "No duplicate repositories found")"
fi fi
} }