Score:0

ฉันควรสร้างแอป Haskell ผ่านไฟล์ RPM SPEC หรือลองใช้ไบนารี (ทำซ้ำได้) จากไปป์ไลน์ CI

ธง in

ฉันไม่ได้สร้าง RPM ตั้งแต่เริ่มต้นใน 20 ปี ดังนั้นเราจึงสามารถพูดว่า "ไม่เคย" ได้อย่างมีประสิทธิภาพ

[แก้ไข] ข้อกำหนดสำหรับ RPM คือการจัดเตรียมการย้อนกลับ การควบคุมเวอร์ชัน และอื่นๆ มันไม่สามารถต่อรองได้

ฉันมีไฟล์ไบนารีเดียวและไฟล์กำหนดค่าไฟล์เดียวที่ฉันต้องติดตั้ง มีการตั้งค่าบางอย่างกับบัญชีผู้ใช้และไดเร็กทอรีที่ต้องเกิดขึ้นซึ่งฉันเชื่อว่าควรตรงไปตรงมา

ถ้าฉันต้องการบิลด์ที่ทำซ้ำได้ที่ผ่านการทดสอบแล้วในกระบวนการบิลด์ RPM ฉันต้องทำซ้ำขั้นตอนไปป์ไลน์ CI ของเรา ไม่สำคัญ เป็นการดีที่ฉันสามารถดึงไฟล์ที่ต้องการจากที่อื่น:

เตรียม%
cp ${somefile} ${another file} $RPM_SOURCE_DIR
%ติดตั้ง
:

เป็นไปได้ไหม หรือฉันไม่มีวิธีแก้ปัญหาที่ชัดเจน

ขอบคุณ.

Score:1
ธง jp
rsc

จากมุมมองของฉัน มันขึ้นอยู่กับสิ่งที่คุณกำหนดเป้าหมายอย่างแน่นอน:

ลีนุกซ์รุ่นดิสทริบิวชันเช่น 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 เนื่องจากไลบรารี / แพ็คเกจเวอร์ชันต่าง ๆ บนลีนุกซ์รุ่นต่าง ๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา