FreeBSD Daily Topics

2011年11月28日誰からも使われないリーフパッケージを削除する方法(pkg_cleanup編)

ports

How to remove the uneeded package leaves

Ports Collectionからアプリケーションをインストールしたり削除したりしている場合、どこからも参照されない、いわゆる「リーフパッケージ」が発生することがあります。

「リーフパッケージ」はビルド時にのみ必要とされインストールされたビルドツールや変換ツール、またはビッグアプリケーション削除後に残った依存ライブラリや依存ツールなどです。なんらかのアプリケーションを試用しようとしてPorts Collectionからインストールし、不要と判断して削除した場合、そのアプリケーションに依存してインストールされたほかのライブラリやツール、ソフトウェアはインストールされたままになります。こうしたユーザが必要としないパッケージが「リーフパッケージ」です。

リーフパッケージは使われないのにそこに存在しているため、次のような弊害があります。

  • 依存関係のチェック処理などを遅くする要因となる
  • アップグレードなどに失敗する要因になる可能性がある
  • ディスク容量を圧迫する

リーフパッケージになっているということは、すでにほかのアプリケーションから参照されることがなく、同じアプリケーションをインストールしない限りは再利用される可能性が低い状態にあります。ビルドツールなどはビルド時に使われますが、特定の用途に特化したライブラリなどは、対象となるアプリケーションを削除したあとは使われずに残り続けることが多いように思います。

リーフパッケージは定期的にチェックしてアンインストールした方が、システムを軽快な状態に保つことができます。Ports Collectionにはリーフパッケージの削除に特化したツールが用意されています。たとえば次のツールなどがあります。

  • pkg_cleanup(ports-mgmt/pkg_cleanup)
  • pkg_cutleaves(ports-mgmt/pkg_cutleaves)
  • pkg_rmleaves(ports-mgmt/pkg_rmleaves)
  • portmanager(ports-mgmt/portmanager)
図1 pkg_cleanup実行例 - ダイアログ形式の操作
図1 pkg_cleanup実行例 - ダイアログ形式の操作
図2 pkg_cutleaves実行例 - 対話形式の操作
図2 pkg_cutleaves実行例 - 対話形式の操作
図3 pkg_rmleaves実行例 - ダイアログ形式の操作
図3 pkg_rmleaves実行例 - ダイアログ形式の操作
図4 portmanager実行例 - リーフパッケージの一覧表示操作
図4 portmanager実行例 - リーフパッケージの一覧表示操作

扱いやすさと軽量さを考えると、⁠pkg_cleanup」あたりはこの目的に適切なツールといえます。pkg_cleanupで不要なリーフパッケージを削除すると、新しいリーフパッケージの一覧を表示するか聞かれます。リーフパッケージを削除したことで、そのリーフパッケージに依存していたパッケージが新しくリーフパッケージになることがあるからです。大量にリーフパッケージがある場合、10数回といった回数、この作業を繰り返す必要があることもあります。

依存関係のチェックに長い時間がかかると感じるようになってきたのであれば、pkg_cleanupなどのツールを使ってリーフパッケージの削除作業を検討してみると良いかもしれません。

おすすめ記事

記事・ニュース一覧