控制文件中是否存在多个依赖/推荐/[…]?

控制文件中是否存在多个依赖/推荐/[…]?

dpkg 控制文件中的任意字段类型是否可以有多行?这与行延续无关,而是例如 Depends 与 Recommends 交织在一起,如下所示:

依赖:git、etckeeper、apt-file
推荐:equivs
依赖:mplayer、pidgin、dlocate、pwsafe、ciso
推荐:aria2

等等。这是允许的吗?是未指定的(某些工具会对此进行警告)还是明确禁止的?(在 debian-policy 中也找不到任何内容)

答案1

您不能有多个 Depends 条目,但是...事实证明,您可以有一个多行“Depends”条目。

哦,太棒了!如果依赖项不止一个,那么 debian/control 文件的维护就会变得容易得多。单个 Depends 可能跨越多行。后续行需要以单个空格开头。请参见下文(实际的软件包,其名称有所更改,以保护无辜者)

Package: company-y-meta
Architecture: all
Depends: ${misc:Depends},
 python-y-production,
 python-y-cellular,
 y-update,
 y-webapp-passwords,
 telegraf-y-addon (>= 0.0.01),
 vendor-cellular-utils (<< 1.20),
Description: Company Y Metapackage
 This package installs no software, but depends on all
 software needed to install product-y on physical platform

我读了 OP 的问题(后来已经澄清了)好几遍,并认为最初被接受的答案意味着你永远不能有多行 Depend 条目。但事实证明,他们对多个 Depends 键特别感兴趣。你不能有多个 Depends 键,除非你正在编写一个多包控制文件,其中每个 Depends 子句都属于不同的子包。你有多行条目(但不能将它们与控制文件的其他部分交错)。我为像我这样的其他人添加了这个答案,他们并不想做一些奇怪的事情,而只是想拥有一个可读的控制文件,以及一个可读的 git 历史记录。

答案2

不,你不能这样做。我从来没有想过要尝试这样的事情,但我还是尝试了一下。我尝试在文件中构建一个包含以下内容的包debian/control

Package: bzr-explorer
Architecture: all
XB-Python-Version: ${python:Versions}
Depends: ${misc:Depends}, ${python:Depends}
Recommends: tango-icon-theme
Suggests: bzr-gtk
Depends: bzr (>= 1.14), qbzr (>= 0.19)
Recommends: bzr-svn
Suggests: bzr-git

dpkg一点也不喜欢:

dpkg-source: error: syntax error in bzr-explorer-1.1.2/debian/control at line 24: duplicate field Depends found
dpkg-buildpackage: error: dpkg-source --before-build bzr-explorer-1.1.2 gave error exit status 9
debuild: fatal error at line 1337:
dpkg-buildpackage -rfakeroot -d -us -uc -S failed

事实上,现在我去寻找它,这在Debian 政策,5.1 控制文件的语法

一个段落不得包含多个特定字段名称的实例。

相关内容