Am un pachet cu ceva cod C++. În prezent, compilez o parte din codul c++ ca binar, altele ca bibliotecă și îl pot livra și implementa pe alte platforme.
Cu toate acestea, am și un driver acolo, pe care nu îl pot compila încrucișat din cauza dependenței sale de nucleu, ceea ce face ca fiecare nucleu să aibă nevoie de un binar diferit.
Deci, ceea ce vreau să am este un .deb unde voi stoca binarul sub /usr/bin (terminat), biblioteca sub /usr/lib (de asemenea, făcut) și codul sursă al driverului sub /opt/driver (presupun că ... Este acesta un loc legitim pentru asta?)
Împachetarea aceasta este partea ușoară, deoarece tot ce trebuie să fac este să o pun în spațiul meu de lucru și să sun dpkg-deb
. Ceea ce nu sunt sigur sunt două lucruri
- Este legitim să împachetați codul sursă într-un .deb? (În terminologia python - este .deb un bdist (distribuție binară) sau poate fi, de asemenea, un sdist (distribuție sursă))
- Dacă este legitim, cum pot invoca comenzile make? Poate sa
dpkg / apt
sa faci asta pentru mine? Sau trebuie să fug dpkg -i pkg
și apoi fugi face
? [uitandu-ma la postinst dar nu sunt sigur dacă aceasta este calea corectă]
Sunt deschis la orice tip de sistem de construcție dacă poate rezolva acest lucru, deși în prezent folosesc cmake și aș prefera să rămân la el
POC-ul meu:
arbore bla_x86_64
bla_x86_64
âââ DEBIAN
â  âââ control
â  âââ postinst
âââ opt
â  âââ bla.cpp
âââ usr
âââ coș
â  âââ bla.bin
âââ lib
âââ bla.lib
cat bla_x86_64/DEBIAN/postinst
#!/bin/sh
set -e
ecou salut lume!
echo compilare $(ls /opt/bla.cpp)
curățarea ecoului
rm -rvf /opt/bla.cpp
$ dpkg-deb --build --root-owner-group bla_x86_64/
dpkg-deb: construirea pachetului „bla” în „bla_x86_64.deb”.
$ sudo dpkg -i bla_x86_64.deb
(Se citesc baza de date... 407519 fișiere și directoare instalate în prezent.)
Se pregătește despachetarea bla_x86_64.deb...
Despachetarea bla (4.0) peste (3.0)...
Configurarea bla (4.0)...
Salut Lume!
compilarea /opt/bla.cpp
curăță
eliminat „/opt/bla.cpp”