我使用了指定的方法这里对特定软件包(“jenkins”)进行“保留”,以防止系统对其进行升级:
# dpkg --get-selections | grep jenkins
jenkins hold
有没有办法使用 apt 的 Python API 来检测这种特殊状态?当我深入研究Package
、Record
和Version
对象时,我没有看到任何关于包被“持有”的提及。
我真的很讨厌产生一个dpkg
进程来做这件事...有希望吗?
答案1
好的,我找到了它——通过查看内部/usr/bin/unattended-upgrade
。apt.Package
-object 实际上有一个名为的成员_pkg
,其类型为apt_pkg.Package
。它有一个selected_state
成员——一个数字常量(枚举)。这就是我现在在代码中使用的:
import apt
import apt_pkg
...
if package._pkg.selected_state == apt_pkg.SELSTATE_HOLD:
pkg['hold'] = True
答案2
恐怕 Python API 中似乎没有提供此功能。他们有、、marked_delete
等,但没有。但是,它确实存在于marked_downgrade
marked_install
marked_held
C++ 接口。您可以使用它吗?