O que há menos a fazer com rpm e como obtenho esse texto sem rpm

12

Quando executo less package.rpm, menos mostra todos os tipos de meta informações sobre o pacote. O que está fazendo menos exatamente - ele possui código embutido para extrair informações meta ou uma rpm está estruturada de maneira que a primeira parte pareça um arquivo de texto?

Eu assumiria o primeiro, uma vez que headnão é tão útil aqui. Mas, para chegar à pergunta real : se eu gostaria de passar greppor esses metadados menos me mostrando, como posso fazer isso?

Isaac
fonte

Respostas:

23

Se você navegar pela lesspágina de manual, perceberá que lesshá um recurso INPUT PREPROCESSOR.

echo $LESSOPENpara visualizar a localização desse pré-processador e use less/ vim/ catpara visualizar seu conteúdo.

Na minha máquina, esse pré-processador é /usr/bin/lesspipe.she inclui o seguinte para rpms:

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

De fato, lessabra o arquivo rpme mostre a paginação de sua saída.

Obviamente, para fazer uma grep através dessas informações, basta fazer a grep diretamente da saída do rpm:

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

Ou em geral (obrigado OrangeDog)

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

Nota: $LESSOPEN Não mantém simplesmente a localização de lesspipe.sh- começa com a |e termina com uma %schamada, resultando em erros.

Dani_l
fonte
1
Por que não grep "foo" < <($LESSOPEN bar.rpm)? Ou talvez apenas $LESSOPEN bar.rpm | grep "foo".
Jpmc26 07/06/19
4

Se eu gostaria de ver através desses metadados menos me mostrando, como posso fazer isso?

muito simplesmente; se você deseja grep em "Versão", por exemplo:

less your.rpm | grep "Version"

Observe que menos está usando o rpmcomando; então é melhor pular usando menos; e use rpmcomandos; gostar:

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