Skip to content

Instantly share code, notes, and snippets.

@erincerys
Created December 1, 2025 10:02
Show Gist options
  • Select an option

  • Save erincerys/999fc06a101ff53f34db04781d67277d to your computer and use it in GitHub Desktop.

Select an option

Save erincerys/999fc06a101ff53f34db04781d67277d to your computer and use it in GitHub Desktop.
Unbork pacman - correct time, update certificates, refresh keyring, reduce package cache, upgrade pacman and AUR helper
#!/bin/bash
function updateSystemClock() {
# timedatectl timesync-status; echo
_log stdout 'Synchronizing clock'
sudo systemctl restart systemd-timesyncd || return 1
sleep 2; echo
# systemctl status systemd-timesyncd; echo
journalctl --lines=1 -xru systemd-timesyncd; echo
}
function upgradeAurHelper() {
_log stdout 'Upgrading AUR helper'
# sudo pacman -S "${PACMAN_ARGS[@]}" "$SYS_PACMAN_AUR_HELPER"
_AUR_HELPER_BUILD_PATH="$HOME/pkg/${SYS_PACMAN_AUR_HELPER}"
rm "${_AUR_HELPER_BUILD_PATH}.tar.gz" "${_AUR_HELPER_BUILD_PATH}/*" 2>/dev/null
cd "$_AUR_HELPER_BUILD_PATH" || return 1
wget "https://aur.archlinux.org/cgit/aur.git/snapshot/${SYS_PACMAN_AUR_HELPER}.tar.gz"
tar -xzf "${_AUR_HELPER_BUILD_PATH}.tar.gz" || return 1
makepkg -s || return 1; echo
sudo pacman -U ${SYS_PACMAN_AUR_HELPER}*.pkg.tar.zst; echo
cd - || return 1
}
function reloadPacmanKeyring() {
## Upgrade management-related packages
_log stdout 'Upgrading key management packages'
sudo pacman -S "${PACMAN_ARGS[@]}" gpgme ca-certificates || return 1
sudo pacman -S "${PACMAN_ARGS[@]}" archlinux-keyring || return 1; echo
## Update and refresh key management database
_log stdout 'Rebuilding repository key database'
sudo pacman-key --init || return 1
sudo pacman-key --populate archlinux || return 1
# sudo pacman-key --refresh-keys
}
function fixpacman () {
updateSystemClock || return 1; echo
_log stdout 'Pruning package cache'
sudo paccache -k3 -r || return 1; echo
# local PACMAN_ARGS=('--needed' '--noprogressbar' '--noconfirm' '--color=never' '--quiet')
local PACMAN_ARGS=('--needed' '--noconfirm' '--color=always' '--quiet')
_log stdout 'Refreshing package index'
sudo pacman -Sy "${PACMAN_ARGS[@]}" || return 1; echo
_log stdout 'Upgrading pacman'
# pacman --version; echo
sudo pacman -S "${PACMAN_ARGS[@]}" pacman || return 1; echo
reloadPacmanKeyring || return 1
upgradeAurHelper || return 1
_log stdout 'Upgrading AUR-based key management packages'
"$SYS_PACMAN_AUR_HELPER" -S debian-keyring || return 1
}; export fixpacman
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment