Was ist der Befehl .build-deps für den Befehl apk add --virtual?


139

Was steht .build-depsim folgenden Befehl? Ich kann keine Erklärung in den alpinen Dokumenten finden. Ist dies eine vordefinierte Datei? Wird in vielen Docker-Dateien darauf verwiesen.

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
Beachten Sie, dass das Löschen in einem separaten RUN-Befehl die Bildgröße nicht verringert, da das Löschen in einer neuen Ebene im Dateisystem ausgeführt wird.
Scipilot

Antworten:


234

Wenn Sie die Dokumentation sehen

  -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

Dies bedeutet, dass bei der Installation von Paketen diese Pakete nicht zu globalen Paketen hinzugefügt werden. Und diese Änderung kann leicht rückgängig gemacht werden. Wenn ich also gcc brauche, um ein Programm zu kompilieren, aber sobald das Programm kompiliert ist, brauche ich gcc nicht mehr.

Ich kann gcc und andere erforderliche Pakete in einem virtuellen Paket installieren und alle seine Abhängigkeiten und alles kann dieser virtuelle Paketname entfernt werden. Unten finden Sie ein Beispiel für die Verwendung

apk add --virtual mypacks gcc vim
apk del mypacks

Der nächste Befehl löscht alle 18 Pakete, die mit dem ersten Befehl installiert wurden.


1
Erwähnenswert ist auch, dass es wichtig ist, einen eindeutigen Namen für ein virtuelles Paket zu verwenden, das in derzeit konfigurierten Repositorys nicht vorhanden ist. Andernfalls ist die Installation von Paketen erfolgreich, installiert jedoch nicht das, was Sie benötigen.
Bazeusz

1
Hinweis: Sie müssen es in einem RUN-Befehl ausführen, andernfalls kann es nicht aus dem vorherigen Docker-Image-Layer stackoverflow.com/a/49714913/1577357
Zulhilmi Zainudin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.