Co mniej robi z rpm i jak mogę uzyskać ten tekst bez rpm


12

Kiedy wykonuję less package.rpm, less pokazuje mi różnego rodzaju meta informacje o pakiecie. Co robi mniej dokładnie - czy ma wbudowany kod, aby móc wyodrębnić meta informacje, czy też struktura RPM ma taką strukturę, że pierwsza część wygląda jak plik tekstowy?

Zakładam, że to pierwsze, ponieważ headnie jest tu tak pomocne. Ale, aby przejść do prawdziwego pytania: jeśli chciałbym przejść grepprzez te metadane mniej pokazujące mi, jak mogę to osiągnąć?

Odpowiedzi:


23

Jeśli przejrzysz lessstronę man, zauważysz, że lessma funkcję INPUT PREPROCESSOR.

echo $LESSOPENaby zobaczyć lokalizację tego preprocesora i użyj less/ vim/, cataby zobaczyć jego zawartość.

Na moim komputerze jest to preprocesor /usr/bin/lesspipe.shi zawiera on następujące dla rpms:

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

W efekcie lessotwieranie pliku bez użycia rąk rpmi wyświetlanie stronicowania jego danych wyjściowych.

Oczywiście, aby grep poprzez te informacje, po prostu grep bezpośrednio wyjście rpm:

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

Lub ogólnie (dzięki OrangeDog)

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

Uwaga: $LESSOPEN Nie ogranicza się tylko do położenia lesspipe.sh- zaczyna się od |a kończy na %stak, więc bezpośrednie wywołanie spowoduje błędy.


1
Dlaczego nie grep "foo" < <($LESSOPEN bar.rpm)? A może nawet tylko $LESSOPEN bar.rpm | grep "foo".
jpmc26

4

Jeśli chciałbym przejrzeć te metadane mniej pokazujące mi, jak mogę to zrobić?

bardzo prosto; jeśli chcesz na przykład grepować w „wersji”:

less your.rpm | grep "Version"

Zauważ, że less używa rpmpolecenia; więc lepiej pomiń, używając mniej; i używaj rpmpoleceń; lubić:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.