ATOM 在 Gentoo Portage 中到底意味着什么?

ATOM 在 Gentoo Portage 中到底意味着什么?

这个问题与名为“atom”的文本编辑器无关。

Portage 手册页使用术语“ATOM”,但我找不到该术语的定义并且感到困惑。我知道atom描述了一个包,但我无法判断以下哪些项是atom:

dev-lang/python
dev-lang/python-3.4.5
=dev-lang/python-3.4.5
>=dev-lang/python-3.4.5
dev-lang/*

答案1

根据ebuild(5) 手册页,在“依赖关系”下:

A依赖原子只是 portage 在计算包之间的关系时使用的依赖关系。

然后它继续描述不同类型的原子:

  1. Atom 基础:裸类别/包名称(例如 dev-lang/python)
  2. Atom 版本:如上所述,但有一个版本(例如 dev-lang/python-3.4.5)
  3. 原子前缀运算符:带有布尔运算符的版本化原子(例如>=dev-lang/python-3.4.5)
  4. 扩展原子前缀/后缀:通配符和阻止符(例如 dev-lang/python-3*)
  5. Atom slot/sub-slots:可以共存的软件包版本(例如 dev-lang/python-3.4.5:3.4/3.4m,可以与 :2.7 和 :3.6 同时安装) )
  6. Atom USE 语句:处理 USE 标志

这是 ebuilds 内部使用的内容,对于日常使用来说并不是真正必要的,因为只有包维护者会定期看到这些(不过,您会看到插槽。)

然而,Portage 对原子的使用略有不同。根据它的手册页,它支持以下原子类型:

  1. 基础:裸类别/包(例如 dev-lang/python)
  2. 版本:类别/包版本(例如 dev-lang/python-3.4.5),带或不带比较运算符
  3. 插槽:类别/包版本:插槽(例如 dev-lang/python-3.4.5:3.4)
  4. 存储库:类别/包版本::存储库(例如 dev-lang/python::gentoo)
  5. 通配符:任意替换(例如 dev-lang/* 或 =*/*-9999)

它们并不是真正在依赖意义上使用,但是当它们被发送到 ebuild 系统时,它们大致遵循相同的规则。您也可以将它们组合起来,因此“<*/python*-9999:3.6::test”将是有效的原子规范。不过,我通常坚持使用基础、版本化和存储库原子,因为插槽通常并不重要,并且如果您不小心,通配符可能会匹配意想不到的东西。

相关内容