rpm 有什么作用,以及如何在没有 rpm 的情况下获得该文本

rpm 有什么作用,以及如何在没有 rpm 的情况下获得该文本

当我执行时less package.rpm, less 向我显示有关包的各种元信息。不太确切的做法是什么 - 它是否有内置代码能够提取元信息,或者 rpm 的结构方式是否使第一部分看起来像文本文件?

我认为是前者,因为head在这里没有太大帮助。但要到达真实的问题:如果我想grep通过这个元数据较少地向我展示,我该如何实现这一点?

答案1

如果您浏览less手册页,您会注意到less有一个输入预处理器功能。

echo $LESSOPEN查看此预处理器的位置,并使用//less查看其内容。vimcat

在我的机器上,这个预处理器/usr/bin/lesspipe.sh包含以下 rpm 内容:

*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?

实际上,less无需打开文件rpm,并显示其输出的分页。

显然,要 grep 这些信息,只需直接 grep rpm 的输出即可:

grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)

或者一般情况(感谢 OrangeDog)

grep "foo" < <(lesspipe.sh bar.rpm)

笔记: $LESSOPEN不只是保存位置lesspipe.sh- 它以 a 开头|并以 a 结尾%s,因此直接调用它会导致错误。

答案2

如果我想 grep 浏览这些元数据而不是向我显示,我该如何实现这一点?

非常简单;例如,如果您想 grep “版本”:

less your.rpm | grep "Version"

注意 less 使用的是rpm命令;所以最好跳过少用;并使用rpm命令;喜欢:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm

相关内容