My code works, I don’t know why.

國王的耳朵是驢耳朵

[Debian套件打包] 從同一套tarball打包多個套件

| Comments

緣由

使用apt套件管理可以看到,安裝函式庫通常是使用apt-get install libxxx。但是如果編譯時就會需要額外安裝libxxx-dev套件。該套件通常就是多了靜態函式庫以及header files。由於libxxx和libxxx-dev應該從同一包tarball產生,好奇之餘整理一下如何從一包tarball產生多個套件的方式。

步驟

  • 更改debian/control,加入新的打包名稱,以及相依套件。
    • 範例:原本的套件是libxxx,那麼舊新增libxxx-dev,並且和相依於libxxx。
  • 新增debian/套件名稱.install,並且寫套件想要安裝的檔案。
    • 範例:debian/libxxx.install和debian/libxxx-dev.install

測試

直接使用之前的測試方法裏面的套件,照上面的方式修改。

debian/control新增testautotools-dev套件
1
2
3
4
5
6
7
16,21d15
<
< Package: testautotools-dev
< Architecture: any
< Depends: ${shlibs:Depends}, ${misc:Depends} testautotools
< Description: <insert up to 60 chars description>
<  <insert long description, indented with spaces>

另外兩個install 檔案列出如下

debian/testautotools.install
1
2
usr/lib/*.so.0*
usr/bin/my_test
debian/testautotools-dev.install
1
2
3
4
usr/lib/*.a
usr/lib/*.so
usr/lib/*.la
usr/include

更改後跑dpkg-buildpackage -uc -us產生的檔案如下

產生的檔案列表
1
2
3
4
5
testautotools_0-1.dsc
testautotools_0-1_amd64.changes
testautotools_0-1_amd64.deb
testautotools-dev_0-1_amd64.deb
testautotools_0-1.debian.tar.gz

Comments