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

12

Quando executo less package.rpm , menos me mostra todos os tipos de meta informações sobre o pacote. O que é menos exatamente fazer - ele tem código embutido para extrair meta-informação, ou é um rpm estruturado de forma que a primeira parte pareça um arquivo de texto?

Eu assumiria o primeiro, já que head não é tão útil aqui. Mas, para chegar à pergunta real : Se eu quiser grep através desses meta-dados menos me mostrar, como posso fazer isso?

    
por Isaac 07.06.2016 / 09:32

2 respostas

24

Se você navegar pela página less man, você perceberá que less tem um recurso INPUT PREPROCESSOR.

echo $LESSOPEN para visualizar o local desse pré-processador e usar less / vim / cat para exibir seu conteúdo.

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

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

Com efeito, less envia a abertura do arquivo para rpm e mostra a paginação de sua saída.

Obviamente, para aproveitar essa informação, simplesmente gere diretamente a saída de rpm:

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

Ou em geral (graças ao OrangeDog)

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

Observação: $LESSOPEN Não simplesmente mantém o local de lesspipe.sh - começa com | e termina com %s , portanto invocá-lo diretamente resultaria em erros. / p>     

por 07.06.2016 / 09:53
4

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

muito simplesmente; se você quiser grep em "Version" por exemplo:

less your.rpm | grep "Version"

Observe que menos está usando o comando rpm ; então é melhor pular usando menos; e use os comandos rpm ; como:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
    
por 07.06.2016 / 09:56

Tags