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
Usage:
 eclean [global-option] ... <action> [action-option] ...
 eclean-dist [global-option, distfiles-option] ...
 eclean-pkg [global-option, packages-option] ...
 eclean(-dist,-pkg) [--help, --version]
 
Available global options:
 -C, --nocolor             - turn off colors on output
 -d, --deep                - only keep the minimum for a reinstallation
 -e, --exclude-file=<path> - path to the exclusion file
 -i, --interactive         - ask confirmation before deletions
 -n, --package-names       - protect all versions (when --deep)
 -p, --pretend             - only display what would be cleaned
 -q, --quiet               - be as quiet as possible
 -t, --time-limit=<time>   - don't delete files modified since <time>
   <time> is a duration: "1y" is "one year", "2w" is "two weeks", etc. 
   Units are: y (years), m (months), w (weeks), d (days) and h (hours).
 -h, --help                - display the help screen
 -V, --version             - display version info
 
Available actions:
 packages     - clean outdated binary packages from PKGDIR
 distfiles    - clean outdated packages sources files from DISTDIR
 
Available options for the packages action:
     --changed-deps               - delete packages for which ebuild dependencies have changed
 -i, --ignore-failure             - ignore failure to locate PKGDIR
 
Available options for the distfiles action:
 -f, --fetch-restricted   - protect fetch-restricted files (when --deep)
 -s, --size-limit=<size>  - don't delete distfiles bigger than <size>
   <size> is a size specification: "10M" is "ten megabytes", "200K" is
   "two hundreds kilobytes", etc.  Units are: G, M, K and B.
 
More detailed instruction can be found in `man eclean`

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 を再実行してください。

関連項目