วิธีการคอมไพล์ไฟล์ src.rpm ด้วยผู้ใช้งานธรรมดา

การติดตั้งโปรแกรมบนลินุกซ์วิธีการหนึ่งที่นิยมกันคือใช้ไฟล์ประเภท rpm ซึ่งไฟล์ที่ติดตั้งนั้นจะถูกคอมไพล์เป็น binary โดยทีมงานที่พัฒนา Linux Distribution ซึ่งเป็นไฟล์จะติดตั้งได้สะดวกพร้อมใช้งาน ด้วยคำสั่ง rpm หรือ yum

ไฟล์ binary เหล่านี้ชื่อไฟล์จะมีการเพิ่มเติมประเภทของเครื่องที่โปรแกรมนี้สามารถติดตั้งใช้งานได้เช่น i386, i586, i686, x86_64 เป็นต้น

แต่ในบางครั้งเราจำเป็นต้องมีการคอมไพล์โปรแกรมใหม่ เพื่อปรับปรุงเรื่องเวอร์ชั่น ตัดหรือเพิ่มคุณสมบัติของโปรแกรมบางอย่างซึ่งไฟล์เหล่านี้อาจจะไม่มีในรูปแบบ binary

วิธีการหนึ่งที่ทำได้คือดาวน์โหลดไฟล์ที่เป็น source code ในรูปแบบ src.rpm มา ซึ่งจะเป็นไฟล์ที่ประกอบด้วย source code ของโปรแกรมทั้งหมด พร้อมทั้งวิธีการคอมไพล์ เมื่อได้มาแล้วต้องคอมไพล์เอง ซึ่งแต่ก่อนคนที่จะคอมไพล์ได้ต้องเป็น root และคอมไพล์ในไดเร็คทอรี /usr/src/redhat/

ตัวอย่างลิ้งค์ที่สามารถดาวน์โหลดไฟล์ src.rpm ทั้งหมดของ Fedora 9

http://mirrors.kernel.org/fedora/releases/9/Fedora/source/SRPMS/

เตรียมโปรแกรมและไดเร็คทอรีสำหรับการคอมไพล์

แต่เนื่องด้วยเหตุผลทางด้านความปลอดภัย แนะนำให้คอมไพล์ไฟล์ src.rpm โดยใช้ผู้ใช้งานธรรมดา ไม่จำเป็นต้องใช้ root แต่ก่อนที่จะทำได้นั้นต้องมีการต้องติดตั้งโปรแกรมเพิ่มเติมที่ชื่อว่า rpmdevtools เพื่อให้สามารถคอมไพล์ ไฟล์ทั้งสองอยู่ในแผ่นติดตั้ง Fedora 9 อยู่แล้ว

[root@server Packages]# rpm -ivh fakeroot-1.6.4-16.fc9.i386.rpm
Preparing...                ########################################### [100%]
   1:fakeroot               ########################################### [100%]

[root@server Packages]# rpm -ivh rpmdevtools-6.6-1.fc9.noarch.rpm
Preparing...                ########################################### [100%]
   1:rpmdevtools            ########################################### [100%]

สร้างไดเร็คทอรีสำหรับการคอมไพล์

login เป็นผู้ใช้งานธรรมดา ที่ไม่ใช่ root แล้วรันคำสั่ง rpmdev-setuptree เพื่อสร้างไดเร็คทอรีสำหรับการคอมไพล์โปรแกรม ซึ่งหลังจากใช้คำสั่งนี้ จะมีไดเร็คทอรี rpmbuild ขึ้นมาในไดเร็คทอรี HOME ของผู้ใช้งานนั้น

ตัวอย่างการใช้คำสั่ง rpmdev-setuptree

[user01@server ~]$ rpmdev-setuptree
[user01@server ~]$ ls -CF
rpmbuild/
[user01@server ~]$ find rpmbuild/
rpmbuild/
rpmbuild/BUILD
rpmbuild/SRPMS
rpmbuild/SOURCES
rpmbuild/SPECS
rpmbuild/RPMS

ไดเร็คทอรีต่างๆ ที่ถูกสร้างขึ้นจะเหมือนกันใน /usr/src/redhat/ แต่ในที่นี้เราสามารถใช้ user01 ในการคอมไพล์ไฟล์ src.rpm ได้เลย โดยไฟล์ที่คอมไพล์เป็น binary เรียบร้อยแล้ว จะอยู่ใน rpmbuild/RPMS/

Leave a Reply