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

Linux 在不安装RPM的情况下检查缺少的依赖项,linux,perl,rpm,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 prog

我想建立一个脚本,下载所有丢失的软件包,但不立即安装它们。为此,我尝试在使用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";
#/usr/bin/perl-w
$output=“”;
打开(自述文件,“rpm-Uvh”。$ARGV[0]。“--test |”)或死“无法运行程序:$!\n”;
while(){
$output.=$\;
}
关闭(自述文件);
打印“output=”.$output.\n”;
我认为问题在于输出转到stderr而不是stdout


谢谢你的帮助

如果问题是你认为它是什么

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

我建议使用
rpm-qpR
,然后循环查看结果,看看是否安装了该软件包

为此,请在
rpm-qa
中grep程序包名称

即使这不一定是最好的方法,这也可以奏效。

仅使用yum downloadonly


首先尝试在提示符下运行命令,以便确定预期的输出。另一件事是rpm-Uvh是升级包,这是你们想要的。其中的列表可能会有所帮助。@sunilkartike是的,我仔细查看了手册页,这就是我如何找到--test标志的。only-Uvh的问题是,当我想在没有实际安装的情况下查找依赖项时,它会立即安装。问题是它提供了完整的依赖项,而不仅仅是缺少的依赖项。有没有更好的方法的建议?这就是我在rpm-qa中对grep说的意思。它向您显示安装了哪些软件包,以便您可以将列表缩小到仅缺少的软件包。