什么是依赖关系的传播?

问题描述 投票:0回答:1

https://nixos.org/manual/nixpkgs/stable/#ssec-stdenv-dependency

当某些其他可传递(非直接)下游依赖项也需要它作为直接依赖项时,就称该依赖项被传播

“下游”和“上游”依赖是什么意思?

什么是“非直接”和“直接”依赖?

依赖关系的概念是传播包的依赖关系之间的依赖关系吗?

你能用例子或图表解释一下吗?

dependencies nix nixos package-management
1个回答
0
投票

如果包 A 是包 B 的“直接依赖项”,这意味着我们在构建 B 时以非常直接/明确的方式需要 A。具体来说,在构建 B 时,我们可能需要让 A 位于 PATH 上,或者位于 PKG_CONFIG_PATH 中,或者我们可能需要运行一些由 A 定义的“设置挂钩”(shell 脚本),或者我们可能需要在构建 B 时通过其他方式访问 A。

“非立即”依赖项不是立即依赖项,但仍然是一种不太直接的依赖项:如果您在构建 B 时运行

env
,您将不会直接在环境中看到它。也许我们使用某个程序构建 B,而该程序使用一些库,因此这些库可以说是 B 的“非直接”依赖项。

顺便说一句,“立即”一词的使用并不是计算机科学中的任何标准,您引用的文档因此确实应该在您引用的文档中更好地定义它。

当作者使用“下游依赖”这个短语时,他们误用了“依赖”这个词,所以我不会尝试定义这个短语。他们还滥用了“非立即”一词。相反,我会重写那句话。这是应该说的:

如果包 A 是包 B 的依赖项(即 B 需要 A),则如果所有依赖于 B 的包也需要 A 作为其直接依赖项之一,则 A 被称为“传播”依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.