Apk add --virtual कमांड के लिए .build-deps क्या है?


140

.build-depsनिम्नलिखित कमांड में क्या है ? मुझे अल्पाइन डॉक्स में स्पष्टीकरण नहीं मिला। क्या यह एक फ़ाइल है जो पूर्वनिर्धारित है? यह कई डॉकफाइल्स में संदर्भित है।

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 कमांड में डेल होने से इमेज साइज कम नहीं होगा, क्योंकि फाइलसिस्टम में एक नई लेयर में डिलीट रन होता है।
scipilot

जवाबों:


235

यदि आप दस्तावेज देखते हैं

  -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
नोट: आपको इसे एक RUN कमांड में निष्पादित करना होगा, अन्यथा इसे पिछले डॉकटर छवि परत से नहीं हटाया जा सकता है stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.