python - Installing dependencies of debian/control file -
i in process of porting ruby file used in our build system python. file looks depends
lines in debian/control
file in our repository, checks every dependency, , apt-get install
s isn't installed. trying reproduce functionality.
as part of porting python, looked @ deb_pkg_tools
module. pip install
ed , created simple script, install-dep2.py
.
#!/usr/bin/python import deb_pkg_tools controldict = deb_pkg_tools.control.load_control_file('debian/control')
however, when run script, following error:
$ 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'
the debian/control
file exists:
$ ls -l debian/control -rw-rw-r-- 1 stephen stephen 2532 jul 13 14:28 debian/control
how can process debian/control
file? don't need use deb_pkg_tools
if there better way.
the problem have not python thinks debian/control
not exist, rather seems deb_pkg_tools.control
not exist.
i use python-debian
package debian parse control file if you. here code parse control file dependencies. should work packages multiple binary packages.
import deb822 paragraph in deb822.deb822.iter_paragraphs(open('debian/control')): item in paragraph.items(): if item[0] == 'depends': print item[1]
each item in above example tuple pairs "key" "value", item[0]
gives "key" , item[1]
gives "value".
obviously above sample prints out dependencies in control file, dependencies aren't in format suitable directly plug apt-get install
. also, parsing control file, got stuff ${python:depends}
in addition actual package names, have consider. here example of output got above example:
joseph@crunchbang:~$ python test.py bittornado, ${python:depends}, python-psutil, python-qt4, python-qt4reactor, python-twisted, xdg-utils, ${misc:depends}, ${shlibs:depends}
i found this bug report , python-debian source code quite useful resources when answering question.
Comments
Post a Comment