9

我正在尝试做一些包操作(a la dpkg),虽然我可以popen或者subprocess.call如果可能的话我宁愿用python方式做事。

不幸的是,我一直无法找到一个 python 模块来解决这个问题。

我看过参考,python-deb但它似乎已经不复存在了。python-apt似乎是一个潜在的解决方案,但 AFAICT 它无法处理单个.deb文件。

有人知道一个好的 dpkg python 解决方案吗?

4

4 回答 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']

遗憾的是,它没有我想的那么完整,但它有很多功能。

更多信息

于 2012-07-30T23:20:17.553 回答
2

Python-apt 可能是执行此操作的规范方式,但如果您需要在非 debian 平台上工作的能力,我已经发布了它的某些部分的本机重新实现的早期版本:

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

于 2017-03-07T02:09:57.710 回答
0

我对 debs 的 python 模块不太熟悉,但我想指出在 *ix 上调用子进程并不是坏事,它在 Windows 上。Windows 几乎似乎打算将调用事物作为子进程并解析输出,但 *ix 通常使它非常可行。

于 2012-07-30T18:46:54.950 回答
0

显然 Gdebi 是基于 python 的。如果安装了 gdebi,您可以通过 GDebi 模块访问它的功能。

我似乎找不到任何文档,所以我不确定它是否是一个公共 API,但它可能会奏效。

于 2012-07-30T19:38:20.323 回答