我正在尝试做一些包操作(a la dpkg),虽然我可以popen
或者subprocess.call
如果可能的话我宁愿用python方式做事。
不幸的是,我一直无法找到一个 python 模块来解决这个问题。
我看过参考,python-deb
但它似乎已经不复存在了。python-apt
似乎是一个潜在的解决方案,但 AFAICT 它无法处理单个.deb
文件。
有人知道一个好的 dpkg python 解决方案吗?
实际上,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']
遗憾的是,它没有我想的那么完整,但它有很多功能。
(更多信息)
Python-apt 可能是执行此操作的规范方式,但如果您需要在非 debian 平台上工作的能力,我已经发布了它的某些部分的本机重新实现的早期版本:
我对 debs 的 python 模块不太熟悉,但我想指出在 *ix 上调用子进程并不是坏事,它在 Windows 上。Windows 几乎似乎打算将调用事物作为子进程并解析输出,但 *ix 通常使它非常可行。
显然 Gdebi 是基于 python 的。如果安装了 gdebi,您可以通过 GDebi 模块访问它的功能。
我似乎找不到任何文档,所以我不确定它是否是一个公共 API,但它可能会奏效。