Compiling
為不同的基於 Debian 的發行版建構相同的源包
我想為不同的版本和發行版從相同的源建構多個 .deb 包。即使原始碼完全相同,由於依賴項和發行版名稱不同,debian 文件夾中的某些文件也無法共享。
所以,我想為每個版本/發行版創建多個“debian”目錄,並指定在建構包時搜尋它的位置。是否可以?
供您參考,我正在使用 debuild 命令建構 .deb 包。
使用不同的分支是一種方法,如果看起來合適,我可以建議編輯@mestia 的答案(但請繼續閱讀……)。
另一種方法是並排保存不同的文件。有關這方面的範例,請參見Solar 。
但是這兩種方法都有一個明顯的缺點:它們不適合 Debian 或 Ubuntu(或者可能是其他衍生產品)中的軟體包。如果您打算在某一天將您的包放入一個發行版中,您應該以這樣一種方式打包它,即同一組文件在不同的發行版中產生正確的結果。
例如,請查看Solarar 的 Debian 包裝(完全披露:我做了包裝)。
總體構想是問
dpkg-vendor
分佈是什麼;所以對於在 Debian 和 Ubuntu 中具有不同依賴關係的 Solar,debian/rules
有derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")
並進一步向下覆蓋以
dh_gencontrol
根據需要填寫“substvars”:override_dh_gencontrol: ifeq ($(derives_from_ubuntu),yes) dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme-full | oxygen-icon-theme-complete' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme-full else dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme | oxygen-icon-theme' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme endif
這會在 中填充適當的變數
debian/control
:Package: solaar Architecture: all Depends: ${misc:Depends}, ${debconf:Depends}, udev (>= 175), passwd | adduser, ${python:Depends}, python-pyudev (>= 0.13), python-gi (>= 3.2), gir1.2-gtk-3.0 (>= 3.4), ${solaar:Desktop-Icon-Theme}
和
Package: solaar-gnome3 Architecture: all Section: gnome Depends: ${misc:Depends}, solaar (= ${source:Version}), gir1.2-appindicator3-0.1, gnome-shell (>= 3.4) | unity (>= 5.10), ${solaar:Gnome-Icon-Theme}
您可以使用測試
debian/rules
來控制您可以在 makefile 中執行的任何操作,這意味著您可以將其與替代文件結合起來,例如,在將適當的文件用於包建構之前連結它們。