
Debian::Apt::PM - locate Perl Modules in Debian repositories

Needs following extra Debian packages libdpkg-perl and libapt-pkg-perl.

command line:
apt-pm update
apt-pm find Moose
dpkg-scanpmpackages /path/to/debian/repository
# print out all dependencies of an unpacked distribution that are packaged for Debian
perl -MDebian::Apt::PM -MModule::Depends -le \
'$apm=Debian::Apt::PM->new();$md=Module::Depends->new->dist_dir(".")->find_modules; %r=(%{$md->requires},%{$md->build_requires}); while (($m, $v) = each %r) { $f=$apm->find($m, $v); print $f->{"min"}->{"package"} if $f->{"min"} }' \
| sort \
| uniq \
| xargs echo apt-get install
# print out all dependencies of an unpacked distribution that are not packaged for Debian
perl -MDebian::Apt::PM -MModule::Depends -le \
'$apm=Debian::Apt::PM->new();$md=Module::Depends->new->dist_dir(".")->find_modules; %r=(%{$md->requires},%{$md->build_requires}); while (($m, $v) = each %r) { $f=$apm->find($m, $v); print $m, " ", $v if not $f->{"min"} }'
Module:
my $aptpm = Debian::Apt::PM->new(sources => [ 'PerlPackages.bz2' ])
$aptpm->update;
my %moose_locations = $aptpm->find('Moose');

Add sources for Debian releases and components. Here is the complete list that can be reduced just to the wanted ones:
cat >> /etc/apt/sources.list << __END__
# for apt-pm
deb http://alioth.debian.org/~jozef-guest/pmindex/ lenny main contrib non-free
deb http://alioth.debian.org/~jozef-guest/pmindex/ squeeze main contrib non-free
deb http://alioth.debian.org/~jozef-guest/pmindex/ wheezy main contrib non-free
deb http://alioth.debian.org/~jozef-guest/pmindex/ sid main contrib non-free
__END__
Fetch the indexes:
apt-pm update
Look for the CPAN modules:
apt-pm find Moose
# libmoose-perl_0.17-1_all: Moose 0.17
# libmoose-perl_0.94-1_i386: Moose 0.94
# libmoose-perl_0.97-1_i386: Moose 0.97
# libmoose-perl_0.54-1_all: Moose 0.54
Look for the non-CPAN modules:
apt-pm find Purple
# libpurple0_2.4.3-4lenny5_i386: Purple 0.01
apt-pm find Dpkg::Version
# dpkg-dev_1.14.28_all: Dpkg::Version 0

Object constructor.
isa => 'ArrayRef' of files that will be read to construct the lookup. By default it is filled with files from /var/cache/apt/apt-pm/.
Is the folder where indexes cache files will be stored. Default is /var/cache/apt/apt-pm/deb/.
deb|deb-src
Path to 02packages.dependencies.txt(.gz)? file.
Returns hash with Perl versions as key and hash value having Debian version and package name. Example:
{
'0.94' => {
'version' => '0.94-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
'0.97' => {
'version' => '0.97-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
'0.54' => {
'version' => '0.54-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
};
If $min_version is set, returns min and max keys. max has always the highest version:
'max' => {
'version' => '0.97-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
min is changing depending on $min_version. Examples:
$min_version = '0.01';
'min' => {
'version' => '0.54-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
$min_version = '0.93';
'min' => {
'version' => '0.94-1',
'package' => 'libmoose-perl'
'arch' => 'i386'
},
$min_version = '1.00';
'min' => undef,
Scans the /etc/apt/sources.list and /etc/apt/sources.list.d/*.list repositories for PerlPackages.bz2 and prepares them to be used for find. All PerlPackages.bz2 are stored to /var/cache/apt/apt-pm/.
It also fetches http://pkg-perl.alioth.debian.org/cpan2deb/CPAN/02packages.dependencies.txt.gz to be used by apt-cpan.
Remove all files from cache folder.
Returns two array references one with Debian packages, the other with CPAN packages that needs to be installed on current system for the given list of @modules.
Option $force_all (true/false) choose to include all dependencies not just the ones that needs to be installed.
Return all Perl modules and Debian packages $module has as dependency.

http://pkg-perl.alioth.debian.org/cpan2deb/

jozef@kutej.net, <jkutej at cpan.org>

Please report any bugs or feature requests to bug-debian-apt-pm at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Debian-Apt-PM. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

You can find documentation for this module with the perldoc command.
perldoc Debian::Apt::PM
You can also look for information at:


Copyright 2010 jkutej@cpan.org.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.