Brave Update sehr langsam

Hallo
Heut ein Update angestoßen, alles wird wunderbar schnell aktualisiert, nur beim Brave Browser hängt es. Das hat heute ~ 20 Minuten gedauert.
Wohlgemerkt NUR das Brave (brave-bin) Paket aus dem AUR.

yay -Si brave-bin
Repository                    : aur
Name                          : brave-bin
Version                       : 1:1.92.138-1
Beschreibung                  : Web browser that blocks ads and trackers by default (binary release)
URL                           : https://brave.com
Lizenzen                      : BSD  custom:chromium  MPL2
Gruppen                       : Keine
Bietet                        : brave=1.92.138  brave-browser
Ist abhängig von              : alsa-lib  gtk3  libxss  nss  ttf-font
Optionale Abhängigkeiten      : cups  libgnome-keyring  libnotify
Abhängigkeiten herstellen     : Keine
Prüfe Abhängigkeiten          : Keine
Ist in Konflikt mit           : brave
Ersetzt                       : Keine
AUR-URL                       : https://aur.archlinux.org/packages/brave-bin
Erstmals eingereicht          : Wed 06 Apr 2016 03:16:04 PM CEST
Stichworte                    : brave  browser
Zuletzt geändert              : Wed 08 Jul 2026 08:32:30 PM CEST
Betreuer                      : brave
Beliebtheit                   : 25.727458
Stimmen                       : 1019
Veraltet                      : No

Und das ist nicht das erste mal. Jedesmal wenn der Brave Browser aktualisiert wird, dauert das solange wie grade beschrieben. Und die Mirrors sind aktuell.

An was kann das liegen?

Echt saukomisch. Ich hatte vorhin auch mit Paru den brave-bin zu laden und es ging geschmeidig schnell. Aber frag mich nicht, welcher Server oder was da ggf. eingestellt war bei mir. Meine regulären Updates danach hingen dann dafür danach an einen 1KB-Server und es hat quälend lange gedauert, bis die 78 Updates geladen und installiert waren. Kann es sein, dass Du aus irgendeinem seltsamen Grund einen festen Server für Brave-Bin hast, der gerade so mau war, wie der bei mir?

Es kann sein das ich einen festen Server für Brave habe, kann ich nicht sagen, weis auch nicht wie ich das feststellen kann. Oder was ich da ändern kann.
Und es ist ja nicht nur ein Server der für AUR Pakete zuständig ist.

Und wie ich schon sagte, das Aktualisieren von Brave dauert IMMER so lange. Nicht nur jetzt.
Also “grade so mau” trifft nicht zu.

Hmm :thinking: Seltsam. Bin gespannt, was bei Dir der Grund ist, denn alles andere geht ja flott, wie Du geschrieben hast. Versuche mal über browser, wie da der Download ist. Wer ist denn Dein Service Provider, über den Du Dein Internet hast?

Ich glaube, ich habe das Problem gefunden. Ich nutze seit einiger Zeit ein Skript für Updates. Das hat hier jemand entwickelt, aber anscheinend hat es mit dem Server, der Brave Updates anbietet, Probleme. Komme aber nicht mehr drauf wer das Skript entwickelt hat.

Der Vorteil vom Skript ist, damit werden alle Möglichen anstehenden Updates angestoßen auch flatpak und snap.

Ein einfaches yay -Syu hat die Sache besser gemacht, zufällig wurde wieder ein kleines Update für Brave angeboten, diesmal ging das problemlos.

Hier das Skript, weis nicht warum das bei mir nicht mehr richtig funktioniert. Vielleicht kann das ja mal jemand analysieren.:

#!/bin/bash

# Enable strict error handling
set -euo pipefail
IFS=$'\n\t'

# Define color constants for better readability
readonly RED='\033[0;31m'
readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly NC='\033[0m' # No Color

# Function to display colored messages
log_message() {
    local level=$1
    local message=$2

    case $level in
        "ERROR") echo -e "${RED}❌ $message${NC}" ;;
        "SUCCESS") echo -e "${GREEN}✅ $message${NC}" ;;
        "WARNING") echo -e "${YELLOW}⚠️  $message${NC}" ;;
        "INFO") echo -e "🔍 $message" ;;
    esac
}

# Enhanced error handling function with color support
handle_error() {
    local exit_code=$1
    local command_name=$2

    case $exit_code in
        0) return ;;
        1) log_message "ERROR" "General error during execution of '$command_name'" ;;
        2) log_message "ERROR" "Invalid option in '$command_name'" ;;
        126) log_message "ERROR" "Permission denied for '$command_name'" ;;
        127) log_message "ERROR" "'$command_name' not found" ;;
        130) log_message "ERROR" "'$command_name' interrupted by user (Ctrl+C)" ;;
        *) log_message "ERROR" "Unknown error during execution of '$command_name' (Exit code: $exit_code)" ;;
    esac

    return $exit_code
}

# Function to check for kernel updates
check_kernel_update() {
    local running_kernel
    local installed_kernels

    running_kernel=$(uname -r | sed 's/-arch1/\.arch1/g' | sed 's/-zen1-1-zen/.zen1-1/g')
    installed_kernels=$(pacman -Q linux linux-lts linux-zen 2>/dev/null | awk '{print $2}')

    echo "Running kernel: '$running_kernel'"
    echo "Installed kernels: '$installed_kernels'"

    if echo "$installed_kernels" | grep -Fxq "$running_kernel"; then
        echo "Kernel version matches: No reboot needed"
        return 0
    fi

    echo "Kernel has been updated! Reboot recommended"
    return 1
}

# Function to check for outdated libraries
check_outdated_libs() {
    if command -v needs-restarting &>/dev/null; then
        if sudo needs-restarting -r | grep -q 'Reboot recommended'; then
            echo "Some running processes are using outdated libraries"
            return 1
        fi
    fi

    if find /proc/*/maps -type f 2>/dev/null | grep -q '/lib'; then
        echo "Some running processes are using outdated libraries"
        return 1
    fi

    echo "No outdated libraries detected"
    return 0
}

# Function to check for failed systemd services
check_systemd_services() {
    local failed_units

    failed_units=$(systemctl list-units --failed --no-pager --quiet | awk '{print $1}' || true)

    if [[ -z "$failed_units" ]]; then
        echo "No failed systemd services"
        return 0
    fi

    # Special case: ignore only fancontrol service failure
    if [[ "$failed_units" == "fancontrol.service" ]]; then
        echo "Fancontrol service failed, but ignored"
        return 0
    fi

    echo "Failed systemd services found:"
    echo "$failed_units"
    return 1
}

# Function to perform system updates
perform_updates() {
    local update_needed=0

    log_message "INFO" "Starting system update..."#!/bin/bash

# Enable strict error handling
set -euo pipefail
IFS=$'\n\t'

# Define color constants for better readability
readonly RED='\033[0;31m'
readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly NC='\033[0m' # No Color

# Function to display colored messages
log_message() {
    local level=$1
    local message=$2

    case $level in
        "ERROR") echo -e "${RED}❌ $message${NC}" ;;
        "SUCCESS") echo -e "${GREEN}✅ $message${NC}" ;;
        "WARNING") echo -e "${YELLOW}⚠️  $message${NC}" ;;
        "INFO") echo -e "🔍 $message" ;;
    esac
}

# Enhanced error handling function with color support
handle_error() {
    local exit_code=$1
    local command_name=$2

    case $exit_code in
        0) return ;;
        1) log_message "ERROR" "General error during execution of '$command_name'" ;;
        2) log_message "ERROR" "Invalid option in '$command_name'" ;;
        126) log_message "ERROR" "Permission denied for '$command_name'" ;;
        127) log_message "ERROR" "'$command_name' not found" ;;
        130) log_message "ERROR" "'$command_name' interrupted by user (Ctrl+C)" ;;
        *) log_message "ERROR" "Unknown error during execution of '$command_name' (Exit code: $exit_code)" ;;
    esac

    return $exit_code
}

# Function to check for kernel updates
check_kernel_update() {
    local running_kernel
    local installed_kernels

    running_kernel=$(uname -r | sed 's/-arch1/\.arch1/g' | sed 's/-zen1-1-zen/.zen1-1/g')
    installed_kernels=$(pacman -Q linux linux-lts linux-zen 2>/dev/null | awk '{print $2}')

    echo "Running kernel: '$running_kernel'"
    echo "Installed kernels: '$installed_kernels'"

    if echo "$installed_kernels" | grep -Fxq "$running_kernel"; then
        echo "Kernel version matches: No reboot needed"
        return 0
    fi

    echo "Kernel has been updated! Reboot recommended"
    return 1
}

# Function to check for outdated libraries
check_outdated_libs() {
    if command -v needs-restarting &>/dev/null; then
        if sudo needs-restarting -r | grep -q 'Reboot recommended'; then
            echo "Some running processes are using outdated libraries"
            return 1
        fi
    fi

    if find /proc/*/maps -type f 2>/dev/null | grep -q '/lib'; then
        echo "Some running processes are using outdated libraries"
        return 1
    fi

    echo "No outdated libraries detected"
    return 0
}

# Function to check for failed systemd services
check_systemd_services() {
    local failed_units

    failed_units=$(systemctl list-units --failed --no-pager --quiet | awk '{print $1}' || true)

    if [[ -z "$failed_units" ]]; then
        echo "No failed systemd services"
        return 0
    fi

    # Special case: ignore only fancontrol service failure
    if [[ "$failed_units" == "fancontrol.service" ]]; then
        echo "Fancontrol service failed, but ignored"
        return 0
    fi

    echo "Failed systemd services found:"
    echo "$failed_units"
    return 1
}

# Function to perform system updates
perform_updates() {
    local update_needed=0

    log_message "INFO" "Starting system update..."

    # Update pacman packages
    if ! sudo pacman -Syu --noconfirm; then
        handle_error $? "pacman"
        update_needed=1
    fi

    # Update AUR packages if helper is installed
    if command -v yay &>/dev/null; then
        if ! yay -Syu --noconfirm; then
            handle_error $? "yay"
            update_needed=1
        fi
    elif command -v paru &>/dev/null; then
        if ! paru -Syu --noconfirm; then
            handle_error $? "paru"
            update_needed=1
        fi
    fi

    # Update Flatpak packages if installed
    if command -v flatpak &>/dev/null; then
        if ! flatpak update -y; then
            handle_error $? "flatpak"
            update_needed=1
        fi
    fi

    # Update Snap packages if installed
    if command -v snap &>/dev/null; then
        if ! sudo snap refresh; then
            handle_error $? "snap"
            update_needed=1
        fi
    fi

    return $update_needed
}

# Function to run system checks and collect results
run_system_checks() {
    local -a check_results=()
    local check_output=""
    local check_status=0
    local overall_status=0

    # Check kernel updates
    check_output=$(check_kernel_update)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Check outdated libraries
    check_output=$(check_outdated_libs)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Check systemd services
    check_output=$(check_systemd_services)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Display all collected messages
    for message in "${check_results[@]}"; do
        echo "$message"
    done

    return $overall_status
}

# Main program
main() {
    # Perform system updates
    perform_updates
    log_message "SUCCESS" "Update completed!"

    log_message "INFO" "Running system checks..."
    if run_system_checks; then
        log_message "SUCCESS" "All checks passed. No reboot required."
    else
        log_message "WARNING" "System reboot recommended!"
        read -rp "Press [Enter] to continue..."
    fi

    # Add small delay and wait for user input
    sleep 3
    read -rp "Press [Enter] to close terminal..."
}

# Execute main program
main
Logo
Powered by
Forgejo logo

with modifications
Codeberg
Blog
Documentation
Community Issues
Contributing
Report Abuse
Association
Who are we?
Bylaws / Satzung
Donate
Join / Support
Contact
Services
Codeberg Pages
Codeberg Translate
Woodpecker CI
Forgejo API
Status Page
Legal
Imprint / Impressum
Privacy Policy
Lizenzen
Terms of Use
Mastodon | Matrix Space (Web link) 

    # Update pacman packages
    if ! sudo pacman -Syu --noconfirm; then
        handle_error $? "pacman"
        update_needed=1
    fi

    # Update AUR packages if helper is installed
    if command -v yay &>/dev/null; then
        if ! yay -Syu --noconfirm; then
            handle_error $? "yay"
            update_needed=1
        fi
    elif command -v paru &>/dev/null; then
        if ! paru -Syu --noconfirm; then
            handle_error $? "paru"
            update_needed=1
        fi
    fi

    # Update Flatpak packages if installed
    if command -v flatpak &>/dev/null; then
        if ! flatpak update -y; then
            handle_error $? "flatpak"
            update_needed=1
        fi
    fi

    # Update Snap packages if installed
    if command -v snap &>/dev/null; then
        if ! sudo snap refresh; then
            handle_error $? "snap"
            update_needed=1
        fi
    fi

    return $update_needed
}

# Function to run system checks and collect results
run_system_checks() {
    local -a check_results=()
    local check_output=""
    local check_status=0
    local overall_status=0

    # Check kernel updates
    check_output=$(check_kernel_update)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Check outdated libraries
    check_output=$(check_outdated_libs)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Check systemd services
    check_output=$(check_systemd_services)
    check_status=$?
    [[ $check_status -eq 1 ]] && overall_status=1
    [[ -n "$check_output" ]] && check_results+=("$check_output")

    # Display all collected messages
    for message in "${check_results[@]}"; do
        echo "$message"
    done

    return $overall_status
}

# Main program
main() {
    # Perform system updates
    perform_updates
    log_message "SUCCESS" "Update completed!"

    log_message "INFO" "Running system checks..."
    if run_system_checks; then
        log_message "SUCCESS" "All checks passed. No reboot required."
    else
        log_message "WARNING" "System reboot recommended!"
        read -rp "Press [Enter] to continue..."
    fi

    # Add small delay and wait for user input
    sleep 3
    read -rp "Press [Enter] to close terminal..."
}

# Execute main program
main
Logo
Powered by
Forgejo logo

with modifications
Codeberg
Blog
Documentation
Community Issues
Contributing
Report Abuse
Association
Who are we?
Bylaws / Satzung
Donate
Join / Support
Contact
Services
Codeberg Pages
Codeberg Translate
Woodpecker CI
Forgejo API
Status Page
Legal
Imprint / Impressum
Privacy Policy
Lizenzen
Terms of Use
Mastodon | Matrix Space (Web link)

Die Updates vom AUR Paket für Brave werden direkt von Github heruntergeladen, die normalen Arch Mirrors sind da nicht beteiligt.

Es kann durchaus sein, dass es einfach manchmal langsam ist (z.B. Störung bei Github, Probleme mit CDN, langsamen Server zugewiesen bekommen, schlechtes Routing, usw.).

@LaGGGer:
Was man machen könnte, ist brave-bin mal mit yay im debug-modus zu installieren und die Ausgabe zunächst in eine Txt-Datei zu zwischenzuspeichern, damit Du im Terminal siehst, dass da wirklich was läuft, statt das gleich in eine Paste-Datei zu schicken.

Diese Txt-Datei wird den kompletten Debug-Log beinhalten und den kannst Du dann “pasten”. D.h. Du gibst den Inhalt dieser Debugdatei in eine Paste-Datei, die dann als link bereitgestellt wird und so große Mengen, wie einen Debugbericht gut darstellen kann aber eben nicht als Brocken bei Dir auf dem Rechner liegen bleiben muss.

Die txt-Datei kannst Du dann also löschen, wenn Du die in die Paste-Datei übertragen hast und den Link hast. So eine Paste-Datei nimmt man immer, wenn es große Logs oder so zum Betrachten gibt, und dieser Link existiert dann noch eine Weile, wird aber bald gelöscht. Ist wirklich nur für das aktuelle Debugging.

Man könnte da dann nämlich sehen, wo beim Laden und Bauen von Brave-bin ggf. was bei Dir hakt, dass das immer 20 Minuten dauert, bis es bei Dir fertig ist.


yay -S brave-bin --debug 2>&1 | tee yay-brave-debug.txt

(Einfach warten, bis der Vorgang vollständig durchgelaufen ist.)

curl --data-binary @yay-brave-debug.txt https://paste.rs

Einfach in die Past-Datei schicken, dann kommt sowas als link:

https://paste.rs/xxxxxx

Den Link kannst Du dann in diesen Thread stellen und schauen, wo genau es bei Dir hängt, das es so elend lange dauert, bis brave bei Dir durch ist. Dann kann man ggf. was dagegen machen, wenn klar ist, wo es klemmt.

Danke für eure Beiträge.

Nun, wie ich schon sagte, es liegt definitiv an dem Skript, soweit konnte ich mein Problem eingrenzen.
Allerdings kann ich nicht sagen warum das so ist, ich kann das Skript nicht lesen, ich verstehe nicht was da alles passiert.
Wenn ich das Update mit yay anstoße, laufen alle Updates ohne Verzögerung durch.

Wie ich schon schrieb, das Skript kann noch zu den normalen Paketquellen auch flatpak und snap updaten. Natürlich auch das AUR. Deshalb habe ich das benutzt.

Aber ich werde mir kein snap Paket installieren, soviel ist sicher, und das eine flatpak Paket das ich habe, kann ich auch händisch im Terminal updaten mit flatpak update

Somit ist das Skript passee und mein Problem gelöst.

Wäre natürlich schön wen jemand den Fehler im Skript findet, aber so bin ich auch zufrieden.

Na dann ist das Problem ja gelöst. Händisch zu aktualisieren liegt mir auch mehr, da man dabei in aller Regel sofort eine Meldung erhält, wenn etwas nicht glatt läuft oder gar Fehler auftreten. :+1: