HOME | GALLERY | INFO | ABOUT
..:.:.:: R P M ::.:.:..
WORK ADMINISTRATRIVIA ARTICLE
20060104 | ตัวจัดการแพกเก็จ Redhat ::.::.:..
ตัวจัดการแพกเกจ 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

การติตดั้งแพกเกจจากซอร์สโค้ด

สร้าง/ติตดั้งแพกเกจที่เป็นซอร์สโค้ด
  1. rpm -ivh source-package

    ซอร์สโค้ดจะถูกติตดั้งไว้ที่ /usr/src/redhat/SOURCES และ /usr/src/redhat/SPECS

  2. rpm -ba spec-file หรือ rpm --rebuild spec-file

    ซอร์สโค้ดถูกคอมพายล์และสร้างเป็นไบนารี rpm และถูกเก็บไว้ใน /usr/src/package/RPMS/Architechture

    ในการคอมพายล์แบบนี้แพกเกจจะถูกคอมพายล์ด้วยซอร์สโค้ดเดิมของผู้เขียน และจะมีการแพชบางอย่างเข้าไปโดยผู้ทำแพกเกจ และใช้ออพชั่นจากไฟล์ SPEC เพื่อคอมพายและสร้างแพกเกจแบบไบนารี

  3. rpm -ivh package

    เพื่อทำการติตดั้งแพกเกจที่คอมพายล์แล้วสู่ระบบ

สงสัยว่าไฟล์ฐานข้อมูล RPM เสียให้รัน rpm --rebuilddb เพื่อสร้างฐานข้อมูลใหม่

แตกไฟล์จากแพกเกจ rpm โดยไม่ติตดั้ง

  1. ใช้คำสั่ง rpm2cpio หรือ rpm -qpl เพื่อแสดงรายการไฟล์และพาธที่อยู่ในแพกเกจ : rpm2cpio package | cpio -t
  2. ใช้ 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 #


..:.:.:: COPYRIGHT(C) 2004 BY Suphanut ::.:.:..