จากมุมมองของฉัน มันขึ้นอยู่กับสิ่งที่คุณกำหนดเป้าหมายอย่างแน่นอน:
ลีนุกซ์รุ่นดิสทริบิวชันเช่น Fedora คาดหวังสำหรับรุ่นการแจกจ่ายที่ซอฟต์แวร์สร้างขึ้นจากซอร์สโดยใช้ไฟล์ข้อมูลจำเพาะ (ภายในระบบบิลด์ที่ปิดสนิทซึ่งมีการจัดทำเอกสารแพ็คเกจ/ส่วนประกอบที่ใช้สำหรับการสร้างด้วย) และพิจารณาว่านี่เป็นแนวทางปฏิบัติที่ดี เพื่อให้ได้ความสามารถในการทำซ้ำได้มากเท่าๆ กัน เป็นไปได้.
อย่างไรก็ตาม คุณสามารถดึงไบนารีที่สร้างไว้ล่วงหน้าและใช้มันภายในไฟล์ข้อมูลจำเพาะเพื่อสร้างแพ็คเกจ RPM ตัวอย่างย่อสำหรับสถานการณ์ของคุณ:
# [â¦]
Source0: <ไฟล์ไบนารี>
Source1: <ไฟล์คอนฟิก>
# [â¦]
เตรียม%
% การตั้งค่า -q -c -T
%สร้าง
%ติดตั้ง
ติดตั้ง -D -p -m 0755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/%{name}
ติดตั้ง -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf
# [â¦]
ขณะนี้อาจใช้งานได้ คุณควรตรวจสอบอย่างชัดเจนว่าการอ้างอิงของแพ็คเกจ RPM ผลลัพธ์นั้นเหมาะสมหรือไม่ (rpm -qp -- ต้องการ <â¦>.rpm
) หรือหากไม่มีการพึ่งพารันไทม์ มักจะมีตัวเลือกหรือพารามิเตอร์เวลาคอมไพล์ (เช่น CFLAGS
หรือ แอลดีแฟลกส์
ซอฟต์แวร์ที่เขียนด้วยภาษา C) รวมถึงสคริปต์หลังการประมวลผล (เช่น /usr/lib/rpm/(redhat/)brp-*
) ในขณะที่สร้างแพ็คเกจ RPM ที่เพิ่มเนื้อหาเฉพาะของการกระจายและ/หรือแยกการพึ่งพารันไทม์ให้คุณ สิ่งนี้อาจเกี่ยวข้องกับคุณหรือไม่ก็ได้ (และสคริปต์หลังการประมวลผลบางตัวอาจใช้ได้กับไบนารีที่สร้างไว้ล่วงหน้า แต่สคริปต์อื่นไม่ได้เนื่องจากไม่มีตัวเลือกคอมไพเลอร์) ในขณะที่ฉันบรรจุซอฟต์แวร์จำนวนมาก ฉันไม่มีประสบการณ์กับ Haskell แต่เมื่อมองหาแพ็คเกจ Fedora บางแพ็คเกจ มีแพ็คเกจ RPM ที่มีการพึ่งพารันไทม์ (และหากมีการพึ่งพารันไทม์ สิ่งเหล่านี้จะต้องได้รับความพึงพอใจจาก แพ็คเกจ RPM เพราะนั่นคือวิธีการทำงานของ RPM และการมีไลบรารี่ที่ตรงกันในระบบไฟล์ของคุณนั้นไม่เพียงพอ เพราะ RPM จะไม่รู้เกี่ยวกับมันยกเว้นว่ามันมีให้โดยแพ็คเกจ RPM) ดังนั้น การสร้างแพ็คเกจ RPM จากไบนารีที่สร้างไว้ล่วงหน้าอาจนำไปสู่แพ็คเกจ RPM ที่ไม่มีการอ้างอิงที่เหมาะสม ซึ่งอาจแสดงเป็นข้อผิดพลาดรันไทม์ในภายหลัง
เกี่ยวกับตัวอย่างข้างต้น: ในขณะที่ ซอร์สเอ็กซ์:
สามารถกำหนด URL ได้ รอบต่อนาทีสร้าง
ยังคงคาดว่าไฟล์เหล่านี้อยู่บนดิสก์ใน แหล่งที่มา
ไดเร็กทอรีเมื่อสร้างแพ็คเกจ RPM (ดังนั้นวิธีที่พวกเขาเข้าสู่ไฟล์ แหล่งที่มา
ไดเรกทอรีขึ้นอยู่กับคุณ)
เนื่องจากคุณไม่ได้ระบุว่าคุณกำลังกำหนดเป้าหมายการกระจาย Linux ตัวใด ฉันกำลังเชื่อมโยง Fedora's หลักเกณฑ์การบรรจุ Haskell
ที่นี่ซึ่งอาจหรือไม่ให้แรงบันดาลใจเพิ่มเติมและใช่ แพ็คเกจ RPM สามารถกระจายข้ามกันได้ ซึ่งจริง ๆ แล้วมักจะนำไปสู่ไบนารีแบบสแตติกภายในแพ็คเกจ RPM เนื่องจากไลบรารี / แพ็คเกจเวอร์ชันต่าง ๆ บนลีนุกซ์รุ่นต่าง ๆ