รูปแบบการแสดงผลของ RPM query

ข้อดีอย่างหนึ่งของลีนุกซ์คือสามารถรันได้บนหลากหลายระบบ (Platform)  แต่ก็อาจทำให้ผู้ดูแลระบบปวดหัวได้ ในการจัดการโปรแกรมที่ติดตั้งได้

ปัญหาหนึ่งที่ผู้เขียนพบคือการใช้ rpm เพื่อจัดการโปรแกรมที่ติดตั้งบน RedHat, CentOS แบบ 64 bit คือมีทั้งโปรแกรม 32-bit และ 64-bit ถูกติดตั้งมารวมกัน

[root@server ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)

ตัวอย่างการใช้คำสั่ง rpm เพื่อดูว่ามี rpm package ที่ชื่อ png ถูกติดตั้งไว้อะไรบ้าง

[root@server ~]# rpm -qa | grep png
libpng-1.2.10-7.1.el5_3.2
libpng-1.2.10-7.1.el5_3.2
libpng-devel-1.2.10-7.1.el5_3.2

จะเห็นว่ามี package ชื่อ “libpng-1.2.10-7.1.el5_3.2”  ซ้ำกันสองบรรทัด เหตุก็เพราะว่า package ถูกติดตั้ง มีทั้งที่เป็นเวอร์ชั่น 32-bit และ 64-bit

ต้องระบุออปชั่นเพิ่มเติมของคำสั่ง rpm เพื่อให้แสดงเวอร์ชั่น 32-bit หรือ 64-bit ด้วย

รูปแบบการระบุออปชั่น

rpm –query -a –queryformat “%{NAME}-%{VERSION}.%{RELEASE}.%{ARCH}\n”

ตัวอย่างการระบุออปชั่นและเลือกเฉพาะ package ที่มีชื่อ png

[root@server ~]# rpm --query -a --queryformat "%{NAME}-%{VERSION}.%{RELEASE}.%{ARCH}\n"  | grep png
libpng-1.2.10.7.1.el5_3.2.x86_64
libpng-1.2.10.7.1.el5_3.2.i386
libpng-devel-1.2.10.7.1.el5_3.2.x86_64

เพื่อความสะดวก ไม่ต้องพิมพ์ออปชั่นยาวๆ ทุกครั้ง สามารถใส่ออปชั่นไว้ในไฟล์คอนฟิกกลางของเครื่อง

[root@server ~]# cat /etc/rpm/macros
%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}

ตัวอย่างการใช้คำสั่ง rpm หลังจากใส่ออปชั่นไว้ในไฟล์คอนฟิก

[root@server ~]# rpm -qa | grep png
libpng-1.2.10-7.1.el5_3.2.x86_64
libpng-1.2.10-7.1.el5_3.2.i386
libpng-devel-1.2.10-7.1.el5_3.2.x86_64

Leave a Reply