Що менше робити з rpm, і як отримати цей текст без rpm


12

Коли я виконую less package.rpm, менше показує мені всілякі метаінформації про пакет. Що менш точно робиться - чи вбудований він у код, щоб можна було витягувати метаінфо, або ж rpm структурований таким чином, що перша частина просто схожа на текстовий файл?

Я б припустив колишнє, оскільки headтут не так корисно. Але перейти до справжнього питання: Якщо я хотів би, щоб grepці метадані менше показували мені, як я можу це досягти?

Відповіді:


23

Якщо ви перейдете на lessголовну сторінку, ви помітите, що lessвона має функцію ВВЕДЕННЯ ПРЕПРОЦЕСОРА.

echo $LESSOPENдля перегляду місця розташування цього препроцесора та використання less// vim/ catдля перегляду його вмісту.

На моїй машині цей препроцесор є, /usr/bin/lesspipe.shі він включає наступні для rpms:

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

Фактично, lessвідкриваючи файл, відкриваючи файл rpm, і показуєте, що ви використовуєте його сторінки.

Очевидно, щоб переглядати цю інформацію, просто перетягніть вихід rpm безпосередньо:

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

Або взагалі (спасибі OrangeDog)

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

Примітка: $LESSOPEN не просто містити місце розташування lesspipe.sh- воно починається з а, |а закінчується %sтаким чином, якщо викликати його безпосередньо, це призведе до помилок.


1
Чому ні grep "foo" < <($LESSOPEN bar.rpm)? А може, навіть просто $LESSOPEN bar.rpm | grep "foo".
jpmc26

4

Якщо я хотів би проглянути ці метадані, що менше показують мені, як я можу це досягти?

дуже просто; якщо ви хочете, наприклад, "Версія":

less your.rpm | grep "Version"

Зауважте, що менше використовується rpmкоманда; тому краще пропустити використання менше; і використовувати rpmкоманди; подобається:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.