rpm กำลังทำอะไรน้อยลงและฉันจะได้รับข้อความนั้นได้อย่างไรโดยไม่ต้องใช้รอบต่อนาที


12

เมื่อฉันประมวลผลless package.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และแสดงเลขหน้าของเอาต์พุต

เห็นได้ชัดว่าการ grep ผ่านข้อมูลนี้เพียง grep ผลลัพธ์ของ 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

หากฉันต้องการให้ข้อมูลเมตานี้แสดงน้อยลงฉันจะทำสิ่งนี้ได้อย่างไร

ง่ายมาก หากคุณต้องการ grep ใน "Version" ตัวอย่างเช่น:

less your.rpm | grep "Version"

โปรดทราบว่าใช้rpmคำสั่งน้อย ดังนั้นควรข้ามโดยใช้น้อยกว่า และใช้rpmคำสั่ง ชอบ:

rpm -qip /path/to/uninstalled/rpm
rpm -qi installed.rpm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.