xyl*_*per 8 compiling packaging deb
我想从相同的来源为不同的版本和发行版构建多个 .deb 包。即使源代码完全相同,由于依赖和发行版名称不同,debian 文件夹中的某些文件也无法共享。
所以,我想为每个版本/发行版创建多个“debian”目录,并指定在构建包时搜索它的位置。是否可以?
供您参考,我正在使用 debuild 命令来构建 .deb 包。
使用不同的分支是一种方法,如果合适,我可以建议对@mestia 的答案进行编辑(但请继续阅读...)。
另一种方法是并排保存不同的文件;有关此示例,请参阅Solar。
但是这两种方法都有一个明显的缺点:它们不适用于 Debian 或 Ubuntu(或者可能是其他衍生产品)中的软件包。如果您打算某天将您的包放入一个发行版,您应该以这样一种方式打包它,即同一组文件在不同的发行版中产生正确的结果。
举个例子,看看Solaar 的Debian 包装(完全披露:我做了包装)。
一般的想法是问dpkg-vendor分布是什么; 所以对于在 Debian 和 Ubuntu 中具有不同依赖关系的 Solar,debian/rules有
derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")
Run Code Online (Sandbox Code Playgroud)
并进一步覆盖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
Run Code Online (Sandbox Code Playgroud)
这将填充适当的变量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}
Run Code Online (Sandbox Code Playgroud)
和
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}
Run Code Online (Sandbox Code Playgroud)
您可以使用测试debian/rules来控制您可以在 makefile 中执行的任何操作,这意味着您可以将它与替代文件结合起来,例如,在它们用于包构建之前链接适当的文件。
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |