Python apt API 可以检测到包是否被“保留”吗?

Python apt API 可以检测到包是否被“保留”吗?

我使用了指定的方法这里对特定软件包(“jenkins”)进行“保留”,以防止系统对其进行升级:

# dpkg --get-selections | grep jenkins
jenkins                                         hold

有没有办法使用 apt 的 Python API 来检测这种特殊状态?当我深入研究PackageRecordVersion对象时,我没有看到任何关于包被“持有”的提及。

我真的很讨厌产生一个dpkg进程来做这件事...有希望吗?

答案1

好的,我找到了它——通过查看内部/usr/bin/unattended-upgradeapt.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_downgrademarked_installmarked_heldC++ 接口。您可以使用它吗?

相关内容