[meta] source_os = "linux" target_distro_family = "arch" # Debian/Ubuntu/Mint user on their first Arch install. # Body text assumes comfort with apt and systemd but not AUR or rolling release. [log_paths] pacman = "/var/log/pacman.log" steam = "~/.local/share/Steam/logs/content_log.txt" proton = "~/.local/share/Steam/logs/proton_log.txt" lutris = "~/.cache/lutris/logs/lutris.log" # ── pacman / AUR ───────────────────────────────────────────────────────────── [[patterns]] id = "pacman-db-lock" sources = ["journald", "applog:pacman"] match_text = "could not lock database: File exists" severity = "warn" title = "pacman database locked" body = "Lock file left from a crashed pacman run — like dpkg getting killed mid-install. If nothing is running: sudo rm /var/lib/pacman/db.lck — verify first: fuser /var/lib/pacman/db.lck" [[patterns]] id = "pacman-dep-conflict" sources = ["journald", "applog:pacman"] match_text = "conflicting dependencies" severity = "warn" title = "Dependency conflict" body = "Unlike apt, pacman won't auto-resolve conflicts — you decide. Usually one package replaces another (e.g. pipewire-pulse replaces pulseaudio). Remove the conflicting package first, then retry." [[patterns]] id = "pacman-conflicting-files" sources = ["journald", "applog:pacman"] match_text = "error: failed to commit transaction (conflicting files)" severity = "warn" title = "Conflicting files on install" body = "A file already exists on disk that the package wants to own. Check which package owns it: pacman -Qo /path/to/file — then remove the stale file or use --overwrite if you're sure it's safe." [[patterns]] id = "partial-upgrade-warning" sources = ["applog:pacman"] match_text = "warning: database file for" severity = "info" title = "Package database out of sync" body = "On Arch, pacman -Sy (sync without upgrade) is dangerous — partial upgrades break the system. Unlike apt where partial syncs are fine, on Arch always use pacman -Syu. This is the biggest rule to learn coming from Debian." [[patterns]] id = "aur-build-failure" sources = ["journald", "applog:pacman"] match_text = "error: failed to build" severity = "warn" title = "AUR package build failed" body = "The AUR is source-based — no binary packages, makepkg compiles from a PKGBUILD. Read the full output for the cause: missing makedepend, broken upstream URL, or bad patch. Check the package's AUR comments page for known fixes." [[patterns]] id = "aur-pgp-key" sources = ["journald", "applog:pacman"] match_text = "unknown public key" severity = "warn" title = "PGP key not in keyring" body = "AUR packages verify signatures — different from apt's keyring model. Import the key: gpg --recv-keys — or if the PKGBUILD lists validpgpkeys, import exactly those." [[patterns]] id = "makepkg-missing-deps" sources = ["journald", "applog:pacman"] match_text = "Missing dependencies" severity = "warn" title = "AUR build dependencies missing" body = "AUR helpers like paru/yay resolve makedepends automatically. If building manually: sudo pacman -S first. This is like build-dep in apt but you have to do it manually with plain makepkg." [[patterns]] id = "chaotic-aur-sig-fail" sources = ["journald", "applog:pacman"] match_text = "signature from" severity = "warn" title = "Package signature verification failed" body = "Chaotic-AUR key not trusted. Import it: sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com && sudo pacman-key --lsign-key 3056513887B78AEB — then retry." # ── Kernel / DKMS ───────────────────────────────────────────────────────────── [[patterns]] id = "dkms-build-fail" sources = ["journald"] match_text = "Error! Build of" severity = "warn" title = "DKMS module failed to build" body = "A kernel module didn't compile after a kernel update. On Arch's rolling release this happens more than on Debian stable. Check: dkms status — then reinstall the dkms package or wait for an AUR update. Debian had linux-headers; here it's linux-headers (or linux-cachyos-headers on CachyOS)." [[patterns]] id = "kernel-driver-firmware" sources = ["kmsg"] match_text = "firmware: failed to load" severity = "warn" title = "Firmware file missing" body = "sudo pacman -S linux-firmware — similar to firmware-linux-nonfree on Debian but one package covers most hardware. Specific chips (Realtek wifi) may need AUR packages." # ── System ──────────────────────────────────────────────────────────────────── [[patterns]] id = "locale-not-set" sources = ["journald"] match_text = "Cannot set LC_ALL to default locale" severity = "info" title = "Locale not generated" body = "Unlike Debian, Arch doesn't pre-generate locales. Edit /etc/locale.gen (uncomment your locale, e.g. en_US.UTF-8), then: sudo locale-gen — and set LANG=en_US.UTF-8 in /etc/locale.conf." [[patterns]] id = "oom-killer" sources = ["kmsg"] match_text = "Out of memory: Kill process" severity = "warn" title = "OOM killer fired" body = "A process was killed for RAM. Arch doesn't enable zswap by default like Ubuntu does. Add zram: sudo pacman -S zram-generator — or add a swapfile." [[patterns]] id = "disk-io-error" sources = ["kmsg"] match_text = "Buffer I/O error on device" severity = "warn" title = "Disk I/O error" body = "Storage error on a block device. Check SMART: sudo smartctl -a /dev/sdX — or for NVMe: sudo nvme smart-log /dev/nvme0." # ── Audio ───────────────────────────────────────────────────────────────────── [[patterns]] id = "pipewire-connect-fail" sources = ["journald"] match_text = "Failed to connect to PipeWire" severity = "warn" title = "PipeWire not responding" body = "systemctl --user restart pipewire pipewire-pulse wireplumber — Arch defaults to PipeWire; no PulseAudio fallback like Ubuntu has." [[patterns]] id = "bluetooth-rfkill-blocked" sources = ["journald"] match_text = "Blocked through rfkill" severity = "warn" title = "Bluetooth rfkill blocked" body = "rfkill unblock bluetooth — if hard-blocked, check BIOS or a physical switch." # ── GPU / display ───────────────────────────────────────────────────────────── [[patterns]] id = "gpu-hang" sources = ["kmsg"] match_text = "GPU HANG" severity = "warn" title = "GPU hang" body = "GPU stopped responding. On Arch with AMD: check mesa version vs kernel version — both roll together. On NVIDIA: check nvidia-dkms matches the running kernel." [[patterns]] id = "xwayland-crash" sources = ["journald"] match_text = "XWayland server terminated unexpectedly" severity = "warn" title = "XWayland crashed" body = "X11 apps will be dead until session restart. If reproducible with a specific app, check for a Wayland-native version or force X11 with WAYLAND_DISPLAY= unset." # ── Network ─────────────────────────────────────────────────────────────────── [[patterns]] id = "networkmanager-activation-fail" sources = ["journald"] match_text = "Activation failed" severity = "info" title = "NetworkManager: connection failed" body = "nmcli device status — if a wifi adapter is missing, check dmesg for firmware errors. Arch ships most firmware in linux-firmware; some Realtek chips need AUR packages." # ── Gaming ──────────────────────────────────────────────────────────────────── [[patterns]] id = "proton-runtime-missing" sources = ["applog:proton"] match_text = "wine: cannot find" severity = "warn" title = "Proton runtime issue" body = "Right-click game in Steam -> Properties -> Local Files -> Verify integrity." [[patterns]] id = "lutris-wine-fail" sources = ["applog:lutris"] match_text = "Wine is not installed" severity = "warn" title = "Lutris: Wine not found" body = "Lutris needs a Wine runner. In Lutris: Preferences -> Runners -> Wine -> Install — or: paru -S wine-staging"