Lassen Sie mich darauf antworten, dass ich aus der MacPorts-Perspektive komme, da diese Probleme der gleichzeitig vorhandenen Software-Management-Tools dort nicht unbekannt sind. Am wichtigsten ist jedoch, dass es einfach nicht möglich ist, /usr/local
die Standardpfade des Compilers zu entfernen . Dies kann bei einigen Builds zu Problemen führen, insbesondere bei der +universal
Kompilierung mehrerer Architekturen .
Zu Beginn des Projekts vor vielen Jahren wechselte MacPorts zu /opt/local
, um Probleme mit anderer Software zu vermeiden. Eine /usr/local
vollständige Isolierung von scheint allein durch Compiler-Konfigurationsflags nicht möglich zu sein. Leider haben Homebrew-Entwickler dies absichtlich ignoriert und / usr / local als Standard ausgewählt. Es klingt zwar nach einer guten Idee, da es bereits in PATH aufgeführt wäre, in der Standardkonfiguration jedoch /usr/local/bin
erst danach /usr/bin
, wodurch das Überschreiben von Befehlszeilenprogrammen nicht möglich ist. Es gibt also keinen Vorteil der Verwendung /usr/local
.
Die beste Lösung ist, Homebrew entweder auf einem anderen Pfad zu installieren (zum Beispiel /opt/homebrew
) oder / usr / local vor dem Erstellen vorübergehend umzubenennen und anschließend wieder umzubenennen:
sudo mv /usr/local /usr/local.off ... # do your compilation work sudo mv /usr/local.off /usr/local
Als Randbemerkung für die Zukunft, während MacPorts in seiner aktuellen Version bereits eine Sandbox für alle Builds verwendet, gibt es Verbesserungen in diesem Bereich für Version 2.3.0 oder höher. Der neue Trace-Modus, der sich derzeit in der Entwicklung befindet, würde es ermöglichen, den gesamten Dateizugriff auf die Dateien zu beschränken, die nur für die jeweilige Erstellungsaufgabe erforderlich sind. Dadurch werden Speicherorte wie /usr/local
und /sw
vollständig vor dem Erstellungsprozess ausgeblendet. Bei anderen Tools hilft das jedoch nicht, es sei denn, sie übernehmen auch diese Funktion.