Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Walking Linux packages

by tomazos (Deacon)
on Dec 09, 2009 at 14:32 UTC ( [id://811928]=perlquestion: print w/replies, xml ) Need Help??

tomazos has asked for the wisdom of the Perl Monks concerning the following question:

I'd like to setup a Perl script to parse the package names, versions (and perhaps descriptions and other metadata) that are installed by dpkg (the standard debian package management system) on a Linux system. I can see this data is stored in /var/lib/dpkg, are there any Perl modules that could help in parsing these files? Or is there some other wrapper to a higher level API for this task?

Also, if anyone knows, is there some way to hook up my Perl script to be executed after whenever the package list changes?

(Essentially we want to keep an up-to-date list of the packages installed on a Linux host in a database.)

Any ideas appreciated.

Thanks, Andrew.

Replies are listed 'Best First'.
Re: Walking Linux packages
by moritz (Cardinal) on Dec 09, 2009 at 14:42 UTC
    On a Debian system that's not totally screwed up, parsing the output of dpkg -i is much easier than looking into /var/lib/dpkg/. There are environment variables which change the output format a bit, which you can exploit for your purposes. The man page knows more about that.
    Or is there some other wrapper to a higher level API for this task?

    I recommend looking at CPAN for that sort of question

    Also, if anyone knows, is there some way to hook up my Perl script to be executed after whenever the package list changes?

    There are hooks or triggers that are executed when packages are installed and removed (I think man-db uses that for its purposes). I'm not sure about the details, but looking into man-db or into the dpkg documentation should help.

    If packages are installed via aptitude, you can also parse its log files.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://811928]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (1)
As of 2024-04-19 00:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found