วิธี การ สร้าง หรือ สร้าง RPM Package
Introduction —
เครื่องมือ * “rpmbuild” จะ ใช้ ใน การ สร้าง ทั้ง …
1) Binary Package ~ ที่ ใช้ ใน การ ติด ตั้ง ซอฟต์แวร์ และ สนับสนุน สคริปต์. มัน มี ไฟล์ ที่ ประกอบด้วย ใบ สมัคร พร้อม ด้วย ข้อมูล เพิ่มเติม ที่ จำเป็น ใน การ ติด ตั้ง และ ลบ มัน.
แพค เก จ ที่ มา 2) ~ มี น้ำมันดิน ไฟล์ ต้นฉบับ บีบ อัด ของ รหัส ที่ มา, แพ ท ช์ และ ข้อกำหนด File.
* เป็น RPM และ ผู้จัดการ package RPM คือ อะไร?
RPM Package Manager (RPM) มี คำ สั่ง บรรทัด ที่ มี ประสิทธิภาพ การ บริหาร จัดการ ระบบ พัสดุ สามารถ ติด ตั้ง ถอน การ ติด ตั้ง, ตรวจ สอบ, querying, และ ปรับปรุง ชุด ซอฟต์แวร์.
Package RPM ประกอบด้วย เก็บ ไฟล์ และ meta ข้อมูล ที่ ใช้ ใน การ ติด ตั้ง และ ลบ ไฟล์ ที่ เก็บ. Meta ข้อมูล รวม สคริปต์ ผู้ ช่วยเหลือ, แอตทริบิวต์ ของ แฟ้ม และ ข้อมูล อธิบาย เกี่ยว กับ แพค เก จ.
* ใน การ สร้าง แพ็ก เก จ RPM คุณ ต้อง ระบุ สาม สิ่ง ~
ที่ มา 1) การ สมัคร – กรณี ที่ คุณ ไม่ ควร ปรับ เปลี่ยน มา ใช้ ใน การ สร้าง package.
2) กระจาย – RPM ช่วย ให้ คุณ สามารถ ที่ จะ ใช้ ปรับปรุง ให้ พวก เขา. แก้ไข ปัญหา ที่ อยู่ เฉพาะ ใน ระบบ เป้าหมาย. นี้ อาจ รวม ถึง การ เปลี่ยน makefiles ติด ตั้ง โปรแกรม ลง ใน ไดเรกทอรี ที่ เหมาะสม หรือ การ แก้ไข ความ ขัดแย้ง ข้าม แพลตฟอร์ม. ปรับปรุง สร้าง สิ่งแวดล้อม ที่ จำเป็น สำหรับ การ รวบรวม ที่ เหมาะสม.
3) ข้อกำหนด File – ไฟล์ ข้อกำหนด คือ หัวใจ ของ การ สร้าง RPM package. มัน มี ข้อมูล ที่ จำเป็น โดย RPM สร้าง แพค เก จ รวม ทั้ง คำ แนะนำ บอก RPM วิธี การ สร้าง มัน. ไฟล์ ข้อกำหนด ยัง dictates ว่า ไฟล์ ต่างๆ เป็น ส่วน หนึ่ง ของ แพ็ก เก จ และ ที่ พวก เขา ควร จะ ติด ตั้ง.
** ข้อกำหนด File ~ แบ่ง ใน 8 ส่วน ที่ แสดง ด้าน ล่าง
a) คำนำ ~ มี ข้อมูล ที่ จะ ปรากฏ เมื่อ ผู้ ใช้ ขอ ข้อมูล เกี่ยว กับ แพค เก จ. นี้ จะ รวม ถึง ราย ละเอียด ของ งาน ชุด ของ หมายเลข รุ่น ของ ซอฟต์แวร์ อื่น ๆ
b) Preparation ~ ที่ ทำงาน จริง ของ อาคาร package starts. เป็น ชื่อ นัย ส่วน นี้ เป็น ที่ ที่ จำเป็น ต้อง มี การ เตรียม การ ก่อน ที่ จะ ทำ อาคาร จริง ของ ซอฟต์แวร์. โดย ทั่วไป หาก สิ่ง ใด ต้อง ทำ ถึง แหล่ง ที่ มา ก่อน ที่ จะ สร้าง ซอฟต์แวร์ ที่ จะ ต้อง เกิด ขึ้น ใน ส่วน การ จัด เตรียม. เนื้อหา ใน ส่วน นี้ เป็น สคริปต์ เชลล์ สามัญ. แต่ RPM ไม่ ให้ สอง macros เพื่อ ให้ ชีวิต ง่าย ขึ้น. หนึ่ง แมโคร สามารถ แตก ไฟล์ บีบ อัด น้ำมัน และ cd เป็น ไดเรกทอรี ที่ มา. มาโคร อื่น ๆ ได้ อย่าง ง่ายดาย กับ แพ ท ช์ ไป มา จำนวน มาก ๆ.
c) สร้าง ~ ส่วน นี้ ประกอบด้วย สคริปต์ เปลือก. มี การ ใช้ การ คำ สั่ง ใด จะ ต้อง จริง รวบรวม แหล่ง ที่ มา เช่น เดียว ทำให้ คำ สั่ง หรือ มี ความ ซับซ้อน มาก ขึ้น หาก สร้าง กระบวนการ ต้อง เป็น. มี macros ไม่มี ใน ส่วน นี้ เป็น.
d) ติด ตั้ง ~ ส่วน นี้ ยัง มี สคริปต์ เปลือก ให้ การ ติด ตั้ง ส่วน ที่ จะ ใช้ ใน การ ดำเนิน การ คำ สั่ง จริง ต้อง ติด ตั้ง ซอฟต์แวร์.
e) ติด ตั้ง และ ยกเลิก การ ติด ตั้ง สคริปต์ ~ ประกอบด้วย สคริปต์ ที่ จะ ทำงาน ใน ระบบ ของ ผู้ ใช้ เมื่อ แพค เก จ ติด ตั้ง จริง หรือ ลบ. RPM สามารถ รัน สคริปต์ ก่อน การ ติด ตั้ง โพ ส ต์ / / ลบ package.
f) ~ ตรวจ สอบ สคริปต์ สคริปต์ ที่ รัน ใน ระบบ ของ ผู้ ใช้. จะ รัน เมื่อ RPM ยืนยัน การ ติด ตั้ง แพค เก จ ที่ เหมาะสม ของ.
g) Clean Section ~ สคริปต์ ที่ สามารถ ทำความ สะอาด สิ่ง ขึ้น หลังจาก การ สร้าง. สคริปต์ นี้ ใช้ ไม่ บ่อย เนื่องจาก RPM ปกติ ไม่ ได้ งาน ที่ ดี สะอาด ขึ้น ใน ที่สุด การ สร้าง สภาพ แวดล้อม.
h) List File ~ ประกอบด้วย ราย ชื่อ ของ ไฟล์ ที่ จะ ประกอบด้วย package. นอกจาก นี้ จำนวน macros สามารถ ใช้ การ ควบคุม คุณลักษณะ ของ แฟ้ม การ ติด ตั้ง เมื่อ รวม ทั้ง เพื่อ แสดง ว่า ไฟล์ ที่ เป็น เอกสาร และ ที่ มี ข้อมูล การ กำหนด ค่า. ราย ชื่อ แฟ้ม เป็น สิ่ง สำคัญ.
ต้องการ *** RPM เพื่อ สร้าง สภาพ แวดล้อม ~
A] RPM ต้อง ใช้ ชุด ของ ไดเรกทอรี เพื่อ ดำเนิน การ สร้าง. ขณะ ที่ ตั้ง ไดเรกทอรี และ ชื่อ สามารถ เปลี่ยน. รูป แบบ ที่ ตั้ง อยู่ ด้าน ล่าง —
root@arunsb:~# ls -l /usr/src/redhat/
drwxr-xr-x 2 root root 4096 Aug 25 2007 SOURCES => มี แหล่ง เดิม ที่ ปรับปรุง และ ไฟล์ ไอคอน
drwxr-xr-x 2 root root 4096 Aug 25 2007 SPECS => มี ไฟล์ ข้อกำหนด
drwxr-xr-x 2 root root 4096 Aug 25 2007 BUILD => Directory ที่ มา เป็น จำนวน มาก ๆ, และ ซอฟต์แวร์ ที่ ถูก สร้าง ขึ้น
drwxr-xr-x 8 root root 4096 May 28 2008 RPMS => มี แพค เก จ ไบนารี ไฟล์ ที่ สร้าง ขึ้น โดย การ สร้าง กระบวนการ
drwxr-xr-x 2 root root 4096 Aug 25 2007 SRPMS => มี ชุด มา ไฟล์ ที่ สร้าง ขึ้น โดย การ สร้าง กระบวนการ
root@arunsb:~#
B] เพื่อ ต้องการ ส่ง ออก ทั่ว โลก ไม่ กี่ ตัวแปร ใช้ RPM —
root@arunsb:~# export RPM_BUILD_DIR=/usr/src/redhat/BUILD/
root@arunsb:~# export RPM_SOURCE_DIR=/usr/src/redhat/SOURCES/
ขั้น ที่ 1] สร้าง ข้อกำหนด (ข้อมูล จำเพาะ) File ~
root@arunsb:~# head -n 50 /usr/src/redhat/SPECS/openlsm.spec
# Authority: Arun Bagul
#RPM_BUILD_DIR /usr/src/redhat/BUILD/
#RPM_SOURCE_DIR /usr/src/redhat/SOURCES/
%define MY_PREFIX /usr/local/openlsm/
## Preamble Section-
Name: openlsm
Version: 0.99
Vendor: IndianGNU.org & openlsm
Release: r45
Group: System Environment/Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Summary: openlsm Admin Server
License: GPL
%description
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.
## Preparation Section-
%prep
rm -rf ${RPM_BUILD_DIR}/openlsm-0.99-r45/
tar xvfz ${RPM_SOURCE_DIR}/openlsm-0.99-r45.tar.gz -C ${RPM_BUILD_DIR}
## Build Section-
%build
cd ./openlsm-0.99-r45/
./configure –prefix=/usr/local/openlsm –with-mysql=/usr/bin/mysql_config –enable-internal-pcre –with-geoip=/usr –with-ldap=/usr –enable-trace
make
## Install Section-
%install
cd ./openlsm-0.99-r45/
make install
## Files Section-
%files
/usr/local/openlsm
/usr/local/openlsm/etc/openlsm/openlsm.conf
/usr/local/openlsm/etc/openlsm/openlsm.conf.perf_sample
/usr/local/openlsm/etc/openlsm/ssl/
/usr/local/openlsm/bin/openlsm-config
….
…..
….. list of files installed by pkg
root@arunsb:~#
* คุณ จะ สร้าง ราย ชื่อ ไฟล์ อย่างไร
สร้าง ราย ชื่อ ไฟล์ เป็น กระบวนการ คู่มือ. สิ่ง ที่ ฉัน ไม่ เป็น ฉัน เอา ราย ชื่อ ไฟล์ จาก ไดเรกทอรี คำนำ หน้า ของ ฉัน คู่มือ ติด ตั้ง หา คำ สั่ง ที่ แสดง ด้าน ล่าง …
root@arunsb:~# find /usr/local/openlsm/ -type f -or -type d
ขั้น ที่ 2] เริ่ม ต้น สร้าง ~
root@arunsb:~# cd /usr/src/redhat/SPECS
root@arunsb:/usr/src/redhat/SPECS# ls -l openlsm.spec
-rw-r–r– 1 root root 12938 Dec 2 17:21 openlsm.spec
root@arunsb:/usr/src/redhat/SPECS#
root@arunsb:/usr/src/redhat/SPECS# rpmbuild -ba openlsm.spec
…
….
…..
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
Wrote: /usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
Wrote: /usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root@arunsb:/usr/src/redhat/SPECS# echo $?
0
root@arunsb:/usr/src/redhat/SPECS# ls -l /usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
-rw-r–r– 1 root root 3206 Dec 2 17:50 /usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
root@arunsb:/usr/src/redhat/SPECS# ls -l /usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
-rw-r–r– 1 root root 3052868 Dec 2 17:50 /usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root@arunsb:/usr/src/redhat/SPECS#
* แหล่ง ที่ มา และ แพค เก จ ไบนารี สร้าง ขึ้น แล้ว!
** มา ดู สิ่ง ที่ เกิด ขึ้น ใน “/usr/src/redhat/” directory –
root@arunsb:/usr/src/redhat# pwd
/usr/src/redhat
root@arunsb:/usr/src/redhat# ls
BUILD RPMS SOURCES SPECS SRPMS
root@arunsb:/usr/src/redhat# ls BUILD/
openlsm-0.99-r45 <== สกัด ที่ นี่ เป็น ส่วน หนึ่ง ของ การ สร้าง คำ แนะนำ จาก เช่น ไฟล์ ข้อกำหนด “openlsm.spec”
root@arunsb:/usr/src/redhat# ls SOURCES/
openlsm-0.99-r45.tar.gz <== ต้นฉบับ ‘openlsm-0.99-r45.tar.gz’ แฟ้ม คัด ลอก จาก ฉัน
root@arunsb:/usr/src/redhat# ls RPMS/
athlon i386 i486 i586 i686 noarch
root@arunsb:/usr/src/redhat# ls RPMS/i386/
openlsm-0.99-r45.i386.rpm <== แพค เก จ RPM Binary สร้าง ขึ้น แล้ว
root@arunsb:/usr/src/redhat# ls SRPMS/
openlsm-0.99-r45.src.rpm <== แพค เก จ รอบ ต่อ นาที ที่ มา สร้าง ขึ้น แล้ว
root@arunsb:/usr/src/redhat#
ขั้น ที่ 3] ตอน นี้ แพ็คเกจ การ ติด ตั้ง และ ทดสอบ ~
root@arunsb:/usr/src/redhat# cp RPMS/i386/openlsm-0.99-r45.i386.rpm /home/arunsb/
root@arunsb:/usr/src/redhat# cd /home/arunsb/
root@arunsb:~# ls
openlsm-0.99-r45.i386.rpm
root@arunsb:~# rpm -ivh openlsm-0.99-r45.i386.rpm
Preparing… ########################################### [100%]
1:openlsm ########################################### [100%]
root@arunsb:~# ls /usr/local/openlsm/
bin contrib etc include lib sbin scripts share var
root@arunsb:~#
** เริ่ม ต้น เซิร์ฟเวอร์ openlsm ~
root@arunsb:~# /usr/local/openlsm/contrib/openlsm-redhat start
* Starting openlsm admin server: openlsm
. [ OK ]
root@arunsb:~#
root@arunsb:~# /usr/local/openlsm/contrib/openlsm-redhat status
openlsm (pid 21607) is running…
root@arunsb:~#
root@arunsb:~# rpm -q openlsm-0.99-r45
openlsm-0.99-r45
root@arunsb:~#
root@arunsb:~# rpm -ql openlsm-0.99-r45
..
…
root@arunsb:~# rpm -qiv openlsm-0.99-r45
Name : openlsm Relocations: (not relocatable)
Version : 0.99 Vendor: IndianGNU.org & openlsm
Release : r45 Build Date: Wed 02 Dec 2009 05:50:54 PM IST
Install Date: Wed 02 Dec 2009 06:06:23 PM IST Build Host: alongseveral-dr.eglbp.corp.yahoo.com
Group : System Environment/Daemons Source RPM: openlsm-0.99-r45.src.rpm
Size : 14877918 License: GPL
Signature : (none)
Packager : IndianGNU.org (http://www.indiangnu.org)
URL : http://openlsm.sourceforge.net/
Summary : openlsm Admin Server
Description :
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.
root@arunsb:~#
** หมายเหตุ ~ บทความ นี้ ไม่มี ข้อมูล เกี่ยว กับ การ กำหนด micros วิธี การ สำเนา เอกสาร หน้า มนุษย์ เริ่ม สถาน ที่ วิธี การ ตั้ง permision เป็นต้น เจ้าของ ฉัน จะ ครอบคลุม เรื่อง นี้ ใน บทความ ต่อ ไป ใน RPM.
** โปรด ดู ที่ บทความ ภาษา อังกฤษ ~ http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/
ความ นับถือ,
Arun Bagul