在meson
的debian/control
文件中,我看到它的Build-Depends
如下(见最后一行(:
Source: meson
Maintainer: Jussi Pakkanen <jpakkane@gmail.com>
Section: devel
Priority: optional
Standards-Version: 4.5.0
Homepage: https://mesonbuild.com
X-Python3-Version: >= 3.7
Rules-Requires-Root: no
Build-Depends: debhelper (>= 12),
python3:any (>= 3.5),
... ...
";任何";在";蟒蛇3:任何(>=3.5(">
我在这里找到了源代码的相关部分(希望我找到了正确的代码(:
return if not $dep =~
m{^s* # skip leading whitespace
($pkgname_re) # package name
(?: # start of optional part
: # colon for architecture
([a-zA-Z0-9][a-zA-Z0-9-]*) # architecture name
)? # end of optional part
代码注释表示":任何";第三部分对体系结构进行了详细说明。
然而,在阅读了Debian Policy Manual v4.5.0.2中的以下章节后:
- [1]5。控制文件及其字段
- [2] 7。声明程序包之间的关系
[2]确实谈到了括号语法(例如"hurd-dev[hurd-i386]"(,该语法指定了应该安装包的体系结构我还没有找到提到这个冒号语法的文本
所以我之前的问题可以进一步分为:
- 我正确吗;任何";部分规定了体系结构
- 如果";任何";指定了体系结构,冒号语法(例如"python3:any"(和括号语法(例如,"hurd-dev[hurd-i386]"(之间有什么区别
- 如果我们已经有了括号语法,为什么还需要冒号语法
- 最重要的是,有人能给我指一下这个冒号语法的相关文档吗
先用正确的术语,这样它们就能找到正确的文档。首先,Build Depends这样的字段被称为关系字段。在那里我可以找到
关系可能仅限于某一组体系结构。在每个单独的包装名称和可选版本规范。括号中包含一个非空Debian体系结构名称列表,格式如体系结构规范字符串,用空格分隔。
因此,架构规范字符串就是我们要寻找的。由此我们可以推断,这些是由dpkg架构定义的。从手册页来看,体系结构名称要么是
Debian体系结构字符串,它指定FTP档案中的二进制树。示例:i386、sparc、hurd-i386。
或
体系结构通配符是一个特殊的体系结构字符串,该字符串将匹配作为组成部分的任何实际体系结构的。一般形式是-。示例:linux any,any-i386,hurd any。
这里有额外的解释:
仅指定any表示源程序包不依赖在任何特定的体系结构上,并且应该在任何一个体系结构上编译良好。这个生成的二进制包将特定于当前构建体系结构是。
,BTW与所有哪个相反
表示源程序包将只生成独立于体系结构的包