diff options
author | Arthur Taylor <codders@octomonkey.org.uk> | 2016-11-22 10:56:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-22 10:56:20 +0100 |
commit | 8e9d234dcfe03a24409829ddd31b51bd8f840345 (patch) | |
tree | d1d833d732faf4c8709e975a4bb6129acc3d0f76 /src/package_manager/rpm.rs | |
parent | 0167dce98692f707b74395977c478c2ca44fa0c7 (diff) | |
parent | 4b50e1cb0945adbbcc07dfcb65a9252e7523105d (diff) | |
download | rvi_sota_client-8e9d234dcfe03a24409829ddd31b51bd8f840345.tar.gz |
Merge latest stable advancedtelematic
Diffstat (limited to 'src/package_manager/rpm.rs')
-rw-r--r-- | src/package_manager/rpm.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/package_manager/rpm.rs b/src/package_manager/rpm.rs index 99aacbf..f2c8f2a 100644 --- a/src/package_manager/rpm.rs +++ b/src/package_manager/rpm.rs @@ -5,7 +5,7 @@ use package_manager::package_manager::{InstallOutcome, parse_package}; /// Returns a list of installed RPM packages with -/// `rpm -qa ==queryformat ${NAME} ${VERSION}\n`. +/// `rpm -qa --queryformat ${NAME} ${VERSION}\n`. pub fn installed_packages() -> Result<Vec<Package>, Error> { Command::new("rpm").arg("-qa").arg("--queryformat").arg("%{NAME} %{VERSION}\n") .output() @@ -23,17 +23,22 @@ pub fn installed_packages() -> Result<Vec<Package>, Error> { }) } -/// Installs a new RPM package. +/// Installs a new RPM package with `rpm -Uvh --force <package-path>`. pub fn install_package(path: &str) -> Result<InstallOutcome, InstallOutcome> { let output = try!(Command::new("rpm").arg("-Uvh").arg("--force").arg(path) .output() - .map_err(|e| (UpdateResultCode::GENERAL_ERROR, format!("{:?}", e)))); + .map_err(|err| (UpdateResultCode::GENERAL_ERROR, format!("{:?}", err)))); let stdout = String::from_utf8_lossy(&output.stdout).into_owned(); let stderr = String::from_utf8_lossy(&output.stderr).into_owned(); match output.status.code() { - Some(0) => Ok((UpdateResultCode::OK, stdout)), + Some(0) => { + let _ = Command::new("sync").status() + .map_err(|err| error!("couldn't run 'sync': {}", err)); + Ok((UpdateResultCode::OK, stdout)) + } + _ => { let out = format!("stdout: {}\nstderr: {}", stdout, stderr); if (&stderr).contains("already installed") { |