Proxy-Variablen in GNU-Make-Rezepte exportieren
Exportiere eine Proxy-Umgebung für die Rezeptbefehle von GNU make und vermeide, dass ein Shell-Export zwischen getrennten Rezeptzeilen verloren geht.
make startet den Downloader; der Downloader entscheidet, wie ein Proxy verwendet wird. Für GNU make exportierst du die Variablen auf Makefile-Ebene, wenn jedes relevante Rezept sie erhalten soll:
export http_proxy := http://proxy.example:8080
export https_proxy := http://proxy.example:8080
fetch:
curl --fail --output package.tar.gz https://downloads.example/package.tar.gz
Die Rezeptzeile beginnt mit einem Tabulator. Die export-Direktiven gehören zur Syntax von make und übergeben die Werte in die Umgebung der Befehle.
Ein Shell-Export in einer Rezeptzeile verschwindet normalerweise vor der nächsten Zeile, weil GNU make für jede Zeile eine eigene Shell startet. Für einen einzelnen Befehl verwendest du stattdessen eine Shell-Zuweisung direkt bei diesem Befehl:
fetch:
http_proxy=http://proxy.example:8080 https_proxy=http://proxy.example:8080 curl --fail https://downloads.example/package.tar.gz
Verwende die dokumentierten Variablennamen und das Proxy-Protokoll des Downloaders. Kann der Build einen öffentlichen HTTP-Endpunkt nutzen, wähle einen Kandidaten aus der HTTP-Proxy-Liste für diese Umgebungswerte. Ein Programm, das diese Variablen ignoriert, braucht eine eigene Proxy-Option. Zugangsdaten sollten eher über die Build-Umgebung kommen als im Makefile zu stehen.
Diese Exporte wirken auf untergeordnete Befehle. Sie ändern nicht die Umgebung des übergeordneten Terminals, nachdem make beendet ist.