สร้าง RPM โดยใช้ไดเรกทอรีต้นทางไม่ใช่ tarball


14

ในองค์กรของฉันเราปรับใช้ซอฟต์แวร์ทั้งหมดของเรากับเครื่องผลิตโดยใช้ RPM กระบวนการสร้างของเรา (ซึ่งเป็นแบบอัตโนมัติ) เกี่ยวข้องกับการตรวจสอบแหล่งที่มาจากการควบคุมเวอร์ชันชักชวนไดเรกทอรีแหล่งที่มาแล้วเรียกใช้ rpmbuild โดยใช้ tarball แหล่งที่มา rpmbuild ใช้ tarball นั้นเพื่อตัดแหล่งที่มาเพื่อทำงานกับมัน ดังนั้นดูเหมือนว่าธุรกิจที่ดำเนินการต่อเนื่องและไม่ย่อท้อเป็นเพียงขั้นตอนพิเศษที่ไม่จำเป็นในกระบวนการสร้าง มีวิธีในการระบุไดเรกทอรีต้นทางในไฟล์ข้อมูลจำเพาะหลีกเลี่ยงขั้นตอนพิเศษเหล่านั้นหรือไม่

คำตอบ:


5

ใช่คุณสามารถทำได้ ไม่แสดงรายชื่อใด ๆSources ใน%prepส่วนนี้อย่าใช้%setupมาโคร (ซึ่งจะหาแหล่งที่มา) ค่อนข้างเพียงตรวจสอบแหล่งที่มา

โปรดทราบว่าคุณจะไม่สามารถสร้าง SRPM ได้หากคุณทำเช่นนี้


สิ่งนี้ทำ ฉันแค่ต้องปรับเปลี่ยนขั้นตอนการสร้างเพื่อตรวจสอบสิ่งต่าง ๆ ไปยังไดเรกทอรี rpm BUILD แทน ขอบคุณ!
Eddie

10

คำถามนี้ค่อนข้างเก่า แต่ในกรณีที่คนอื่นพบในการค้นหามีวิธีที่ถูกต้องมากขึ้นในการทำเช่นนี้ที่ยังอนุญาตให้มีการสร้าง SRPM

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

ตัวอย่างข้อมูล

%prep
# Don't use the setup macro anymore, replace it with typed-out commands
#%setup -q -n myapp-%{version}
cd %{_topdir}/BUILD
rm -rf myapp-%{version}
cp -rf %{_topdir}/SOURCES/myapp-%{version} .
cd myapp-%{version}
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}

ควร%{_topdir}/SOURCESเป็น%{_sourcedir}อย่างไร และ%{_topdir}/BUILDอาจเป็น%{buildroot}อย่างไร (ในกรณีเดียวกันสำหรับสถานการณ์ที่คล้ายกัน แต่แตกต่างกันซึ่งคุณกำลังพยายามเพิ่มไฟล์พิเศษเพื่อแทนที่ไฟล์ที่แยกออกมา%setupเอกสาร Fedora แนะนำให้ใช้%{SOURCE2}ฯลฯ - fedoraproject.org/wiki/Packaging:RPM_Source_Dir )
IBBoard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.