【问题标题】:Checking for missing dependencies without installing an RPM在不安装 RPM 的情况下检查缺少的依赖项
【发布时间】:2012-05-14 15:14:31
【问题描述】:

我想构建一个脚本来下载所有丢失的包但不立即安装它们。为此,我试图在使用 Perl 程序安装新 RPM 时获取缺少的依赖项列表。

我尝试使用 rpm -qpR 标志,但它会输出所有要求,而不仅仅是缺少的要求。

接下来,我尝试使用 rpm -Uvh --test 标志,但无法正常工作 - 它输出一个空字符串。

我的 Perl 程序:

#!/usr/bin/perl -w
$output="";
open(README, "rpm -Uvh ".$ARGV[0]." --test |") or die "Can't run program: $!\n";
while(<README>) {
    $output .= $_;
}
close(README);
print "OUTPPUT=".$output."\n";

我认为问题在于输出到 stderr 而不是 stdout

坦克为您提供帮助!

【问题讨论】:

  • 首先尝试在提示符下运行命令,这样您就可以确定预期的输出是什么。另一件事是 rpm -Uvh 是升级包是你想要的。可能有帮助的commands 列表。
  • @SunilKartikey 是的,我深入查看了手册页,这就是我找到 --test 标志的方式。只有 -Uvh 的问题是它会立即安装,而我想在没有实际安装的情况下找到依赖项。

标签: linux perl rpm


【解决方案1】:

【讨论】:

    【解决方案2】:

    如果问题是你的问题,

    open(README, "rpm -Uvh ".$ARGV[0]." --test 2>&1 |")
                                               ^^^^
                                             add this
    

    【讨论】:

      【解决方案3】:

      我建议使用rpm -qpR,然后循环遍历结果以查看是否安装了包。

      为此,请在 rpm -qa 中使用 grep 包名。

      这可能会奏效,即使它不一定是最好的方法。

      【讨论】:

      • 问题在于它给了我完整的依赖,而不仅仅是缺少的。对更好的方法有什么建议吗?
      • 这就是我在 rpm -qa 中对 grep 说的意思。它会向您显示已安装的软件包,因此您可以将列表缩小到仅缺少的软件包。
      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 2018-06-03
      • 2015-02-07
      • 2013-10-05
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多