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?

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.