簡體   English   中英

使用YUM python模塊版本3.2.29時的“過時”列表為空

[英]Empty 'obsoletes' list when using YUM python module version 3.2.29

我需要檢索Python中YUM事務將廢棄的軟件包列表。 在具有Python 2.7.5和yum模塊3.4.3的Centos 7上,它可以直接工作:

>>> 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的選項,因此,對於適當填充過時列表的任何想法,我將不勝感激。

“ >>> txl [0] .obsoletes”的行為似乎取決於是否實際安裝了要廢棄的軟件包(嘗試使用包含過時的類似軟件包來重現您的示例:)

嚴格來說,此行為是您要求的“將被淘汰的軟件包列表”的內容,因為未安裝的軟件包不會被淘汰。

您可以嘗試提取可能的過時:直接從軟件包中使用rpm-python API。 這等效於“ rpm -qp --obsoletes foo * .rpm”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM