Что такое .build-deps for apk add --virtual command?

142

Что находится .build-depsв следующей команде? Я не могу найти объяснения в документации Alpine. Это предопределенный файл? См., Что это упоминается во многих файлах Docker.

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
gdbj
источник
34
Обратите внимание: наличие del в отдельной команде RUN не приведет к уменьшению размера образа, поскольку удаление выполняется на новом уровне файловой системы.
scipilot

Ответы:

236

Если вы видите документацию

  -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, иначе он не может быть удален из предыдущего слоя образа Docker stackoverflow.com/a/49714913/1577357
Зулхилми Зайнудин