我有两个不同版本的 rpm 文件(1.1.rpm、2.1.rpm),因此这里我需要查询 rpm 并将输出保存在文本文件(1.1.txt、2.1.txt)中,并且我需要比较两个版本txt 文件并显示表格列中的差异。
例如:
Pkg Name | 1.1.txt | 2.1.txt
-------------------------------+---------------------------+---------------------------
qq | 3.4.4. | 3.5.5
rr | 1.18.1 | 1.18.1
我尝试使用此 cmd 进行查询
rpm -qplv file* > 1.1.txt
知道怎么做吗?
答案1
要从包中获取name
and ,可以使用基数以及指定and格式说明符的选项。您可以包含字段宽度修饰符(与 C 相同的方式)以提供格式设置。您还希望重定向到忽略任何 rpm 签名错误。version
rpm
rpm -qp
--queryformat
%{NAME}
%{VERSION}
printf
stderr
/dev/null
例如,要列出当前目录中所有 rpm 包的名称和版本:
示例转速:
$ l1 *.rpm
athena-jot-9.0-4.1.x86_64.rpm
freetype2-devel-32bit-2.6.3-5.1.x86_64.rpm
ft2demos-2.6.3-5.1.x86_64.rpm
gtkwrite-0.1.2-2.1.x86_64.rpm
libfreetype6-32bit-2.6.3-5.1.x86_64.rpm
在这些松散的 rpm 上运行命令可以提供:
$ rpm -qp --queryformat "%-24{NAME}%15{VERSION}\n" *.rpm 2>/dev/null
athena-jot 9.0
freetype2-devel-32bit 2.6.3
ft2demos 2.6.3
gtkwrite 0.1.2
libfreetype6-32bit 2.6.3
要将其写入1.1.txt
文件,只需重定向输出,例如
$ rpm -qp --queryformat "%-24{NAME}%15{VERSION}\n" *.rpm 2>/dev/null > ~/tmp/1.1.txt
$ cat ~/tmp/1.1.txt
athena-jot 9.0
freetype2-devel-32bit 2.6.3
ft2demos 2.6.3
gtkwrite 0.1.2
libfreetype6-32bit 2.6.3