我猜你总是可以使用rpm
命令:
$ rpm --query --all --qf "%-30{NAME} - %{VERSION}\n"
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过各种方式使用它:
use autodie;
open my $RPM_FH, "-|", qq(rpm --query --all --qf "%-30{NAME} - %{VERSION}\n");
my @rpmLines = <$RPM_FH>;
close $RPM_FH;
Run Code Online (Sandbox Code Playgroud)
要么:
my @rpmLines = qx(rpm --query --all --qf "%-30{NAME} - %{VERSION}\n");
Run Code Online (Sandbox Code Playgroud)
我还发现了RPM :: Database这将是一种更为Perlish的做事方式.此包将RPM数据库绑定到哈希:
use RPM::Database;
tie %RPM, "RPM::Database" or die "$RPM::err";
for (sort keys %RPM)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我从未使用它,所以我不确定它是如何工作的.例如,我假设每个哈希条目的值是某种数据库对象.例如,我认为知道RPM包中的版本号和文件是很重要的,必须有一些信息可以拉,但我没有RPM::Database
在RPM :: HEader中看到任何内容.玩弄它.您可以使用Data :: Dumper来帮助探索返回的对象.
警告:Data::Dumper
用于帮助探索对象和类中的信息.不要用它来弄清楚如何直接从对象中提取信息.使用正确的方法和类.