Wie sortiere ich installierte RPM-Pakete topologisch?

Wie sortiere ich installierte RPM-Pakete topologisch?

Ich möchte alle installierten RPM-Pakete auf meinem Fedora topologisch nach Abhängigkeiten sortieren, wobei die am meisten benötigten Pakete oben (z. B. glibc) und die am wenigsten benötigten Pakete unten stehen sollen. Ich kann alle installierten Pakete mit auflisten rpm -qa, aber sie scheinen nicht topologisch sortiert zu sein.

Mein Ziel ist es, die installierten Pakete zu überprüfen, diejenigen zu finden, die ich nicht mehr benötige, und sie zu deinstallieren.

Antwort1

Mann 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

Installation:

rpm-devel Fedora 19 hat dieses Paket

Hier ist rpm-devel für Fedora 30

Verwenden Sie Ihren Paketmanager:

dnf install rpm-devel

Zur Installation wgetin CentOSgeben Sie Folgendes in ein Terminalfenster ein:

sudo yum install wget

Zur Installation wgetin Fedorageben Sie Folgendes ein:

sudo dnf install wget

Nun können Sie mit dem Befehl wget die gewünschte .rpm-Datei herunterladen. Geben Sie Folgendes ein:

wget http://some_website/sample_file.rpm

Das System sollte die Website aufrufen und die Datei in Ihr aktuelles Arbeitsverzeichnis herunterladen.

Installieren Sie die RPM-Datei mit dem RPM-Befehl

Um ein .rpm-Paket unter Linux zu installieren Fedora, CentOSgeben Sie Folgendes ein:

sudo rpm –i sample_file.rpm

Der Schalter –i teilt dem Paketmanager mit, dass Sie die Datei installieren möchten.

Weitere Informationen zum RPM-Installer finden Sie imRPM-Dokumentation.

Installieren Sie die RPM-Datei mit Yum

Alternativ können Sie den yumPaketmanager zum Installieren .rpmvon Dateien verwenden.

Gebe folgendes ein:

sudo yum localinstall sample_file.rpm

Die localinstallOption weist yum an, in Ihrem aktuellen Arbeitsverzeichnis nach der Installationsdatei zu suchen.


https://superuser.com/questions/483307/wie-weiß-ich-das-abhängige-rpms-von-aa-package

https://phoenixnap.com/kb/wie-installiere-man-die-rpm-datei-centos-linux

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

BEARBEITEN:

Ich kann es nicht rpmgraphzum Laufen bringen. Ich habe drei verschiedene Versionen der PACKAGE_FILEPaketlistensyntax ausprobiert, aber es kommen immer nur Fehler. Wenn Sie wissen, wie man dieses Programm benutzt, geben Sie bitte eine Antwort oder bearbeiten Sie meine. Getestet am Fedora 28.So listen Sie alle installierten Pakete mit der Erweiterung .rpm auf. Fedora, Centos, RedHat

# rpmgraph INSTALLED_PACKAGES 
(null): read manifest failed:

Antwort2

Nach einiger Suche scheint das rpmdepTool aus dem rpmorphanPaket dem am nächsten zu kommen, was ich suche. Um die am meisten benötigten installierten Pakete anzuzeigen, kann es mit der folgenden --dependingOption ausgeführt werden:

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

Antwort3

Ich habe mir hierfür einmal ein Skript geschrieben, es aber kaum genutzt.

Ich würde Entfernungen mit Vorsicht angehen. Ich habe einmal versucht, ein Paket namens „SimplyHTML“ zu löschen, weil es als „Blattknoten“ angezeigt wurde, und als ich es entfernen wollte, stellte ich fest, dass „Freemind“ (ein Mind-Mapping-Tool, das ich häufig verwende) es benötigte und ebenfalls gelöscht wurde. Sehr seltsam!

Wie dem auch sei, hier ist das Skript (das auf meinem System „leaf-rpms“ heißt):

#!/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};
}

verwandte Informationen