Re: Interfaces for dpkg/deb packages
On Thu, Sep 15, 2005 at 02:40:06PM -0700, Christopher Crammond wrote:
> I was curious as to where I might be able to find out what
> non-command-line interfaces into .deb packages are available. For
> instance, is there a C interface that could pull out information such as
> Name, Version, Release, etc... ?
[..]
libapt_inst (from the apt package) provides a interface in C++ and
python-apt (module apt_inst) provides a interface in python.
Attached is a example using python-apt.
Cheers,
Michael
--
Linux is not The Answer. Yes is the answer. Linux is The Question. - Neo
#!/usr/bin/env python
# some example for apt_inst
import apt_pkg
import apt_inst
import sys
def Callback(What,Name,Link,Mode,UID,GID,Size,MTime,Major,Minor):
""" callback for debExtract """
print "%s '%s','%s',%u,%u,%u,%u,%u,%u,%u"\
% (What,Name,Link,Mode,UID,GID,Size, MTime, Major, Minor);
if __name__ == "__main__":
if len(sys.argv) < 2:
print "need filename argumnet"
sys.exit(1)
file = sys.argv[1]
print "Working on: %s" % file
print "Displaying data.tar.gz:"
apt_inst.debExtract(open(file), Callback, "data.tar.gz")
print "Now extracting the control file:"
control = apt_inst.debExtractControl(open(file))
sections = apt_pkg.ParseSection(control)
print sections
print "Maintainer is: "
print sections["Maintainer"]
print
print "DependsOn: "
depends = sections["Depends"]
print apt_pkg.ParseDepends(depends)
Reply to: