在不安装RPM的情况下检查缺少的依赖项

时间:2012-05-14 15:14:32

标签: linux perl rpm

我想构建一个脚本来下载所有丢失的包但不立即安装它们。为此,我正在尝试使用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

坦克为你提供帮助!

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

如果问题出现在您认为的问题上,

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

答案 2 :(得分:0)

我建议使用rpm -qpR然后循环结果以查看是否已安装软件包。

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

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