¿Qué está haciendo menos con rpm y cómo obtengo ese texto sin rpm?

12

Cuando ejecuto less package.rpm, less me muestra todo tipo de metainformación sobre el paquete. ¿Qué está haciendo con menos exactitud? ¿Tiene un código incorporado para poder extraer metainformación, o un rpm está estructurado de tal manera que la primera parte se parece a un archivo de texto?

Asumiría lo primero, ya headque no es tan útil aquí. Pero para llegar a la verdadera pregunta: si me gustaría ver a greptravés de estos metadatos menos, ¿cómo puedo lograr esto?

Isaac
fuente

Respuestas:

23

Si navega por la lesspágina de manual, notará que lesstiene una función de PREPROCESADOR DE ENTRADA.

echo $LESSOPENpara ver la ubicación de este preprocesador, y el uso less/ vim/ catpara ver su contenido.

En mi máquina, este preprocesador es /usr/bin/lesspipe.she incluye lo siguiente para rpm:

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

En efecto, lessno abre el archivo rpmy le muestra la paginación de su salida.

Obviamente, para obtener esta información, simplemente seleccione la salida de rpm directamente:

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

O en general (gracias OrangeDog)

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

Nota: $LESSOPEN no se limita a mantener la ubicación de lesspipe.sh: comienza con ay |termina con %sin, por lo que invocarlo directamente provocaría errores.

Dani_l
fuente
1
¿Por qué no grep "foo" < <($LESSOPEN bar.rpm)? O tal vez incluso solo $LESSOPEN bar.rpm | grep "foo".
jpmc26
4

Si quisiera analizar estos metadatos sin mostrarme, ¿cómo puedo lograr esto?

muy simple; si quieres grep en "Versión" por ejemplo:

less your.rpm | grep "Version"

Tenga en cuenta que menos está usando el rpmcomando; así que mejor salta usando menos; y usar rpmcomandos; me gusta:

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