UbuntuからFedora14に切り替えたところです。 Ubuntuではapt-get autoremove
孤立した/未使用のパッケージを削除すること。 Fedoraで対応するものは何ですか?
package-cleanup --quiet --leaves
from yum-utilsパッケージは、他のパッケージに依存していないライブラリパッケージをリストします。残念ながら、それは少し熱心すぎる傾向があります。たとえば、私のシステムでは、libvirtを削除するよう提案されました。 --exclude-bin
引数が役立ちます。提案に満足したら、パッケージをクリーンアップするには、次のようにします。
# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y
Fedora 22以降のyumの代替であるDNFは、autoremove
サブコマンドも提供します。これは モデル化された apt-get/yum autoremoveです。
例:
# dnf autoremove
これは、自動的にインストールされたパッケージとそれ以外の場合は使用されていない依存パッケージをすべて削除しようとします-apt-get autoremove
とほぼ同等です。
# dnf autoremove examplepackage
examplepackageとそのすべての自動的にインストールされた(およびそれ以外の場合は未使用の)依存関係が削除されます。
Yumには、Fedora 19以降にautoremoveコマンドがあり、Fedora 20/RHEL 7以降に文書化されています。
使い方はdnf実装に似ています。例:
# yum autoremove
または
# yum autoremove examplepackage
Yumはremove
サブコマンドのデフォルトの動作を変更するための構成オプションをサポートしています(例:/etc/yum.conf経由):
clean_requirements_on_remove=yes
これが設定されると、次のyum remove
は、他のパッケージで必要とされない限り、自動インストールされた依存関係も削除しようとします。
次のような方法で、このオプションを一時的にテストすることもできます。
# yum --setopt=clean_requirements_on_remove=1 remove examplepackage
(yum autoremoveサブコマンドが使用できない、またはclean_requirements_on_remove
が機能しないFedoraバージョンの場合。)
パッケージのインストール中に、インストールされた依存関係はそのようにマークされます(rpm/yumの比較的新しい機能のようです)。
次のようにして、不要な依存関係を見つけることができます。
$ package-cleanup --leaves -q --all \
| xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
| grep -- '- dep' \
| cut -d' ' -f1 > tmp
このコマンドラインは fenris02のスクリプト から着想を得ています。
tmp
(およびおそらくキュレーション)を検査した後、次のような方法でそれらを削除できます。
# xargs yum remove < tmp
yumプラグイン「remove-with-leaves」をインストールする必要があります。
# yum install yum-plugin-remove-with-leaves.noarch
インストール後:
# yum remove --remove-leaves package
幸運を!
# package-cleanup --orphans >/tmp/junk
/tmp/junk
ファイルを作成し、コマンドラインからの情報である最初の行を削除するには、次のように入力します。
for file in `cat /tmp/junk`
do
yum remove $file
done
注:この答えは正しいですが、RHEL 7+およびFedora 20にのみ適用されます+(自動削除が新機能として追加されている場合)
# yum autoremove
選択したパッケージの削除を確認してください。
これらの問題を引き起こさないもう1つの方法は、トランザクションを使用することです。
基本システムのセットアップ後、yumを使用してインストールすると、トランザクションが作成されます。削除する予定がある場合は、トランザクションをロールバックします。
Fedoraでは、Orphanパッケージは更新する候補リポジトリがないことを意味します!
Orphanパッケージが生成された場合は、yum.repos.d/some.confを無効にします。
yum distro-sync
他の孤立パッケージでは、コマンドが危険な場合があります。
yum remove $(package-cleanup --orphans)
または、安全コマンドを使用します。
yum remove name-of-page
package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs Sudo yum remove
(疑問に思う場合は、最速のミラーのスキップも含まれます。)