【问题标题】:Package version in Linux (Centos)?Linux(Centos)中的软件包版本?
【发布时间】:2014-11-26 01:36:22
【问题描述】:

我需要检索安装在我的 Linux (Centos) 主机上的所有软件包的软件包版本。 rpm -qa 给了我所有已安装软件包的列表。 我知道 rpm -qi "package name" 给了我包信息。我尝试从那里对包版本进行 grep 并选择要显示的版本 - 但这会给某些包带来问题,因为一些文本与版本一起被附加到某些包中。以下是我的代码行:- rpm -qi "包名"| grep -w 版本 | awk '{打印 $3}'

是否有任何其他方法可以获取包版本 - 可能来自包名称本身?我们需要一份报告,其中一列中包含包名称,第二列中包含版本。请帮忙。

谢谢。

【问题讨论】:

  • rpm -qa --qf '%{name}\t%{version}\n'?可选用| column -t 结尾?
  • 您好,感谢您的回复。实际上,我还在前两列中写了时间戳和主机的 IP 地址。下面是我的实际代码:- for i in $(rpm -qa);做 echo $tdydate "," $(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}') "," $i "," $(rpm -qi $i| grep -w Version | awk '{print $3}' | sed 's/ .*//') >> $HOME/MyLog/installed_pa​​ckages.csv;完成
  • 你能帮忙吗...在第四列,我需要版本。输出实际上是一个 CSV 文件。
  • rt=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}'); rpm -qa --qf "$tdydate,$rt,%{name},%{version}\n" 或类似的东西。
  • 这很干净。非常感谢队友快速恢复,非常感谢。干杯!

标签: centos package version rpm


【解决方案1】:

您可以使用--qf 标志告诉 rpm 如何构造其输出。它接受格式字符串作为参数。

所以像下面这样的东西应该可以得到你想要的。

rt=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
rpm -qa --qf "$tdydate,$rt,%{name},%{version}\n"

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 2014-04-26
    • 2017-05-26
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多