Tôi có một pkg với một số mã C++. Hiện tại tôi đang biên dịch một số mã C++ dưới dạng nhị phân, một số dưới dạng thư viện và tôi có thể gửi và triển khai mã đó trên các nền tảng khác.
Tuy nhiên, tôi cũng có một trình điều khiển ở đó, mà tôi không thể biên dịch chéo do sự phụ thuộc của nó vào kernel, điều này khiến cho mỗi kernel có thể cần một nhị phân khác nhau.
Vì vậy, những gì tôi muốn có là một .deb nơi tôi sẽ lưu trữ tệp nhị phân bên dưới/usr/bin (đã hoàn tất), thư viện bên dưới/usr/lib (cũng đã hoàn thành) và mã nguồn trình điều khiển bên dưới/opt/driver (tôi đoán vậy ... Đây có phải là một nơi hợp pháp cho điều đó?)
Đóng gói đây là phần dễ dàng, vì tất cả những gì tôi cần làm là đặt nó vào không gian làm việc của mình và gọi dpkg-deb
. Điều tôi không chắc chắn là hai điều
- Việc đóng gói mã nguồn trong .deb có hợp pháp không? (Trong thuật ngữ python - là .deb một bdist (phân phối nhị phân) hoặc cũng có thể là một sdist (phân phối nguồn))
- Nếu nó hợp pháp, làm cách nào tôi có thể gọi các lệnh tạo? Có thể
dpkg / apt
làm điều đó cho tôi? Hay tôi cần phải chạy dpkg -i pkg
và sau đó chạy chế tạo
? [nhìn postinst nhưng tôi không chắc liệu đây có phải là con đường đúng đắn hay không]
Tôi sẵn sàng sử dụng bất kỳ loại hệ thống xây dựng nào nếu nó có thể giải quyết vấn đề này mặc dù tôi hiện đang sử dụng cmake và rất muốn gắn bó với nó
POC của tôi:
cây bla_x86_64
bla_x86_64
âââ DEBIAN
â  âââ kiểm soát
â  âââ postinst
âââ chọn
â âââ bla.cpp
âââ usr
âââ thùng
â âââ bla.bin
âââ lib
âââ bla.lib
mèo bla_x86_64/DEBIAN/postinst
#!/bin/sh
đặt -e
tiếng vang xin chào thế giới!
biên dịch tiếng vang $(ls /opt/bla.cpp)
dọn dẹp tiếng vang
rm -rvf /opt/bla.cpp
$ dpkg-deb --build --root-owner-group bla_x86_64/
dpkg-deb: xây dựng gói 'bla' trong 'bla_x86_64.deb'.
$ sudo dpkg -i bla_x86_64.deb
(Đọc cơ sở dữ liệu ... 407519 tệp và thư mục hiện được cài đặt.)
Chuẩn bị giải nén bla_x86_64.deb ...
Giải nén bla (4.0) qua (3.0) ...
Đang thiết lập bla (4.0) ...
Chào thế giới!
biên dịch /opt/bla.cpp
dọn dẹp
đã xóa '/opt/bla.cpp'