Python 安装debian/control文件的依赖项
我正在将构建系统中使用的Ruby文件移植到Python。该文件在存储库中的Python 安装debian/control文件的依赖项,python,linux,debian,Python,Linux,Debian,我正在将构建系统中使用的Ruby文件移植到Python。该文件在存储库中的debian/control文件中查找dependens行,检查每个依赖项,并apt get installs所有未安装的内容。我正在尝试复制这个功能 作为将其移植到Python的一部分,我查看了deb_pkg_tools模块。我pip-install编辑了它并创建了一个简单的脚本,install-dep2.py #!/usr/bin/python import deb_pkg_tools controlDict = d
debian/control
文件中查找dependens
行,检查每个依赖项,并apt get install
s所有未安装的内容。我正在尝试复制这个功能
作为将其移植到Python的一部分,我查看了deb_pkg_tools
模块。我pip-install
编辑了它并创建了一个简单的脚本,install-dep2.py
#!/usr/bin/python
import deb_pkg_tools
controlDict = deb_pkg_tools.control.load_control_file('debian/control')
但是,运行此脚本时,出现以下错误:
$ build/bin/install-dep2.py
Traceback (most recent call last):
File "build/bin/install-dep2.py", line 4, in <module>
controlDict = deb_pkg_tools.control.load_control_file('debian/control')
AttributeError: 'module' object has no attribute 'control'
如何处理此
debian/control
文件?如果有更好的方法,我不需要使用deb\u pkg\u工具。问题不在于Python认为debian/control
不存在,而在于它看起来像deb\u pkg\u工具。control
不存在
如果我是您,我将使用debian提供的python debian
包来解析控制文件。下面是解析控制文件以获取依赖项的代码。它甚至可以用于包含多个二进制包的包
import deb822
for paragraph in deb822.Deb822.iter_paragraphs(open('debian/control')):
for item in paragraph.items():
if item[0] == 'Depends':
print item[1]
上面示例中的每个项都是一个元组,它将“键”与“值”配对,因此item[0]
为我们提供“键”,而item[1]
为我们提供“值”
显然,上面的示例只是打印出控制文件中的依赖项,因此依赖项的格式不适合直接插入apt get install
。另外,通过解析控制文件,除了实际的包名之外,我还得到了诸如“代码> ${Python:Actudio} /代码>之类的东西,所以这是你必须考虑的事情。以下是我从上述示例中获得的输出示例:
joseph@crunchbang:~$ python test.py
bittornado,
${python:Depends},
python-psutil,
python-qt4,
python-qt4reactor,
python-twisted,
xdg-utils,
${misc:Depends},
${shlibs:Depends}
在回答您的问题时,我发现和是非常有用的资源。您可能需要查看mk build deps
(来自devscripts
包),这是一个已经实现了您想要实现的功能的标准脚本
$ mk-build-deps -i -s sudo
python debian包的问题在于似乎没有任何文档(除了非常不完整的docstring)。如果有人知道它在哪里,请在这里发表评论。
$ mk-build-deps -i -s sudo