rpmでやっていることと、rpmなしでそのテキストを取得する方法


12

を実行するとless package.rpm、lessはパッケージに関するあらゆる種類のメタ情報を表示します。あまり正確ではありません-メタ情報を抽出できるようにコードが組み込まれていますか、または最初の部分がテキストファイルのように見えるようにrpmが構成されていますか?

headここではあまり役に立たないので、前者を想定します。しかし、本当の質問にたどり着くために、grepこのメタデータをあまり見せないようにしたい場合、どうすればこれを達成できますか?

回答:


23

lessマニュアルページを参照すると、lessINPUT PREPROCESSOR機能があります。

echo $LESSOPENこのプリプロセッサの場所を表示するには、less/ vim/ catを使用してその内容を表示します。

私のマシンでは/usr/bin/lesspipe.sh、このプリプロセッサはrpmの次のものを含んでいます。

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

実際にはless、ファイルをrpmに開いて、出力のページネーションを表示します。

明らかに、この情報をgrepするには、rpmの出力を直接grepするだけです。

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

または一般的に(OrangeDogに感謝)

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

注: $LESSOPENの位置を保持するだけではありません-a lesspipe.shで始まりa |で終わる%sため、直接呼び出すとエラーになります。


1
どうしてgrep "foo" < <($LESSOPEN bar.rpm)?または多分ちょうど$LESSOPEN bar.rpm | grep "foo"
jpmc26

4

表示されないこのメタデータをgrepしたい場合、どうすればこれを達成できますか?

非常に単純です。たとえば、「バージョン」でgrepする場合:

less your.rpm | grep "Version"

lessはrpmコマンドを使用していることに注意してください。lessを使用してスキップすることをお勧めします。rpmコマンドを使用します。お気に入り:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.