web-dev-qa-db-ja.com

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

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

どうすれば今それを行うことができますか?

67
mudlee

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

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

$ package-cleanup --leaves

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

$ package-cleanup --leaves --all

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

39
larsks

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

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!
107
Your Mom

Fedora 18以降、このコマンドを使用するだけです

yum autoremove

または

yum remove --setopt=clean_requirements_on_remove=1

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

yum autoremove <package>

これにより、インストールされたパッケージから不要な依存関係が削除されます。 autoremoveremove --setopt=clean_requirements_on_remove=1のエイリアスですが、いくつかの理由により、まだドキュメント化されていません。

67
Finalzone

私はラースクを一歩先に答えました。

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

これは、他に影響を与えずに削除できるすべての依存関係を取得してから削除します。その後、1つずつ実行することをお勧めします。

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

9
jtoscarson

dnfを使用する新しいFedoraでは、dnf repoquery --unneededの代わりにpackage-cleanup --leavesを使用できます。

2
Thomas Ahle