deb: fix injection of .deb packages with apt-get
This commit is contained in:
@@ -275,29 +275,24 @@ fn install_injected_packages(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install .deb files using dpkg -i
|
// Install .deb files
|
||||||
if !deb_files.is_empty() {
|
if !deb_files.is_empty() || !package_names.is_empty() {
|
||||||
log::info!("Installing .deb files: {:?}", deb_files);
|
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");
|
let mut cmd = ctx.command("apt-get");
|
||||||
cmd.envs(env.clone())
|
cmd.envs(env.clone())
|
||||||
.arg("-y")
|
.arg("-y")
|
||||||
.arg("--allow-downgrades")
|
.arg("--allow-downgrades")
|
||||||
.arg("install")
|
.arg("install");
|
||||||
.args(&package_names);
|
// 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()?;
|
let status = cmd.status()?;
|
||||||
if !status.success() {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user