Cezary Krzyżanowski wrote:
Witam

Właśnie próbowałem sobie doinstalować whoisa i spotkał mnie bardzo niemiły komunikat...brak miejsca na dysku!!! No cóż.. tak to jest na 10 GB....

[...]

W ogóle, jak sprawnie kontrolwać, co w kompie jest, a co nie..co potrzeba, a co nie...jak Wy Panowie admini sobie z czymś takim radzicie ???


Zdroofka
[EMAIL PROTECTED]
P.S.
tak wiem - "nie instalujemy pierdołów" :P


Witam!

Kiedyś napisałem w perlu prosty skrypt do rysowania grafów (plik ps) zależności zainstalowanych pakietów. Jako parametry należy podać nazwy/nazwę zainstalowanych paczek. Jeżeli ich nie podamy, to dostaniemy drzewko zależności wszystkich zainstalowanych pakietów. Programik jest dość prymitywny i nie mam 100% pewności, czy dobrze działa.

Uwaga!!! Na systemie z zainstaloną dużą ilością pakietów program wywołany bez parametrów może zabrać więcej niż 256 MB pamięci. Powstały w ten sposób plik ps może nie dać się otworzyć.

W sumie bazując na tym skrypcie można dośc prosto napisać skrypt wyświetlający nazwy pakietów, od których nie zależą inne pakiety.

pozdrawiam

--
Robert Grabowski   7bulls.com sp. z o.o.

email: [EMAIL PROTECTED]
#!/usr/bin/perl

#
# Author: Robert Grabowski <[EMAIL PROTECTED]>
# Version: 1.0
#

use RPM::Database;

use strict;
use warnings;

my $rpm   = RPM::Database->new();
my $graph = GraphViz::RPM->new();

foreach my $name (@ARGV ? @ARGV : keys %{ $rpm }) {
        $graph->add_rpm($name);
}

$graph->as_ps('rpmgraph.ps');


package GraphViz::RPM;

use GraphViz;
use RPM::Database;
use base ('GraphViz');

sub new {
        my $class = shift;

        my $this = GraphViz->new(@_);
        $this->{'rpm'} = RPM::Database->new();
        $this->{'nodes'} = {};
        $this->{'edges'} = {};

        return bless($this, ref($class) || $class);
}

sub add_rpm {
        my $this = shift;
        my $name = shift;
        
        if (not exists $this->{'nodes'}->{$name}) {
                $this->{'nodes'}->{$name} = 1;

                $this->add_node($name, @_);
                foreach my $prov (@{ $this->{'rpm'}->{$name}->{'PROVIDES'} }) {
                        foreach my $to (map { $_->{'NAME'} } 
$this->{'rpm'}->find_what_requires($prov) ) {
                                if ($name ne $to and not exists 
$this->{'edges'}->{$name}->{$to}) {
                                        $this->{'edges'}->{$name}->{$to} = 1;

                                        $this->add_rpm($to);
                                        $this->add_edge($name => $to);
                                }
                        }
                }
        }
}

__________________________________________
najpierw przeczytaj, potem zapytaj:
http://pl.docs.pld-linux.org/ = podrecznik
http://pld-linux.org/ = faqs, howto, newsy

dostales tutaj odpowiedz na swoje pytanie?
podziel sie z innymi i dopisz do FAQ!
                http://pld-linux.org/FAQ/

Odpowiedź listem elektroniczym