From 73511c258b464bb1916946682e52ae699c9d60c3 Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Sat, 4 Apr 2026 12:41:52 +0200 Subject: [PATCH] deb: fix injection of .deb packages with apt-get --- src/deb/local.rs | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/deb/local.rs b/src/deb/local.rs index b068c0f..b23920c 100644 --- a/src/deb/local.rs +++ b/src/deb/local.rs @@ -275,29 +275,24 @@ fn install_injected_packages( } } - // Install .deb files using dpkg -i - if !deb_files.is_empty() { + // Install .deb files + if !deb_files.is_empty() || !package_names.is_empty() { log::info!("Installing .deb files: {:?}", deb_files); - let mut cmd = ctx.command("dpkg"); - cmd.envs(env.clone()).arg("-i").args(&deb_files); - let status = cmd.status()?; - if !status.success() { - return Err(format!("Could not install .deb files: {:?}", deb_files).into()); - } - } - - // Install package names using apt-get - if !package_names.is_empty() { - log::info!("Installing packages from archive: {:?}", package_names); let mut cmd = ctx.command("apt-get"); cmd.envs(env.clone()) .arg("-y") .arg("--allow-downgrades") - .arg("install") - .args(&package_names); + .arg("install"); + // Add the .deb file paths with ./ prefix for apt to recognize them as local files + for deb_path in &deb_files { + cmd.arg(format!("./{}", deb_path.trim_start_matches('/'))); + } + if !package_names.is_empty() { + cmd.args(&package_names); + } let status = cmd.status()?; if !status.success() { - return Err(format!("Could not install injected packages: {:?}", package_names).into()); + return Err(format!("Could not install injected packages: {:?}", deb_files).into()); } }