fix: build paru from source when paru-bin has libalpm.so version mismatch

This commit is contained in:
2026-05-29 00:31:25 +02:00
parent d6e94f5050
commit 041a8c33ea

View File

@@ -260,6 +260,21 @@ install_aur_package() {
return $rc return $rc
} }
_install_paru_bin() {
local build_dir="$1"
git clone https://aur.archlinux.org/paru-bin.git "$build_dir/paru-bin" 2>/dev/null || return 1
(cd "$build_dir/paru-bin" && makepkg -si --needed --noconfirm) 2>/dev/null || return 1
return 0
}
_install_paru_source() {
local build_dir="$1"
sudo_run pacman -S --needed --noconfirm go
git clone https://aur.archlinux.org/paru.git "$build_dir/paru" 2>/dev/null || return 1
(cd "$build_dir/paru" && makepkg -si --needed --noconfirm) 2>/dev/null || return 1
return 0
}
install_aur_helper() { install_aur_helper() {
if have paru || have yay; then if have paru || have yay; then
return 0 return 0
@@ -279,48 +294,39 @@ install_aur_helper() {
local build_dir local build_dir
build_dir="$(mktemp -d)" build_dir="$(mktemp -d)"
tui_info "Downloading paru-bin from AUR..." tui_info "Installing paru-bin (binary AUR helper)..."
if ! git clone https://aur.archlinux.org/paru-bin.git "$build_dir/paru-bin"; then if _install_paru_bin "$build_dir" && paru --version >/dev/null 2>&1; then
tui_error "Failed to download paru-bin. Check network connectivity." tui_success "paru works"
rm -rf "$build_dir" rm -rf "$build_dir"
return 1 return 0
fi fi
tui_info "Building paru-bin with makepkg..." tui_warn "paru-bin failed or has library mismatch. Building paru from source..."
if (cd "$build_dir/paru-bin" && makepkg -si --needed --noconfirm); then rm -rf "$build_dir"/*
tui_success "paru installed successfully" mkdir -p "$build_dir"
rm -rf "$build_dir"
else
local rc=$?
tui_warn "makepkg failed (exit $rc). Trying yay-bin..."
rm -rf "$build_dir/paru-bin"
if git clone https://aur.archlinux.org/yay-bin.git "$build_dir/yay-bin"; then if _install_paru_source "$build_dir"; then
if (cd "$build_dir/yay-bin" && makepkg -si --needed --noconfirm); then tui_success "paru built and installed from source"
rm -rf "$build_dir"
return 0
fi
tui_warn "paru source build failed. Trying yay as fallback..."
rm -rf "$build_dir"/*
if git clone https://aur.archlinux.org/yay-bin.git "$build_dir/yay-bin" 2>/dev/null; then
if (cd "$build_dir/yay-bin" && makepkg -si --needed --noconfirm) 2>/dev/null; then
tui_success "yay installed successfully" tui_success "yay installed successfully"
rm -rf "$build_dir" rm -rf "$build_dir"
else return 0
tui_warn "Could not install AUR helper. Install manually:" fi
tui_info " cd /tmp && git clone https://aur.archlinux.org/paru-bin.git" fi
tui_info " cd paru-bin && makepkg -si"
tui_warn "Could not install any AUR helper. Install manually:"
tui_info " sudo pacman -S go && git clone https://aur.archlinux.org/paru.git"
tui_info " cd paru && makepkg -si"
rm -rf "$build_dir" rm -rf "$build_dir"
return 1 return 1
fi
fi
fi
if have paru; then
tui_info "Verifying paru..."
if paru --version >/dev/null 2>&1; then
tui_success "paru works"
return 0
else
tui_warn "paru binary installed but fails to run. Falling back to direct AUR installs."
tui_info "Will install AUR packages via git clone + makepkg instead."
fi
fi
return 0
} }
install_aur() { install_aur() {