Dpkg Python模块是什么?

10
我正在尝试进行一些包操作(类似于dpkg),虽然我可以使用popensubprocess.call,但如果可能的话,我更愿意按照Python的方式来做。
不幸的是,我找不到一个可行的Python模块来完成这个任务。
我看到了关于python-deb的参考资料,但它似乎已经停止维护。 python-apt似乎是一个潜在的解决方案,但据我所知,它无法处理单个.deb文件。
有人知道一个好的dpkg Python解决方案吗?
4个回答

7

实际上,python-apt可以直接处理这些文件。以下是一个示例:

from apt.debfile import DebPackage
from pprint import pprint
pkg = DebPackage('/tmp/wajig_2.7_all.deb')
pprint(pkg.filelist)

输出:

$ ./script.py
['./',
 'etc/',
 'etc/bash_completion.d/',
 ...
 'usr/bin/',
 'usr/bin/wajig']

很遗憾,它不够完整,但是它有许多功能。

(更多信息)


我注意到在深入研究gdebi后,它使用了你所提到的功能,然后只是执行一个popen来运行dpkg。谢谢。 - Catskul
python-apt 相关文档的直接链接:https://apt-team.pages.debian.net/python-apt/library/index.html - amirouche

2

Python-apt可能是实现此功能的标准方式,但如果您需要在非Debian平台上工作,则可以使用其某些部分的本地重新实现。我已经发布了早期版本:

https://github.com/memory/python-dpkg


0

我对Python模块的了解很少,但我想指出,在*ix上调用子进程并解析输出并不像在Windows上那样糟糕。Windows似乎几乎是为了打破调用子进程和解析输出而设计的,但*ix通常使其变得相当可行。


0

显然,Gdebi是基于Python的。如果已安装gdebi,则可以通过GDebi模块访问其功能。

我似乎找不到任何文档,所以我不确定它是否旨在成为公共API,但它可能会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接