如何创建一个自动安装其他包的元包?

Tho*_*ard 59 package-management packaging dpkg metapackages equivs

我希望能够创建一个不包含任何代码或程序本身的包,而是将存储库中存在的其他包安装到计算机上,该ubuntu-restricted-extras包的功能如何?

ajm*_*tch 53

可以使用名为的工具创建像这样的元包 equivs 这将创建一个仅包含依赖信息的包。

首先,创建一个目录:

mkdir my-metapackage
cd my-metapackage/
Run Code Online (Sandbox Code Playgroud)

现在运行程序:

equivs-control ns-control
Run Code Online (Sandbox Code Playgroud)

它将创建一个名为 的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!
Run Code Online (Sandbox Code Playgroud)

(只是一个例子,你应该包括更多的信息)

最后,通过运行构建包

equivs-build ns-control
Run Code Online (Sandbox Code Playgroud)

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

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

要创建可以上传到 PPA 的源 .changes 文件,请使用以下命令提取和构建源包

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S
Run Code Online (Sandbox Code Playgroud)

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

  • 它完美地工作! (2认同)