2011-04-26 100 views
1
import sys 
from apt.debfile import DebPackage 
deb = DebPackage(sys.argv[1]) 
print(deb.required_changes) 

我希望上面的代碼顯示,都應該滿足給定的deb文件的依賴包,而是我得到的空lists一個tuple我沒能得到「required_changes」與Python-容易

([], [], []) 

我一定要檢查一個我知道肯定已經卸載了依賴關係的包。

回答

2

我不得不打電話deb.check()它挑起成返回值dep.required_changes等也必須通過它的apt.cache.Cache其他實例也抱怨說:

import sys 
from apt.cache import Cache 
from apt.debfile import DebPackage 

cache = Cache() 
deb = DebPackage(sys.argv[1], cache) 
deb.check() 
print(deb.missing_deps) 
print(deb.required_changes) 

輸出:

% python apt_info.py ./libzeroc-ice33_3.3.1-12_amd64.deb 
['libiceutil33'] 
(['libiceutil33'], [], []) 
+0

如何做你知道了嗎?你看過源代碼嗎?這並不明顯。 – Tshepang 2011-04-27 07:01:07

+0

你確定'apt.cache'部分嗎?我使用'0.7.100'(Debian 6中的版本)和上面的代碼沒有它。 – Tshepang 2011-04-27 07:03:03

+1

'apt.cache'部分可能只在Ubuntu上需要(我正在運行Lucid,'0.7.94')。我簡要地看了一下源代碼,注意到'deb.check()'調用了'deb._satisfy_depends()',然後在程序包中標記了要安裝的緩衝區。這確保'deb.required_changes'返回結果。 – samplebias 2011-04-27 11:43:15