Como classificar topologicamente os pacotes rpm instalados?

Como classificar topologicamente os pacotes rpm instalados?

Quero classificar topologicamente, de acordo com as dependências, todos os pacotes rpm instalados no meu Fedora, com os pacotes mais necessários no topo (por exemplo, glibc) e os pacotes menos necessários no fundo. Posso listar todos os pacotes instalados com rpm -qa, mas eles não parecem estar classificados topologicamente.

Meu objetivo é revisar os pacotes instalados, encontrar aqueles que não preciso mais e desinstalá-los.

Responder1

homem rpmgraph:

rpmgraph(8) - Linux man page
Name
rpmgraph - Display RPM Package Dependency Graph
Synopsis

rpmgraph PACKAGE_FILE ...
Description

rpmgraph uses PACKAGE_FILE arguments to generate a package dependency graph. Each
PACKAGE_FILE argument is read and added to an rpm transaction set. The elements 
of the transaction set

are partially ordered using a topological sort.

The partially ordered elements are then printed to standard output.


Nodes in the dependency graph are package names, and edges in the directed graph 
point to the parent of each node. The parent node is defined as the last 
predecessor of a package when partially ordered using the package dependencies as
a relation. That means that the parent of a given package is the package's last
prerequisite.

The output is in dot(1) directed graph format, and can be displayed or printed
using the dotty graph editor from the graphviz package. There are no rpmgraph
specific options, only common rpm options. See the rpmgraph usage message for    
what is currently implemented. 

  [1]: https://linux.die.net/man/8/rpmgraph

Instalação:

rpm-devel fedora 19 tem este pacote

Aqui está o rpm-devel para o fedora 30

Use seu gerenciador de pacotes:

dnf install rpm-devel

Para instalar wgetno CentOS, digite o seguinte em uma janela de terminal:

sudo yum install wget

Para instalar wgetem Fedora, digite o seguinte:

sudo dnf install wget

Agora, você pode usar o comando wget para baixar o arquivo .rpm desejado. Digite o seguinte:

wget http://some_website/sample_file.rpm

O sistema deve acessar o site e baixar o arquivo para seu diretório de trabalho atual.

Instale o arquivo RPM usando o comando RPM

Para instalar um pacote .rpm no FedoraLinux CentOS, digite o seguinte:

sudo rpm –i sample_file.rpm

A opção –i informa ao gerenciador de pacotes que você deseja instalar o arquivo.

Mais informações sobre o instalador RPM podem ser encontradas noDocumentação RPM.

Instale o arquivo RPM com Yum

Alternativamente, você pode usar o yumgerenciador de pacotes para instalar .rpmarquivos.

Digite o seguinte:

sudo yum localinstall sample_file.rpm

A localinstallopção instrui yum a procurar no diretório de trabalho atual o arquivo de instalação.


https://superuser.com/questions/483307/how-do-i-know-dependent-rpms-of-aa-package

https://phoenixnap.com/kb/how-to-install-rpm-file-centos-linux

https://linux.die.net/man/8/rpm

EDITAR:

Não consigo começar rpmgrapha trabalhar, tentei três versões diferentes da PACKAGE_FILEsintaxe da lista de pacotes, mas só dá erros. Se você sabe como usar este programa, forneça uma resposta ou edite a minha. Testado em Fedora 28.Como listar todos os pacotes instalados com a extensão .rpm. Fedora, Centos, RedHat

# rpmgraph INSTALLED_PACKAGES 
(null): read manifest failed:

Responder2

Depois de pesquisar um pouco, parece que a rpmdepferramenta do rpmorphanpacote é a que mais se aproxima do que desejo. Para ver os pacotes instalados mais necessários, pode ser executado com --dependinga opção:

rpmdep -all --depending | tac | less -S

Responder3

Certa vez, escrevi um roteiro para isso, mas quase nunca o usei.

Eu lidaria com as remoções com cuidado. Certa vez, tentei excluir um pacote chamado "SimplyHTML" porque ele surgiu como um "nó folha", e quando fui removê-lo, descobri que o "freemind" (uma ferramenta de mapeamento mental que uso muito) precisava dele e consegui excluído também. Muito estranho!

De qualquer forma, FWIW aqui está o script (que no meu sistema é chamado de "leaf-rpms"):

#!/usr/bin/perl
use strict;
use warnings;
use 5.10.0;
use Data::Dumper;

# a leaf RPM is one that has no deps and you can safely delete

# run it as is, delete any that you think are useless

my @installed = `rpm -qa --queryformat="%{NAME}\n"`;
chomp(@installed);
my %count;

@ARGV = ("dnf repograph |");

while (<>) {
    chomp;
    next if /^digraph packages/;
    next unless m({) .. m(});
    next if m({) or m(});

    s/"//g;
    $count{$_}++;
}
# print Dumper \@installed;
# print Dumper \@all;
# print Dumper \%count;
# print "----\n";

my %dup;
for my $k (sort @installed) {
    next if $dup{$k}++;
    print "$k\n" unless exists $count{$k};
}

informação relacionada