Apa yang kurang dilakukan dengan rpm, dan bagaimana cara mendapatkan teks itu tanpa rpm

12

Ketika saya mengeksekusi less package.rpm, kurang menunjukkan semua jenis meta info tentang paket. Apa yang kurang tepat dilakukan - apakah sudah dibangun dalam kode untuk dapat mengekstrak meta info, atau apakah rpm disusun sedemikian rupa sehingga bagian pertama hanya terlihat seperti file teks?

Saya akan menganggap yang pertama, karena headtidak begitu membantu di sini. Tetapi untuk sampai ke pertanyaan sebenarnya : Jika saya ingin grepmelalui meta data ini kurang menunjukkan kepada saya, bagaimana saya bisa mencapai ini?

Ishak
sumber

Jawaban:

23

Jika Anda menelusuri lesshalaman manual, Anda akan melihat lessmemiliki fitur PREPROCESSOR INPUT.

echo $LESSOPENuntuk melihat lokasi preprosesor ini, dan gunakan less/ vim/ catuntuk melihat isinya.

Pada komputer saya preprosesor ini adalah /usr/bin/lesspipe.shdan itu termasuk yang berikut untuk rpms:

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

Akibatnya, lessjangan membuka file rpm, dan menunjukkan kepada Anda pagination dari outputnya.

Jelas, untuk memahami info ini, cukup ambil output rpm secara langsung:

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

Atau secara umum (terima kasih OrangeDog)

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

Catatan: $LESSOPEN Tidak hanya memegang lokasi lesspipe.sh- dimulai dengan a |dan diakhiri dengan %smemohon secara langsung akan menghasilkan kesalahan.

Dani_l
sumber
1
Mengapa tidak grep "foo" < <($LESSOPEN bar.rpm)? Atau bahkan mungkin adil $LESSOPEN bar.rpm | grep "foo".
jpmc26
4

Jika saya ingin memahami meta data yang kurang menunjukkan kepada saya, bagaimana saya bisa mencapainya?

sangat sederhana; jika Anda ingin memahami "Versi" misalnya:

less your.rpm | grep "Version"

Perhatikan bahwa lebih sedikit menggunakan rpmperintah; jadi lebih baik lewati menggunakan lebih sedikit; dan gunakan rpmperintah; Suka:

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