Fedora にインストールされているすべての rpm パッケージを、依存関係に応じてトポロジ的に並べ替え、最も必要なパッケージ (たとえば glibc) を一番上に、最も必要でないパッケージを一番下に並べ替えたいと考えています。 でインストールされているすべてのパッケージを一覧表示できますrpm -qa
が、トポロジ的に並べ替えられているようには見えません。
私の目標は、インストールされているパッケージを確認し、不要になったパッケージを見つけてアンインストールすることです。
答え1
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
インストール:
rpm-devel fedora 19にはこのパッケージがあります
パッケージ マネージャーを使用します。
dnf install rpm-devel
wget
にインストールするにはCentOS
、ターミナル ウィンドウに次のように入力します。
sudo yum install wget
wget
にインストールするにはFedora
、次のように入力します。
sudo dnf install wget
これで、wget コマンドを使用して、必要な .rpm ファイルをダウンロードできます。次のように入力します。
wget http://some_website/sample_file.rpm
システムは Web サイトにアクセスし、ファイルを現在の作業ディレクトリにダウンロードします。
RPM コマンドを使用して RPM ファイルをインストールする
Fedora
またはLinuxに .rpm パッケージをインストールするにはCentOS
、次のように入力します。
sudo rpm –i sample_file.rpm
–i スイッチは、パッケージ マネージャーにファイルをインストールすることを伝えます。
RPMインストーラーの詳細については、RPMドキュメント。
Yum で RPM ファイルをインストールする
あるいは、yum
パッケージ マネージャーを使用してファイルをインストールすることもできます.rpm
。
次のように入力します:
sudo yum localinstall sample_file.rpm
オプションlocalinstall
は、インストール ファイルの現在の作業ディレクトリを確認するように yum に指示します。
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
編集:
動作しません。パッケージ リストの構文rpmgraph
を 3 つの異なるバージョンで試しましたPACKAGE_FILE
が、エラーが発生するだけです。このプログラムの使用方法をご存知の場合は、回答を提供するか、私の回答を編集してください。 でテスト済み。Fedora 28
.rpm 拡張子を持つインストール済みパッケージをすべて一覧表示する方法。Fedora、Centos、RedHat
# rpmgraph INSTALLED_PACKAGES
(null): read manifest failed:
答え2
少し検索してみたところ、パッケージrpmdep
のツールrpmorphan
が私の希望に最も近いようです。最も必要なインストール済みパッケージを確認するには、次のオプションを指定して実行します--depending
。
rpmdep -all --depending | tac | less -S
答え3
以前、このために自分でスクリプトを書いたことがありますが、ほとんど使用しませんでした。
削除は慎重に行います。以前、「SimplyHTML」というパッケージを削除しようとしましたが、これは「リーフ ノード」として表示されたため、削除しようとしたところ、「freemind」(よく使用するマインド マッピング ツール) に必要なため、削除されてしまいました。とても奇妙です。
とにかく、参考までに、ここにスクリプトがあります (私のシステムでは「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};
}