From 92f68b4144c8bb044f6e70a350a69bfa17180cc7 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 11 Jul 2008 20:37:00 +0200 Subject: Renamed apt-perl to apt-why --- bin/apt-perl | 149 ----------------------------------------------------------- bin/apt-why | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 149 deletions(-) delete mode 100755 bin/apt-perl create mode 100755 bin/apt-why (limited to 'bin') diff --git a/bin/apt-perl b/bin/apt-perl deleted file mode 100755 index 60ca0f7..0000000 --- a/bin/apt-perl +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use AptPkg::Cache; -use Switch; - -my $cache = AptPkg::Cache->new; -my $query = shift or die("No action given"); -my $packagename = shift or die("No packagename given"); -my $package = $cache->{$packagename}; - -unless($package) { - print STDERR "E: Package not found: $packagename\n"; - exit(100); -} - -sub revdeps { - my $rdepsref = shift; - my $depsref; - my $parent; - - foreach(@$rdepsref) { - undef($parent); - $parent->{name} = $_->{ParentPkg}{Name}; - $parent->{ver} = $_->{ParentVer}{VerStr}; - $parent->{current_state} = $cache->{$_->{ParentPkg}{Name}}->{CurrentState}; - $parent->{selected_state} = $cache->{$_->{ParentPkg}{Name}}->{SelectedState}; - $parent->{deptype} = $_->{DepType}; - $parent->{targetname} = $_->{TargetPkg}{Name}; - if ($_->{TargetVer}) { - $parent->{depsign} = $_; - $parent->{depver} = $_; - } - $depsref->{$parent->{name}} = $parent; - } - return($depsref); -} - -sub why { - my $revdeps = revdeps(shift); - my $why; - foreach(keys(%$revdeps)) { - if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} !~ /^(Conflicts|Replaces|Obsoletes)$/) { - $why->{$_} = $revdeps->{$_}; - } - } - return($why); -} - -sub why_not { - my $revdeps = revdeps(shift); - my $why_not; - foreach(keys(%$revdeps)) { - if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} =~ /^(Conflicts|Replaces|Obsoletes)$/) { - $why_not->{$_} = $revdeps->{$_}; - } - } - return($why_not); -} - -sub short_states { - my $pkg = shift; - my $state = ''; - switch($pkg->{selected_state}) { - case('Unkwnon') { - $state .= ' '; - } case('Install') { - $state .= 'i'; - } case('Hold') { - $state .= 'h'; - } case('DeInstall') { - $state .= 'r'; - } case('Purge') { - $state .= 'p'; - } - } - switch($pkg->{current_state}) { - case('Installed') { - $state .= 'i'; - } case('UnPacked') { - $state .= 'u'; - } case('HalfConfigured') { - $state .= 'f'; - } case('HalfInstalled') { - $state .= 'h'; - } case('ConfigFiles') { - $state .= 'c'; - } case('NotInstalled') { - $state .= ' '; - } - } - return($state); -} - - -sub print_deps { - my $deps = shift; - foreach(keys(%$deps)) { - printf "%-2s %-30s %-15s %s\n", short_states($deps->{$_}), $deps->{$_}->{name}, $deps->{$_}->{deptype}, $deps->{$_}->{targetname}; - } -} - -if ($query eq 'why') { - print_deps(why($package->{RevDependsList})); -} elsif ($query eq 'why-not') { - print_deps(why_not($package->{RevDependsList})); -} elsif ($query eq 'rdeps') { - print_deps(revdeps($package->{RevDependsList})); -} - -__END__ - -=head1 NAME - -apt-perl - reverse dependency displayer using AptPkg::Cache - -=head1 SYNOPSIS - -B I I - -=head1 DESCRIPTION - -B displays various informations based on a Is reverse -dependencies - -The output is prefixed by two charactes, the former representing the desired -package state, the latter the current state. - -The states are Install, Iold, Iemove (deinstall), I

urge, -Inpacked, halI configured, Ialf installed, Ionfigfiles installed. -An empty field means not installed. - -I may be one of: - -=over - -=item why - -Show dependencies that justify the installation of a package - -=item why-not - -Show dependencies that prohibit the installation of a package - -=item rdeps - -Show all reverse dependencies of a package - -=back diff --git a/bin/apt-why b/bin/apt-why new file mode 100755 index 0000000..b9df057 --- /dev/null +++ b/bin/apt-why @@ -0,0 +1,147 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use AptPkg::Cache; +use Switch; + +my $cache = AptPkg::Cache->new; +my $packagename = pop or dir("No packagename given"); +my $query = shift || ''; +my $package = $cache->{$packagename}; + +unless($package) { + print STDERR "E: Package not found: $packagename\n"; + exit(100); +} + +sub revdeps { + my $rdepsref = shift; + my $depsref; + my $parent; + + foreach(@$rdepsref) { + undef($parent); + $parent->{name} = $_->{ParentPkg}{Name}; + $parent->{ver} = $_->{ParentVer}{VerStr}; + $parent->{current_state} = $cache->{$_->{ParentPkg}{Name}}->{CurrentState}; + $parent->{selected_state} = $cache->{$_->{ParentPkg}{Name}}->{SelectedState}; + $parent->{deptype} = $_->{DepType}; + $parent->{targetname} = $_->{TargetPkg}{Name}; + if ($_->{TargetVer}) { + $parent->{depsign} = $_; + $parent->{depver} = $_; + } + $depsref->{$parent->{name}} = $parent; + } + return($depsref); +} + +sub why { + my $revdeps = revdeps(shift); + my $why; + foreach(keys(%$revdeps)) { + if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} !~ /^(Conflicts|Replaces|Obsoletes)$/) { + $why->{$_} = $revdeps->{$_}; + } + } + return($why); +} + +sub why_not { + my $revdeps = revdeps(shift); + my $why_not; + foreach(keys(%$revdeps)) { + if ($revdeps->{$_}->{current_state} eq 'Installed' and $revdeps->{$_}->{deptype} =~ /^(Conflicts|Replaces|Obsoletes)$/) { + $why_not->{$_} = $revdeps->{$_}; + } + } + return($why_not); +} + +sub short_states { + my $pkg = shift; + my $state = ''; + switch($pkg->{selected_state}) { + case('Unkwnon') { + $state .= ' '; + } case('Install') { + $state .= 'i'; + } case('Hold') { + $state .= 'h'; + } case('DeInstall') { + $state .= 'r'; + } case('Purge') { + $state .= 'p'; + } + } + switch($pkg->{current_state}) { + case('Installed') { + $state .= 'i'; + } case('UnPacked') { + $state .= 'u'; + } case('HalfConfigured') { + $state .= 'f'; + } case('HalfInstalled') { + $state .= 'h'; + } case('ConfigFiles') { + $state .= 'c'; + } case('NotInstalled') { + $state .= ' '; + } + } + return($state); +} + + +sub print_deps { + my $deps = shift; + foreach(keys(%$deps)) { + printf "%-2s %-30s %-15s %s\n", short_states($deps->{$_}), $deps->{$_}->{name}, $deps->{$_}->{deptype}, $deps->{$_}->{targetname}; + } +} + +if ($query eq 'not') { + print_deps(why_not($package->{RevDependsList})); +} else { + print_deps(why($package->{RevDependsList})); +} + +__END__ + +=head1 NAME + +apt-perl - reverse dependency displayer using AptPkg::Cache + +=head1 SYNOPSIS + +B I I + +=head1 DESCRIPTION + +B displays various informations based on a Is reverse +dependencies + +The output is prefixed by two charactes, the former representing the desired +package state, the latter the current state. + +The states are Install, Iold, Iemove (deinstall), I

urge, +Inpacked, halI configured, Ialf installed, Ionfigfiles installed. +An empty field means not installed. + +I may be one of: + +=over + +=item why + +Show dependencies that justify the installation of a package + +=item why-not + +Show dependencies that prohibit the installation of a package + +=item rdeps + +Show all reverse dependencies of a package + +=back -- cgit v1.2.3