未使用のパッケージを削除する


62

Fedora 17にrpmパッケージをインストールしました。いくつかのパッケージには多くの依存関係がありました。いくつかのパッケージを削除しましたが、yum removeを使用して未使用の依存関係を削除するのを忘れました。

どうすれば今できますか?


yumマンページlinux.die.net/man/8/yumを見ましたか?
Linuxios

回答:


39

簡単ではない。「私が削除した後に必要なファイル」と「本当に欲しいものに必要ないファイル」をどのように区別しますか?

パッケージのpackage-cleanupコマンドを使用yum-utilsして、パッケージの依存関係グラフに「リーフノード」を一覧表示できます。これらは、他に影響を与えることなく削除できるパッケージです。

$ package-cleanup --leaves

これにより、他に何も依存しない「ライブラリ」のリストが作成されます。ほとんどの場合、これらのパッケージを安全に削除できます。--allコマンドラインに追加する場合:

$ package-cleanup --leaves --all

ライブラリとは見なされないパッケージも取得しますが、このリストは非常に長くなるので、おそらく役に立たないでしょう。


9
APT(Debian版のYum)には、「自動インストールパッケージ」という概念があります。パッケージが明示的に要求されず、依存関係としてのみプルされた場合、そのパッケージに依存するパッケージがすべて削除されると、(確認プロンプトで)自動的に削除されます。このタイプの兆候がなければ、それは確かに簡単ではありません。
ジル「SO-は悪であることを停止」

101

たとえば、を使用してパッケージをインストールするとyum installpdftk多くの依存関係が取り込まれます。

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk すべての依存関係ではなく、そのパッケージのみを削除します。

ただし、すべての「トランザクション」(インストール、削除など)を確認できます。

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

そして、そのトランザクションを元に戻すことができます:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

14
+1素晴らしいソリューションと非常に簡単。私は聞いたことがないyum history。ありがとう!
ステファンLasiewski

8
89がjava_cupまたはlibgcjに依存している場合はどうなりますか?
-WernerCD

2
これは受け入れられた答えではないでしょうか?
セルドール

61

Fedora 18以降では、このコマンドを簡単に使用できます

yum autoremove

または

yum remove --setopt=clean_requirements_on_remove=1

特定のパッケージでautoremoveコマンドを適用することもできます

yum autoremove <package>

インストールされたパッケージから不要な依存関係を削除します。autoremoveは非常にエイリアスですremove --setopt=clean_requirements_on_remove=1が、何らかの理由でまだ文書化されていません。


5
コマンドyum remove --setopt=clean_requirements_on_remove=1CentOSの中に私のための作品
BMW

私にとっては、package-cleanup --leaves && yum autoremovelibvorbis が削除されたため、インターネットラジオストリーミング「Ices」アプリケーションが死にました。おそらくリポジトリにないため、コンパイルする必要があったからです。
ナキロン

コマンドyum autoremoveはCentOS 7.6でも機能します。
スクルータリ

yumを自動的削除はCentOSの7の上に4つの古いカーネルを削除するために失敗した
user1133275

5

私はさらに一歩進んで答えを出しました。

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

これにより、他に影響を与えずに削除できる依存関係がすべて取得され、削除されます。1つずつ確認してください。

「-q」は、それ以外の場合は「Setup up yum」を出力する一部のシステムで役立ち、このコマンドによりyumが削除されます。そして、それはあなたが望むものではありません。


2
package-cleanup私のマシンで「yumのセットアップ」を出力し、その結果Yumが削除されました。私は今、これを整理する方法を見つけようとしています。
ポールランマーツマ

@PaulLammertsmaは-q、package-cleanupにオプションを追加するだけです。これは私にも起こった:D
Ealhad

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removeパッケージクリーンアップの出力が空の場合、暗黙的にxargsをスキップします。これは、ansible、chef、puppet、vagrantのような自動化されたスクリプトに役立ちます
イリヤシェルショフ

これが答えです。
xCovelus

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