Morganamilo/paru · error · Status

{pacman exit code}

{pacman exit code}

Error message

Status: {}

What it means

After building AUR packages, build_cleanup checks the result; if packages failed to build it bails with a message listing them, and if the recorded return code is nonzero it wraps it via Status::err(ret), producing 'Status: <pacman exit code>'. This propagates the makepkg/pacman failure exit code as paru's own exit status.

Solutions

  1. Read the build log above the error to find the failing package and the makepkg error.
  2. Clean the build cache for the package (paru -S --clean or remove ~/.cache/paru/clone/<pkg>) and retry.
  3. Update paru and system packages first (paru -Syu) — stale rebuilds often fix it.
  4. Skip persistently broken packages or pin an older commit of the PKGBUILD.

Example fix

// before
paru -S brokenpkg   # build fails -> Status: 2
// after
paru -Sca && paru -S brokenpkg   # clean build, retry
Defensive patterns

Strategy: try-catch

Validate before calling

paru -Si <pkg>  # confirm package exists and looks maintained before building

Try / catch

on nonzero exit after build, run with --clean (paru -S --clean <pkg>) and retry once before reporting

Prevention

When it happens

Trigger: resolve_targets -> build_cleanup after an AUR package build fails: makepkg errors (missing deps, checksum failure, compile error), or the post-build install returning nonzero.

Common situations: Out-of-date PKGBUILDs after upstream changes; missing base-devel or makedepends; architecture-specific build failures; corrupted sources cached in ~/.cache/paru.

Related errors


AI-assisted analysis of Morganamilo/paru@9ac3578807 (2026-09-12). Data as JSON: /api/errors/55ea5055b2bbadf3. Report an issue: GitHub.

Appendix: source

Thrown at src/install.rs:455

                if let Err(err) = clean_untracked(config, &path) {
                    print_error(config.color.error, err);
                    ret = 1;
                }
            }
        }

        if !self.failed.is_empty() {
            let failed = self
                .failed
                .iter()
                .map(|f| f.to_string())
                .collect::<Vec<_>>();
            bail!(tr!("packages failed to build: {}", failed.join("  ")));
        }

        if ret != 0 {
            Status::err(ret)
        } else {
            Ok(())
        }
    }

    fn debug_paths(
        &mut self,
        config: &Config,
        base: &mut Base,
        pkgdest: &HashMap<String, String>,
    ) -> Result<HashMap<String, String>> {
        let mut debug_paths = HashMap::new();

        if config.install_debug {
            for dest in pkgdest.values() {
                let file = dest.rsplit('/').next().unwrap();

                match base {

View on GitHub (pinned to 9ac3578807)