eclean

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Eclean and the translation is 100% complete.

eclean は、リポジトリのソースファイルやバイナリパッケージを削除するツールです。gentoolkit ツールスイートの一部です。

他にも Gentoo で利用可能な eclean-kernel ツールがあり、これは gentoolkit とともにインストールされる eclean ツールとは分かれて、app-admin/eclean-kernel パッケージでインストールできます。eclean-kernel は古い Linux カーネルの整理を自動化するために使用されます。

インストール

Emerge

app-portage/gentoolkit をインストールしてください:

root #emerge --ask app-portage/gentoolkit
ヒント
Gentoolkit の記事に、app-portage/gentoolkit パッケージ内の他のユーティリティーも含んだ情報が記載されています。

使い方

Portage は、ソースファイルを /var/cache/distfiles、バイナリパッケージを /var/cache/binpkgs に保存するのがデフォルトです。この保存場所は、/etc/portage/make.conf 内の DISTDIRPKGDIR の環境変数を変更することで、変更可能です。どちらの保存場所も、定期的に掃除しなければ非常に巨大になります。そのため、eclean が作られました。

呼び出し

eclean --help を実行すれば、全ての処理に関する概要と、オプションのリストと、使い方の説明が表示されます。

user $eclean --help

distfiles の削除

コマンドに distfiles を与えると、ソースファイルのディレクトリに処理が行われます:

root #eclean distfiles

より短くは、以下のコマンドでも同じです:

root #eclean-dist

バイナリパッケージの削除

バイナリパッケージを含むディレクトリに対しては、代わりに、以下を実行:

root #eclean packages

より短くは、以下のコマンドでも同じです:

root #eclean-pkg

オプション

デフォルトでは、現在のリポジトリ内のebuild ファイルに関するあらゆるソースファイルもバイナリパッケージも、削除されることはありません。なぜならば、現在のリポジトリツリーにあるパッケージについては、ダウングレードされたり、以前にアンインストールしたものでも再インストールされたりする可能性があり、役に立つかもしれないからです。

例えば、 foo-1.0 および foo-1.1 というパッケージがリポジトリ内にあるとします。foo-1.0 から foo-1.1 にアップグレードした後に eclean distfiles を実行しても、どちらのソースファイルも削除されません。なぜなら、foo-1.1 に不具合が見つかる可能性もあり、ユーザーが foo-1.0 を再インストールするかもしれないので、その際に再ダウンロードすることを省けるからです。

以前にアンインストールしたパッケージについても同様のことがいえます。(バージョンが何であれ) foo というパッケージがインストールされていたとします。このパッケージを(あやまって)アンインストールしてしまい、しかも eclean distfiles も実行していても、foo のソースファイルが残っていれば、再ダウンロードすることなく再インストール可能ですね。

上記の例は、バイナリパッケージを処理する際にも当てはまります。

ディスク領域をさらに節約したいのならば、 --deep オプションを使用します。そうすると、現在インストールされているパッケージおよびバージョンに一致するものを除いて、あらゆるソースファイルやバイナリパッケージが削除されます。これを実行すると、ダウングレードや、以前アンインストールしたパッケージの再インストールの必要が生じた際には、利便が無くなることに留意してください。

また、 --deep--package-names の両方のオプションを使用する方法があります。現在インストールされているパッケージ(バージョンを問わない)に一致するソースコードやバイナリパッケージを保持し、その他を削除します。この方法では、パッケージをダウングレードする際には問題ありませんが、それでも、アンインストールしたパッケージを再インストールする際には再ダウンロードが必要です。

詳しくは eclean(1) のマニュアルページを読んでください:

user $man 1 eclean

トラブルシューティング

削除後に一部の distfile が残る

問題: distfile を削除しようとしたとき、一部の distfile が削除されずに、"The following unavailable installed packages were found" というメッセージが表示されます。例えば:

root #eclean --deep distfiles
 * Building file list for distfiles cleaning...
 * Your distfiles directory was already clean.
 
   The following unavailable installed packages were found
             sys-kernel/gentoo-sources-4.19.44
             sys-kernel/gentoo-sources-4.19.45
             sys-kernel/gentoo-sources-4.19.46

この状況は、パッケージの ebuild が Gentoo ebuild リポジトリから削除されていて、そのパッケージが現在システムにインストールされているときに発生します。一般的に、列挙されたパッケージ/distfile がもう必要ないのなら、それらが削除されない理由は Portage の world ファイルに列挙されているからです。

解決策は、パッケージを world ファイルから取り除くか、以下で特定のパッケージアトムを取り除くことです:

root #emerge --ask --depclean =sys-kernel/gentoo-sources-4.19.44

そして、distfile を削除するために eclean を再実行してください。

関連項目