¿Cómo ordenar topológicamente los paquetes rpm instalados?

¿Cómo ordenar topológicamente los paquetes rpm instalados?

Quiero ordenar topológicamente, según las dependencias, todos los paquetes rpm instalados en mi Fedora con los paquetes más necesarios en la parte superior (por ejemplo, glibc) y los paquetes menos necesarios en la parte inferior. Puedo enumerar todos los paquetes instalados con rpm -qa, pero no parecen estar ordenados topológicamente.

Mi objetivo es revisar los paquetes instalados, encontrar los que ya no necesito y desinstalarlos.

Respuesta1

hombre 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

Instalación:

rpm-devel fedora 19 tiene este paquete

Aquí está rpm-devel para fedora 30

Utilice su administrador de paquetes:

dnf install rpm-devel

Para instalar wgeten CentOS, ingrese lo siguiente en una ventana de terminal:

sudo yum install wget

Para instalar wgeten Fedora, ingrese lo siguiente:

sudo dnf install wget

Ahora puede utilizar el comando wget para descargar el archivo .rpm que desee. Introduzca la siguiente:

wget http://some_website/sample_file.rpm

El sistema debería acceder al sitio web y descargar el archivo a su directorio de trabajo actual.

Instale el archivo RPM usando el comando RPM

Para instalar un paquete .rpm en FedoraLinux CentOS, ingrese lo siguiente:

sudo rpm –i sample_file.rpm

El modificador –i le indica al administrador de paquetes que desea instalar el archivo.

Puede encontrar más información sobre el instalador de RPM endocumentación de RPM.

Instalar el archivo RPM con Yum

Alternativamente, puede usar el yumadministrador de paquetes para instalar .rpmarchivos.

Introduzca la siguiente:

sudo yum localinstall sample_file.rpm

La localinstallopción indica yum para buscar en su directorio de trabajo actual el archivo de instalación.


https://superuser.com/questions/483307/cómo-sé-rpms-dependientes-de-aa-package

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

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

EDITAR:

No puedo ponerme rpmgrapha trabajar, probé tres versiones diferentes de PACKAGE_FILEla sintaxis de la lista de paquetes, pero solo da errores. Si sabe cómo usar este programa, proporcione una respuesta o edite la mía. Probado en Fedora 28.Cómo enumerar todos los paquetes instalados con la extensión .rpm. Fedora, Centos, RedHat

# rpmgraph INSTALLED_PACKAGES 
(null): read manifest failed:

Respuesta2

Después de buscar un poco, parece que la rpmdepherramienta del rpmorphanpaquete es la más cercana a lo que quiero. Para ver los paquetes instalados más requeridos, se puede ejecutar con --dependingla opción:

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

Respuesta3

Una vez escribí un guión para esto, pero casi nunca lo usé.

Yo manejaría las mudanzas con cuidado. Una vez intenté eliminar un paquete llamado "SimplyHTML" porque aparecía como un "nodo hoja", y cuando fui a eliminarlo, descubrí que "freemind" (una herramienta de mapas mentales que uso mucho) lo necesitaba y lo obtuve. eliminado también. ¡Muy raro!

De todos modos, FWIW aquí está el script (que en mi sistema se llama "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};
}

información relacionada