如何创建一个元包,可以自动安装其他软件包?

我想能够创建一个不包含任何代码或程序的软件包,而是将存在于存储库中的其他软件包安装到计算机上,就像ubuntu-restricted-extras软件包那样。
1个回答

像这样的元包可以使用一个名为equivs 的工具创建,该工具将创建一个仅带有依赖信息的软件包。
首先,创建一个目录:
mkdir my-metapackage
cd my-metapackage/

现在运行程序:
equivs-control ns-control

它将创建一个名为ns-control的文件,请使用文本编辑器打开此文件。 您生成的控制文件应修改其DependsRecommends行,以依赖于您想要安装的软件包。
Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(只是一个例子,你应该包含更多的信息)
最后,通过运行构建软件包。
equivs-build ns-control

您的软件包位于my-metapackage/my-metapackage_1.0_all.deb

如果您希望同时创建源代码软件包,可以将--full选项传递给equivs-build,例如equivs-build --full ns-control。这将使用debuild并创建.dsc和.tar.gz文件。

要创建一个源代码.changes文件,您可以上传到PPA,请提取并构建源代码软件包:

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

如果您在ns-control中设置的维护者与您的GPG密钥匹配,则应该为您构建并签署my-metapackage_1.0_source.changes文件,以便您将其上传到您的PPA。

非常感谢。我很可能会在稍后测试这个,但到目前为止,指示都起作用了。 :) - Thomas Ward
2它运行得非常完美! - Stefano Palazzo
感谢你的回答,ajmitch,但是出于某些原因,我要指出,如果你有一个~/.devscripts文件,并在该文件中明确定义了一个不同的GPG密钥来用于devscripts过程,它将覆盖dpkg/debuild过程,并使用.devscripts中指定的特定GPG密钥。这只是对你回答中最后一句话的一个值得注意的观点。 - Thomas Ward
我注意到将软件包放在Depends:下面,只有当这些软件包存在时,安装才会成功;如果我的机器上没有这些软件包,它不会自动安装。为了安装它们,我改用了Provides,效果非常好。请查看我的代码(只是做了一些修改):https://github.com/palladius/debian-packages/blob/master/palladius-ubuntu-desktop/ns-control - Riccardo