ตัวจัดการแพกเกจ RedHat
ศภณัฐ ธัญญบุญ
RPM คืออะไร?
RPM ย่อมาจาก Redhat package manager
เป็นโปรแกรมที่ถูกออกแบบมาเพื่อสร้างและจัดการแพกเกจของซอฟต์แวร์ที่มีทั้งตัวไบนารีและซอร์สโค้ด
ซึ่งสามารถนำไปรันบนสถาปัตยกรรมต่างๆ กันได้
RPM จะคอยจัดการฐานข้อมูลของการติดตั้งแพกเกจทั้งหมดใน /var/lib/rpm/*
สิ่งที่อยู่ในฐานข้อมูลก็คือรายการขอไฟล์ที่ถูกติดตั้งโดยตัว RPM เอง
ซึ่งทำให้ง่ายในการที่จัดการแพกเกจแต่ละตัว
สำหรับซอร์สโค้ดส่วนมากจะอยู่ในรูปไฟล์ฟอร์แมต .src.rpm หรือ .spm
ซอร์สโค้ดเหล่านี้จะประกอบไปด้วยซอร์สโค้ดดั้งเดิมของผู้พัฒนา
แพชต่างๆที่ถูกรวมกับกับซอร์สโค้ดเดิมโดยผู้จัดทำแพกเกจ และไฟล์ SPEC
ซึ่งใช้เพื่อบอกว่าจะคอมพายล์แพกเกจนี้ได้อย่างไร
ในการติดตั้งอัพเกรดหรือลบแพกเกจคุณจะต้องล็อกอินเป็น root ก่อน
แต่ถ้าจะแค่ดูรายละเอียดของแพกเกจสามารถล็อกอินเป็นใครก็ได้
แพกเกจ RPM นั้นเป็นฟอร์แมตที่ลินุกซ์ดังๆหลายๆ ค่ายเลือกใช้เช่น SuSE
Caldera และ TurboLinux
ต่อไปนี้จะเป็นตารางสรุปคำสั่งของ RPM
| ติดตั้งและอัพเกรด |
| ติดตั้ง |
rpm -ivh package |
| อัพเกรด |
rpm -Uvh package |
| ลบ |
rpm -e package |
| ทดลองติดตั้งแต่ไม่ติดตั้งจริง |
rpm -Uvh --test package |
| ตรวจสอบ |
| ตรวจสอบแพกเกจ |
rpm -Vvv package |
| ตรวจสอบทุกแพกเกจในระบบ |
rpm -Va |
| ตรวจสอบ cryptographic signature |
rpm -K package |
| ค้นหา |
| แสดงรายการไฟล์ในแพกเกจ |
rpm -qpl package |
| หาชื่อแพกเกจที่ต้องการ |
rpm -qa | grep pattern |
| มีไฟล์อะไรในแพกเกจ(ติดตั้งแล้ว) |
rpm -ql package |
| ดูข้อมูลทั่วไปของแพกเกจ |
rpm -qi package |
| ไฟล์นี้อยู่ในแพกเกจอะไร |
rpm -qf path/to/file |
| ดูไฟล์คอนฟิกในแพกเกจ |
rpm -qc package |
| ดูไฟล์เอกสารในแพกเกจ |
rpm -qd package |
| สคริปต์ในแพกเกจ |
rpm -q --scripts package |
| เซอร์วิสที่แพกเกจมีให้ |
rpm -q --provides package |
| เซอร์วิสที่แพกเกจต้องการ |
rpm -q --requires package |
การติตดั้งแพกเกจจากซอร์สโค้ด
สร้าง/ติตดั้งแพกเกจที่เป็นซอร์สโค้ด
- rpm -ivh source-package
ซอร์สโค้ดจะถูกติตดั้งไว้ที่ /usr/src/redhat/SOURCES และ
/usr/src/redhat/SPECS
- rpm -ba spec-file หรือ rpm --rebuild spec-file
ซอร์สโค้ดถูกคอมพายล์และสร้างเป็นไบนารี rpm และถูกเก็บไว้ใน
/usr/src/package/RPMS/Architechture
ในการคอมพายล์แบบนี้แพกเกจจะถูกคอมพายล์ด้วยซอร์สโค้ดเดิมของผู้เขียน
และจะมีการแพชบางอย่างเข้าไปโดยผู้ทำแพกเกจ และใช้ออพชั่นจากไฟล์ SPEC
เพื่อคอมพายและสร้างแพกเกจแบบไบนารี
- rpm -ivh package
เพื่อทำการติตดั้งแพกเกจที่คอมพายล์แล้วสู่ระบบ
สงสัยว่าไฟล์ฐานข้อมูล RPM เสียให้รัน rpm --rebuilddb
เพื่อสร้างฐานข้อมูลใหม่
แตกไฟล์จากแพกเกจ rpm โดยไม่ติตดั้ง
- ใช้คำสั่ง rpm2cpio หรือ rpm -qpl
เพื่อแสดงรายการไฟล์และพาธที่อยู่ในแพกเกจ : rpm2cpio package | cpio -t
- ใช้ rpm2cpio แตกไฟล์รันคำสั่งนี้ใน /tmp
เพื่อหลีกเลี่ยงการเขียนทับไฟล์ปัจจุบัน
rpm2cpio package | cpio -iv --make-directories full-path
ซืึ่งจะสร้างไฟล์ในแบบฟูลพาธในไดเรคทอรีนั้น
ในกรณีที่คุณต้องการลบแพกเกจ RPM ครั้งละมากๆ สามารถใช้คำสั่ง xargs กับ
rpm ได้ ตัวอย่างเช่น
suphanut:~/datacore/suse-7.3/xine # rpm -qa | grep
xine
xine-lib-0.9.7-0
xine-lib-aa-0.9.7-0
xine-lib-alsa05-0.9.7-0
xine-lib-arts-0.9.7-0
xine-lib-d4d-0.9.7-0
xine-lib-docs-0.9.7-0
xine-lib-oggvorbis-0.9.7-
0
xine-lib-oss-0.9.7-0
xine-lib-w32dll-0.9.7-0
xine-ui-0.9.7-0
xine-ui-aa-0.9.7-0
suphanut:~/datacore/suse-7.3/xine
# rpm -qa | grep xine | xargs rpm -e
suphanut:~/datacore/suse-7.3/xine
# rpm -qa | grep xine
suphanut:~/datacore/suse-7.3/xine #