.Build-deps for apk add --virtual command nedir?


142

Nedir .build-depsşu komutu? Alpine belgelerinde bir açıklama bulamıyorum. Bu önceden tanımlanmış bir dosya mı? Bunun birçok Dockerfiles'da başvurulduğunu görüyor musunuz?

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
Silme işlemi dosya sistemindeki yeni bir katmanda yürütüldüğünden, del'in ayrı bir ÇALIŞTIR komutunda olması görüntü boyutunu azaltmayacaktır.
scipilot

Yanıtlar:


237

Belgeleri görürseniz

  -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

Bunun anlamı, paketleri kurduğunuzda, bu paketlerin global paketlere eklenmemesidir. Ve bu değişiklik kolayca geri alınabilir. Yani bir programı derlemek için gcc'ye ihtiyacım varsa, ancak program derlendiğinde artık gcc'ye ihtiyacım yok.

Gcc ve diğer gerekli paketleri sanal bir pakette kurabilirim ve tüm bağımlılıkları bu sanal paket adı ile kaldırılabilir. Aşağıda örnek bir kullanım verilmiştir

apk add --virtual mypacks gcc vim
apk del mypacks

Bir sonraki komut, ilk komutla kurulan 18 paketin tümünü silecektir.


1
Ayrıca, şu anda yapılandırılmış depolarda mevcut olmayan, sanal bir paket için benzersiz bir ad kullanmanın önemli olduğunu belirtmekte fayda var, aksi takdirde paketler başarıyla kurulur, ancak ihtiyacınız olanı kurmaz.
bazeusz

1
Not: Bunu bir RUN komutunda yürütmelisiniz, aksi takdirde önceki Docker görüntü katmanından silinemez stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.