Fedoraで孤立パッケージを削除するにはどうすればよいですか?


42

UbuntuからFedora14に切り替えました。Ubuntuではapt-get autoremove、孤立した/未使用のパッケージを削除することができました。Fedoraの対応物は何ですか?

回答:


36

package-cleanup --quiet --leavesyum-utilsパッケージからは、他のパッケージに依存していないライブラリパッケージがリストされます。残念ながら、少し熱心すぎる傾向があります。たとえば、私のシステムでは、libvirtを削除することを提案しました。--exclude-bin引数を追加すると役立ちます。提案に満足している場合、パッケージをクリーンアップするには、次を実行します。

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

1
インストールおよび削除後にテストしnetbeans-platform、パッケージのクリーンアップにはいくつかのものがリストされていますが、実際には以前にインストールされたnetbeans-platform依存関係はありません(Fedora 17を使用)。
-maxschlepzig

2
@maxschlepzig
c0da

30

Fedora 22以降のyumの置き換えであるDNFは、apt-get / yum autoremoveをモデルにした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 removesの動作を変更する

Yumは、removeサブコマンドのデフォルトの動作を変更するための設定オプションをサポートしています(/etc/yum.confなどを使用):

clean_requirements_on_remove=yes

yum.conf(5)

これが設定されている場合、次yum removeも自動インストールされた依存関係を削除しようとしますが、それらは他のパッケージには必要ありません。

次のような方法でこのオプションを一時的にテストすることもできます。

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

古いFedoraバージョンの回避策

(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

エラー「インストールされたpkgのyumdb querytag 'reason'が無効です:adobe-release-x86_64-1.0-1.noarch」が発生しました。これは何ですか?
c0da

@ c0da、yumが各パッケージのインストールの「理由」(例:「dep」または「user」)をデータベースに記録する機能は比較的新しいと思います。おそらく、Fedoraインスタンスは、その機能が導入される前に、そのタグセットなしで(少数の)古いパッケージがインストールされている可能性があります。
maxschlepzig

数日前にFedora 18をインストールしました。必要なタグはそこにあるべきだと思います。
c0da

1
あなたは、パッケージをインストールしているため、@ c0daは、おそらく「その理由は、」記録されなかったadobe-release経由yum localinstall
maxschlepzig

16

yumプラグイン「remove-with-leaves」をインストールする必要があります。

# yum install yum-plugin-remove-with-leaves.noarch

インストール後:

# yum remove --remove-leaves package

幸運を!


3
インストールされているすべてのアプリでそれを実行する方法は?
CND


1
RHEL / CentOSの/オラクルのLinux 6は、必要がyum-plugin-remove-with-leaves.noarch使用するようにインストールパッケージをpackage-cleanup
テリー王

8
# package-cleanup --orphans >/tmp/junk

/tmp/junkファイルを編集し、コマンドラインから情報を提供する最初の行を削除して、次のように入力します。

for file in `cat /tmp/junk`
do
  yum remove $file
done

1
package-cleanup(1)のコメント: '--orphans現在設定されているリポジトリから利用できないインストール済みパッケージを一覧表示します。これは何をするかと同等ではありませんapt-get autoremove。apt-get(8)によると:「autoremoveは、いくつかのパッケージの依存関係を満たすために自動的にインストールされ、不要になったパッケージを削除するために使用されます。」
-maxschlepzig

1
動作しません!以前に間違えたに違いありません。ありがとう@maxschlepzig
c0da

以前はこれが機能していましたが、CentOS 6.6では、孤立したものだけでなく、インストールされているすべてのパッケージが実際にリストされます。
ガイア

4

注:この答えは正しいですが、RHEL 7以降およびFedora 20以降(自動削除が新しい機能として追加されている場合)にのみ適用されます。

# yum autoremove

選択したパッケージを削除することを確認するだけです。


0

ラリー・モールの答えに基づいて:

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(不思議に思うなら、最速のミラーのためにスキップすることを含みます。)


0

Fedoraでは、孤立パッケージとは、更新するリポジトリの候補がないことを意味します!

  1. 孤立パッケージが生成された場合、yum.repos.d / some.confを無効にします。

    yum distro-sync
    
  2. 他の孤立パッケージでは、コマンドは危険な場合があります。

    yum remove $(package-cleanup --orphans)
    

    または、単に安全コマンドを使用します。

    yum remove name-of-page
    

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.