Transcript
00:00:00Vor einigen Monaten haben wir auf genau diesem Kanal ein Video veröffentlicht, in dem wir Homebrew im Grunde als
00:00:05Steinzeit-Tool bezeichnet haben, das wir nur nutzen, weil Nix es meilenweit abhängt. Daher ist es nur fair, dass ich
00:00:12heute darauf zurückkomme und euch Folgendes sage: Das Steinzeit-Tool, das wir genutzt haben, hat gerade seine erste
00:00:17Hauptversion seit Jahren veröffentlicht: Homebrew 6.0. Und das Entscheidende dabei ist: Die Schlagzeile ist kein Haufen neuer
00:00:23Features. Es ist eine komplette Sicherheitsüberholung. Homebrew ist endlich erwachsen geworden.
00:00:30Lasst mich erklären, was sich wirklich geändert hat, denn das ist interessanter als nur eine erhöhte Versionsnummer.
00:00:38Praktisch die gesamte Geschichte von Homebrew lang galt: Wenn man ein Drittanbieter-Tap – also das Paket-Repo eines anderen – hinzugefügt hat,
00:00:45hat Homebrew einfach deren Ruby-Code ausgeführt. Es hat den Code einfach gestartet. Bei jedem Tap,
00:00:51beliebigen Code, ohne wirklich Fragen zu stellen. Bedenkt nun, in welcher Welt wir uns heute befinden.
00:00:56Paketmanager sind derzeit das Hauptziel für Supply-Chain-Angriffe. NPM und all die anderen
00:01:01werden dauernd getroffen. Einfach jeden Code auszuführen, den das Repo liefert, ist eine schlechte Standardeinstellung. Und das Hauptfeature von Homebrew
00:01:086.0 dient dazu, das zu beenden. Es nennt sich “Tap Trust”. Wenn euch solche Coding-Tipps gefallen,
00:01:15abonniert gerne unseren Kanal. Wir bringen ständig neue Videos. Aber beginnen wir mit dem Teil, den ihr
00:01:19tatsächlich jeden Tag spüren werdet. “brew version”. Da ist es: 6.0. Schaut jetzt, was passiert, wenn ich etwas installiere,
00:01:25das ein paar Abhängigkeiten nachzieht. Anstatt es stillschweigend im Hintergrund zu erledigen, zeigt Brew jetzt
00:01:31eine Zusammenfassung von allem an, was installiert werden soll, und wartet auf mein “Ja”. Das ist der neue Ask-Modus,
00:01:38und er ist für Entwickler jetzt standardmäßig aktiv. Eine kleine Änderung, aber sie sorgt dafür, dass man den Plan sieht, bevor Brew
00:01:44irgendetwas auf unserem System anfasst. Jetzt zum großen Punkt: Tap Trust. Seht zu, wenn ich ein Drittanbieter-Tap hinzufüge.
00:01:50Homebrew stoppt mich sofort. Es meldet, dass diesem Tap noch nicht vertraut wird, und führt keine Zeile Code aus,
00:01:56bis ich es ausdrücklich erlaube. Ich muss ihm erst gezielt mit “brew trust” vertrauen, und erst dann wird es
00:02:03ausgeführt. Den offiziellen Homebrew-Taps wird von Haus aus vertraut. Der normale Alltagsgebrauch mit Brew
00:02:09bleibt also absolut identisch. Aber dieses leicht suspekte Tap von einem Fremden auf GitHub, das ihr in einer Readme gefunden habt –
00:02:16das ist jetzt wie eine verschlossene Tür. Das müsst ihr erst aktiv bestätigen. Und ehrlich gesagt
00:02:20ist das zu diesem Zeitpunkt wohl eine ziemlich gute Entscheidung. Und das ist nicht das einzige echte Upgrade hier.
00:02:25Das interne Metadatensystem ist jetzt Standard, wodurch alle Paketinformationen in einem einzigen
00:02:30sauberen Download geladen werden statt über Dutzende kleine Netzwerkanfragen. Dadurch läuft “brew update” viel schneller. Es gibt auch einen
00:02:37brandneuen Befehl, “brew execute”, der im Grunde NPX für Homebrew ist. Führt ein Tool einmalig aus, ohne es dauerhaft
00:02:45auf eurem System zu installieren. Es gibt “brew vulns”, das bereits installierte Pakete auf
00:02:51bekannte Sicherheitslücken und Warnungen überprüft. Zudem hat 6.0 stillschweigend drei Sicherheitslücken geschlossen, darunter eine, die Code
00:02:58über das Mac-Installer-Paket als Root ausführen konnte. Das ist ein Release mit echtem Rückgrat. Gut, jetzt kommt
00:03:04der Haken an der Sache. Und für einige von euch wird das ein großer sein, also sage ich es euch direkt.
00:03:09Tap Trust ist ein Breaking Change. Wenn ihr CI-Pipelines habt, die auf Drittanbieter-Taps angewiesen sind,
00:03:14wirft “brew doctor” sofort einen Fehler aus, sobald es ein nicht vertrauenswürdiges Tap sieht. Und sehr viele Standard-GitHub-Actions
00:03:20führen “brew doctor” als allerersten Schritt aus. Leute haben also geupgradet, und ihre Builds sind plötzlich fehlgeschlagen.
00:03:28Die Lösung besteht darin, diese Taps in eurer Konfiguration als vertrauenswürdig zu markieren, aber das müsst ihr selbst erledigen.
00:03:35Niemand wird das für euch tun. Dasselbe gilt für den Ask-Modus. Wenn ihr Skripte habt, die stillschweigend davon ausgingen,
00:03:41dass Brew ohne Nachfragen installiert, kann diese neue Abfrage dazu führen, dass sie endlos hängen bleiben. Und was die allgemeine Wahrnehmung angeht:
00:03:46Wenn man einfach nur ein ganz normaler Nutzer ist, der täglich Apps installiert, sieht das kaum anders aus.
00:03:51Das ist ein Sicherheits- und Architektural-Release, nicht nur ein neuer Anstrich. Hier auch noch ein kurzer Mythos:
00:03:58Viele Dinge werden ja derzeit in Rust neu geschrieben. Nein, Homebrew wird nicht in Rust neu geschrieben –
00:04:04zumindest jetzt nicht. Das war nur ein Experiment. Der Fokus liegt wieder voll auf der Ruby-Codebasis, so wie es
00:04:10schon immer war. Solltet ihr also auf Homebrew 6.0 upgraden? Für fast jeden lautet die Antwort einfach: Ja.
00:04:16Ihr bekommt drei Sicherheitsfixes, und ehrlich gesagt wird euch “brew update” ohnehin auf 6.0 heben,
00:04:22ob ihr es geplant habt oder nicht. Wer etwas langsamer machen sollte, sind
00:04:27alle, die CI-Pipelines mit Drittanbieter-Taps nutzen oder Automatisierungen haben, die stille Installationen erwarten. Kümmert euch zuerst darum,
00:04:33dann seid ihr auf der sicheren Seite. Und falls ihr noch einen Intel-Mac nutzt, aufgepasst: 6.0 steckt den Zeitplan ab,
00:04:40um den Intel-Support über die nächsten Jahre auslaufen zu lassen. Wer Apple Silicon nutzt – also die neueren Rechner –,
00:04:46bei dem ist alles bestens. Es bringt sogar Support für die neuen M5-Chips mit. Mein Fazit sieht so aus:
00:04:53Jahrelang war Homebrew gelinde gesagt eine Bequemlichkeit – einfach der schnellste Weg, Software auf einen
00:04:59Mac zu bekommen. Mit Version 6.0 wirkt es eher wie ein Kontrollpunkt, an dem der Code,
00:05:05der auf den Rechner gelangt, endlich beweisen muss, dass er vertrauenswürdig ist. Das ist ein großer Schritt. Der Paketmanager
00:05:10hat endlich zu dem Bedrohungsmodell aufgeschlossen, in dem der Rest von uns schon seit Jahren lebt. Das ist das Eigentliche
00:05:15hier – nicht die Versionsnummer 6.0 oder 6.1, sondern was sie mitbringt. Wenn euch solche Coding-Tipps
00:05:21und Tricks gefallen, abonniert unbedingt den BetterStack-Kanal. Wir sehen uns im nächsten Video!