{"record":{"id":"f1aa1d71ef46f256","repo":"Morganamilo/paru","slug":"downloadonly-can-t-be-used-for-aur-packages","errorCode":null,"errorMessage":"--downloadonly can't be used for AUR packages","messagePattern":"--downloadonly can't be used for AUR packages","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/install.rs","lineNumber":1080,"sourceCode":"            return false;\n        }\n        if ran_pacman {\n            return false;\n        }\n        aur_targets.is_empty() && upgrades.aur_keep.is_empty() && upgrades.pkgbuild_keep.is_empty()\n    }\n\n    async fn prepare_build(\n        &mut self,\n        config: &Config,\n        cache: &Cache,\n        actions: &mut Actions<'_>,\n    ) -> Result<()> {\n        if !actions.build.is_empty() && nix::unistd::getuid().is_root() {\n            bail!(tr!(\"can't install AUR package as root\"));\n        }\n        if !actions.build.is_empty() && config.args.has_arg(\"w\", \"downloadonly\") {\n            bail!(tr!(\"--downloadonly can't be used for AUR packages\"));\n        }\n\n        let conflicts = check_actions(config, actions, self.install_targets)?;\n\n        self.conflicts = conflicts\n            .0\n            .iter()\n            .map(|c| c.pkg.clone())\n            .chain(conflicts.1.iter().map(|c| c.pkg.clone()))\n            .collect::<HashSet<_>>();\n\n        let c = config.color;\n\n        print_warnings(config, cache, Some(actions));\n\n        if actions.build.is_empty() && actions.install.is_empty() {\n            printtr!(\" there is nothing to do\");\n            return Ok(());","sourceCodeStart":1062,"sourceCodeEnd":1098,"githubUrl":"https://github.com/Morganamilo/paru/blob/9ac3578807a87858651e81a02586ceb947686e7c/src/install.rs#L1062-L1098","documentation":"prepare_build rejects the --downloadonly (-w) flag when the resolved action set includes AUR packages to build. --downloadonly only downloads repository packages without installing; AUR packages must be built locally, so 'download only' is meaningless for them and paru bails instead of silently ignoring the flag.","triggerScenarios":"Running e.g. `paru -Sw <aur-package>` (or `paru -S <aur-pkg> -w`) where split_repo_aur_targets assigns the target to the AUR, actions.build is non-empty, and config.args.has_arg(\"w\", \"downloadonly\") is true.","commonSituations":"Users trying to pre-fetch an AUR package's sources with -w; scripts that always pass -w for dry-run-style downloads; confusion of -w with -Sp or `paru -G` (get pkgbuild) workflows.","solutions":["Drop the -w/--downloadonly flag when the target is an AUR package","Use `paru -G <pkg>` to fetch AUR PKGBUILDs/sources without building","Split the operation: repo packages with -w, AUR packages without it","Check whether your wrapper script unconditionally appends -w"],"exampleFix":"// before\n$ paru -Sw slack-desktop      # AUR package + downloadonly\n// after\n$ paru -G slack-desktop       # fetch without building, or\n$ paru -S slack-desktop       # normal build/install","handlingStrategy":"validation","validationCode":"if args.has_arg(\"w\", \"downloadonly\") && targets.any(is_aur_pkg) {\n    eprintln!(\"--downloadonly is invalid for AUR targets; use paru -G instead\");\n    std::process::exit(1);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only use -w with repository package targets","Use `paru -G <pkg>` to fetch AUR sources without building","Audit wrapper scripts for unconditional -w flags"],"tags":["aur","cli-flag","downloadonly","pacman"],"backgroundTag":"conflicting-config-options","analyzedSha":"9ac3578807a87858651e81a02586ceb947686e7c","analyzedAt":"2026-09-12T04:57:59.861Z","contentChangedAt":"2026-09-12T04:57:59.861Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}