Was ist weniger mit rpm zu tun, und wie bekomme ich diesen Text ohne rpm

12

Beim Ausführen less package.rpmzeigt less alle möglichen Metainformationen zum Paket an. Was ist weniger genau? Verfügt es über integrierten Code, um Metainformationen extrahieren zu können, oder ist eine Drehzahl so strukturiert, dass der erste Teil nur wie eine Textdatei aussieht?

Ersteres würde ich vermuten, da headhier nicht so hilfreich ist. Aber um zur eigentlichen Frage zu kommen: Wenn ich grepdurch diese Metadaten weniger zeigen möchte , wie kann ich das erreichen?

Isaac
quelle

Antworten:

23

Wenn Sie durch die lessManpage blättern , werden Sie feststellen, dass lesses eine INPUT PREPROCESSOR-Funktion gibt.

echo $LESSOPENdie Position dieses Präprozessor zu sehen, und die Verwendung less/ vim/ um catdessen Inhalt anzuzeigen.

Auf meinem Computer ist dieser Präprozessor /usr/bin/lesspipe.shund enthält für RPMs Folgendes:

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

In der Tat lessreicht es aus, die Datei zu öffnen rpmund zeigt Ihnen die Paginierung der Ausgabe.

Um durch diese Informationen zu blättern, müssen Sie die Ausgabe von rpm direkt blättern:

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

Oder allgemein (danke OrangeDog)

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

Hinweis: $LESSOPEN Enthält nicht einfach die Position von lesspipe.sh- sie beginnt mit einem |und endet mit einem, %ssodass ein direkter Aufruf zu Fehlern führen würde.

Dani_l
quelle
1
Warum nicht grep "foo" < <($LESSOPEN bar.rpm)? Oder vielleicht auch nur $LESSOPEN bar.rpm | grep "foo".
jpmc26
4

Wenn ich diese Metadaten weniger anzeigen möchte, wie kann ich das erreichen?

sehr einfach; Wenn Sie zum Beispiel nach "Version" suchen möchten:

less your.rpm | grep "Version"

Beachten Sie, dass less den rpmBefehl verwendet. also besser mit weniger überspringen; und benutze rpmBefehle; mögen:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
Chris Maes
quelle