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.

Ähnliche Artikel