使用YUM python模块版本3.2.29时清空'废弃'列表

时间:2015-01-29 07:48:36

标签: python rpm yum

我需要检索将在Python中被YUM事务废弃的包列表。在Centos 7上使用Python 2.7.5和yum模块3.4.3,它可以直接使用:

>>> import yum
>>> yb = yum.YumBase()
>>> txl = yb.installLocal('initial_patch-1-2.noarch.rpm')
Loaded plugins: fastestmirror
Examining initial_patch-1-2.noarch.rpm: initial_patch-1-2.noarch
Marking initial_patch-1-2.noarch.rpm to be installed
>>> txl
[<TransactionMember : initial_patch.noarch 0:1-2 - u (0x1906e60)>]
>>> txl[0]
<TransactionMember : initial_patch.noarch 0:1-2 - u (0x1906e60)>
>>> txl[0].obsoletes
[<RPMInstalledPackage : lzo-2.06-6.el7_0.2.x86_64 (0x1901bd0)>]
>>> txl[0].obsoletes[0].pkgtup
('lzo', 'x86_64', '0', '2.06', '6.el7_0.2')

所以在这里我们看到initial_patch-1-2.noarch.rpm废弃了lzo包(initial_patch用于测试目的)。然后我试图在目标机器上执行相同的代码,其中包含带有yum模块3.2.29的Python 2.6,我得到了这个代码:

>>> import yum
>>> yb = yum.YumBase()
>>> txl = yb.installLocal('initial_patch-1-2.noarch.rpm')
Examining initial_patch-1-2.noarch.rpm: initial_patch-1-2.noarch
Marking initial_patch-1-2.noarch.rpm to be installed
>>> txl
[<TransactionMember : initial_patch.noarch 0:1-2 - u (0x12f0ab8)>]
>>> txl[0].pkgtup
('initial_patch', 'noarch', '0', '1', '2')
>>> txl[0].obsoletes
[]

虽然安装的RPM相同且两台机器都有lzo软件包,但最后会看到空的过时列表。我没有在目标机器上升级Python或YUM的选项,所以我很感激任何填充过时列表的想法。

1 个答案:

答案 0 :(得分:0)

&#34;&gt;&gt;&gt;的行为TXL [0] .obsoletes&#34;似乎取决于是否 实际上安装了任何要废弃的包(尝试 使用包含Obsoletes的类似包重现您的示例:)

此行为严格按照您的要求提供&#34;将被淘汰的软件包列表&#34;因为未安装的软件包不会被废弃。

您可以尝试使用rpm-python API提取可能的Obsoletes: 直接来自包裹。这相当于&#34; rpm -qp --obsoletes foo * .rpm&#34;