Ce qui fait moins avec rpm, et comment puis-je obtenir ce texte sans rpm


12

Lorsque j'exécute less package.rpm, less me montre toutes sortes de méta-informations sur le package. Qu'est-ce qui est moins exactement fait - a-t-il un code intégré pour pouvoir extraire les méta-informations, ou un rpm est-il structuré de manière à ce que la première partie ressemble à un fichier texte?

Je suppose que le premier, car headn'est pas si utile ici. Mais pour arriver à la vraie question: si je voudrais à greptravers ces métadonnées moins me montrer, comment puis-je y parvenir?

Réponses:


23

Si vous parcourez la lesspage de manuel, vous remarquerez qu'il lesspossède une fonction INPUT PREPROCESSOR.

echo $LESSOPENpour afficher l'emplacement de ce préprocesseur et utilisez less/ vim/ catpour afficher son contenu.

Sur ma machine, ce préprocesseur est /usr/bin/lesspipe.shet comprend les éléments suivants pour les rpms:

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

En effet, vous pouvez lessouvrir le fichier rpmet vous montrer la pagination de sa sortie.

Évidemment, pour faire un grep à travers ces informations, il suffit de grep directement la sortie de rpm:

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

Ou en général (merci OrangeDog)

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

Remarque: $LESSOPEN ne conserve pas simplement l'emplacement de lesspipe.sh- il commence par un |et se termine par un %ssi l'invoquer directement entraînerait des erreurs.


1
Pourquoi pas grep "foo" < <($LESSOPEN bar.rpm)? Ou peut-être même juste $LESSOPEN bar.rpm | grep "foo".
jpmc26

4

Si je souhaite parcourir ces métadonnées en me montrant moins, comment puis-je y parvenir?

très simplement; si vous voulez grep sur "Version" par exemple:

less your.rpm | grep "Version"

Notez que moins utilise la rpmcommande; donc mieux sauter en utilisant moins; et utiliser des rpmcommandes; comme:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.