未使用パッケージの削除

未使用パッケージの削除

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

今どうすればいいですか?

答え1

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!

答え2

Fedora 18から、このコマンドを簡単に使用できます。

yum autoremove

または

yum remove --setopt=clean_requirements_on_remove=1

特定のパッケージに自動削除コマンドを適用することもできます。

yum autoremove <package>

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

答え3

簡単ではありません。 「削除したコンテンツに必要なファイル」と「実際に必要な他のコンテンツに必要ないファイル」をどのように区別しますか?

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

$ package-cleanup --leaves

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

$ package-cleanup --leaves --all

ライブラリと見なされないパッケージも入手できますが、このリストは長すぎて役に立ちません。

答え4

最新のdnfFedoraではdnf repoquery --unneededpackage-cleanup --leaves

関連情報