假设我有一个要安装的软件包列表:
# yum install foo bar baz quux
但假设baz
是 的依赖项foo
,并且quux
是 的依赖项baz
。
所以,真的,我所有实际上需要运行的是:
# yum install foo bar
有没有办法在给定包列表的情况下确定最小集?
答案1
鉴于缺乏相互依赖性(这是有保证的),以下算法将产生最小集:
- 对于列表中的每个包,列出其所有要求 (
rpm -qR foo
) - 对于需求中的每个包,如果存在,请将其从列表中删除
上市foo
的要求收益率baz
(大概是其他),以及上市baz
的要求收益率quux
,因此两者都可以被删除。请注意,您必须在删除任何内容之前列出所有要求,否则您将面临保留传递性要求的风险(quux
在这种情况下,如果您在处理baz
后立即删除)。foo
然而您的包裹清单应该反映出你的依赖项,而不是导致安装依赖项的最小集。如果您需要quux
,您应该在命令中列出它yum install
,否则如果baz
在某个时候停止依赖它,您的安装将不再满足您的要求。