12

When I execute less package.rpm, less shows me all sorts of meta info about the package. What is less exactly doing - does it have built in code to be able to extract meta info, or is an rpm structured in a way that the first part just looks like a text file?

I would assume the former, since head is not so helpful here. But to get to the real question: If I would like to grep through this meta data less showing me, how can I accomplish this?

2 Answers 2

24

If you browse through the less man page, you'll notice less has an INPUT PREPROCESSOR feature.

echo $LESSOPEN to view the location of this preprocessor, and use less/vim/cat to view its contents.

On my machine this preprocessor is /usr/bin/lesspipe.sh and it includes the following for rpms:

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

In effect, less hands off openning the file to rpm, and shows you the pagination of its output.

Obviously, to grep through this info, simply grep the output of rpm directly:

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

Or in general (thanks OrangeDog)

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

Note: $LESSOPEN Does not simply hold the location of lesspipe.sh - it begins with a | and ends with a %s so invoking it directly would result in errors.

1
  • 1
    Why not grep "foo" < <($LESSOPEN bar.rpm)? Or maybe even just $LESSOPEN bar.rpm | grep "foo". Commented Jun 7, 2016 at 20:30
4

If I would like to grep through this meta data less showing me, how can I accomplish this?

very simply; if you want to grep on "Version" for example:

less your.rpm | grep "Version" 

Note that less is using the rpm command; so better skip using less; and use rpm commands; like:

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.