install_weak_deps=False
これを設定すると、/etc/dnf/dnf.conf
後でdnfインストーラを使用するときに弱い依存パッケージをインストールするのを防ぐことができます。
しかし、このオプションを設定する前にインストールされているすべてのパッケージをどのように一覧表示できますか?
システム全体で弱い依存関係でインストールされているすべてのパッケージを削除したいと思います。
答え1
パッケージAが依存関係Bなしで動作している場合、パッケージAの仕様ファイルでは弱い依存関係のみを使用できます。つまり、パッケージ A はパッケージ B のインストールにのみ「推奨」されます。
パッケージBが存在するかどうかを確実に判断する方法はありません。以前は弱い依存性(だからAが引き寄せる)後ろにBがインストールされました。完全なyum / dnfログファイルにアクセスでき、注意深く研究したいという意志がなければ!
これは、Bが手動でインストールされたか、パッケージCの弱い依存関係またはパッケージDのハード依存関係(「require」)としてインストールされた可能性があるためです。
答え2
あなたは得ることができません精密リスト。
しかし、比較的単純なスクリプトを使用して削除すると、合理的な近似を得ることができます。
dnf repoquery --userinstalled
DNFの観点から手動でインストールされたすべてのパッケージを一覧表示します(これは実際に手動でインストールする必要がある理由はさまざまですが、私たちの目的とは特に関係ありません。
dnf repoquery --installed
インストールされているすべてのパッケージを一覧表示します。
dnf repoquery --requires pkg
ハード依存関係をリストしましたpkg
。
dnf repoquery --whatprovides pkg
上記のコマンドの出力は--requires
特定のパッケージに変換できます。
これら4つのコマンドを使用すると、次のシェルスクリプトを使用して、手動でインストールされていない明示的に依存していないすべてのパッケージのおおよそのリストを生成できます。
#!/bin/bash
# Get the list of all installed packages
installed="$(dnf repoquery --installed)"
# Generate a list of all hard dependencies by iterating over each dependency of each installed package.
required=""
for pkg in ${installed}; do
for dep in $(dnf repoquery --requires "${pkg}"); do
required="${required}\n$(dnf repoquery --whatprovides "${dep}")"
done
# Remove any duplicates from the list of hard dependencies (done each time we finish a package’s dependencies to minimize memory usage).
required="$(echo "${required}" | sort -u)"
done
# Iterate over each manually installed and explicitly required package, removing them from the list of all installed packages
notrequired="${installed}"
for pkg in $(dnf repoquery --userinstalled) ${required}; do
notrequired="$(echo "${notrequired}" | grep -v "${pkg}")"
done
# Print the final list of packages that are not required.
echo "${notrequired}"
残念ながら、これは時間がかかります長いランタイム(新規インストールにも数分かかることがあります)とかなりの量のメモリを使用できます。最終的に印刷されるパッケージのリストは、DNFがユーザーが直接インストールしていないと思うものであり、インストールされたパッケージへの厳しい依存関係ではありません。これはない正確に以下の理由により、ソフト依存関係でインストールされたパッケージのリストと同じです。
- 一部は元々ソフト依存関係として導入されていましたが、後で手動でインストールされているか、後でインストールされたパッケージのハード依存関係である可能性があります。
- 実際には、DNF が特定のパッケージを手動でインストールするか自動的にインストールするかを変更できます。
- これ可能グループをインストールしてインポートしたパッケージも一覧表示されます(グループを使用していないためわかりません)。