apk add --virtualコマンドの.build-depsとは何ですか?


139

.build-deps次のコマンドには何がありますか?Alpineのドキュメントに説明がありません。これは事前定義されたファイルですか?これが多くのDockerfilesで参照されていることを確認してください。

RUN apk add --no-cache --virtual .build-deps \
gcc \
freetype-dev \
musl-dev

RUN pip install --no-cache-dir <packages_that_require_gcc...> \

RUN apk del .build-deps

34
ファイルシステムの新しいレイヤーで削除が実行されるため、別のRUNコマンドでdelを使用しても、イメージのサイズは小さくなりません。
scipilot 2018

回答:


234

ドキュメントが表示された場合

  -t, --virtual NAME    Instead of adding all the packages to 'world', create a new 
                        virtual package with the listed dependencies and add that 
                        to 'world'; the actions of the command are easily reverted 
                        by deleting the virtual package

つまり、パッケージをインストールすると、それらのパッケージはグローバルパッケージに追加されません。そして、この変更は簡単に元に戻すことができます。プログラムをコンパイルするためにgccが必要な場合でも、プログラムがコンパイルされると、gccは不要になります。

私はgccと他の必要なパッケージを仮想パッケージとそのすべての依存関係にインストールでき、すべてこの仮想パッケージ名を削除できます。以下は使用例です

apk add --virtual mypacks gcc vim
apk del mypacks

次のコマンドは、最初のコマンドでインストールされた18個のパッケージをすべて削除します。


1
また、現在構成されているリポジトリに存在しない、仮想パッケージに一意の名前を使用することも重要です。それ以外の場合、パッケージのインストールは成功しますが、必要なものがインストールされません。
bazeusz

1
注:あなたはそれが以前ドッカーの画像レイヤから削除することはできませんそれ以外、1つのRUNコマンドでそれを実行する必要がありstackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.