ฉันมี pkg พร้อมรหัส c ++ ขณะนี้ฉันกำลังรวบรวมโค้ด c++ บางส่วนเป็นไบนารี บางส่วนเป็นไลบรารี และฉันสามารถจัดส่งและปรับใช้บนแพลตฟอร์มอื่นได้
อย่างไรก็ตาม ฉันยังมีไดรเวอร์อยู่ที่นั่นด้วย ซึ่งฉันไม่สามารถคอมไพล์ข้ามได้เนื่องจากการพึ่งพาเคอร์เนล ซึ่งทำให้เคอร์เนลทุกตัวอาจต้องการไบนารีที่แตกต่างกัน
ดังนั้น สิ่งที่ฉันต้องการคือ .deb ที่ฉันจะเก็บไบนารีภายใต้ /usr/bin (เสร็จสิ้น) ห้องสมุดภายใต้ /usr/lib (เสร็จสิ้นเช่นกัน) และซอร์สโค้ดไดรเวอร์ภายใต้ /opt/driver (ฉันเดาว่า ... ที่นี่เป็นสถานที่ที่ถูกต้องหรือไม่?)
การบรรจุเป็นส่วนที่ง่าย เพราะสิ่งที่ฉันต้องทำคือวางไว้ในพื้นที่ทำงานของฉัน แล้วโทรหา dpkg-deb
. สิ่งที่ไม่แน่ใจมีสองอย่าง
- การบรรจุซอร์สโค้ดใน .deb นั้นถูกต้องตามกฎหมายหรือไม่ (ในคำศัพท์หลาม - คือ .deb a bdist (การแจกแจงแบบไบนารี) หรืออาจเป็น sdist (การแจกแจงแหล่งที่มา))
- หากถูกต้องฉันจะเรียกใช้คำสั่ง make ได้อย่างไร สามารถ
dpkg / ฉลาด
ทำเพื่อฉัน? หรือฉันต้องวิ่ง dpkg -i pkg
แล้วเรียกใช้ ทำ
? [มองไปที่ ภายหลัง แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือไม่]
ฉันเปิดรับระบบบิลด์ทุกประเภทหากสามารถแก้ปัญหานี้ได้แม้ว่าฉันกำลังใช้ cmake อยู่และอยากจะยึดติดกับมันมาก
POC ของฉัน:
ต้นไม้ bla_x86_64
bla_x86_64
âââ เดเบียน
â âââ ควบคุม
â âââ โพสต์อินส
âââ เลือก
â âââ bla.cpp
€ââ ยูเอสอาร์
âââ ถัง
â âââ bla.bin
âââ ลิบ
âââ bla.lib
cat bla_x86_64/DEBIAN/postinst
#!/bin/sh
ตั้ง -e
ก้อง สวัสดีชาวโลก!
echo รวบรวม $(ls /opt/bla.cpp)
ล้างเสียงสะท้อน
rm -rvf /opt/bla.cpp
$ dpkg-deb --build --root-owner-group bla_x86_64/
dpkg-deb: สร้างแพ็คเกจ 'bla' ใน 'bla_x86_64.deb'
$ sudo dpkg -i bla_x86_64.deb
(กำลังอ่านฐานข้อมูล ... 407519 ไฟล์และไดเร็กทอรีที่ติดตั้งอยู่ในขณะนี้)
กำลังเตรียมแกะ bla_x86_64.deb ...
แกะกล่อง bla (4.0) มากกว่า (3.0) ...
กำลังตั้งค่า bla (4.0) ...
สวัสดีชาวโลก!
รวบรวม /opt/bla.cpp
ทำความสะอาด
ลบ '/opt/bla.cpp'