Ein MacOS Entwickler Setup Guide

Nachdem ich vor hatte mir einen neuen Arbeitsrechner mit MacOS High Sierra zu kaufen, stand die Frage im Raum:  w_ie bekomme ich meine gesamte Umgebung auf meinen neuen Mac_ bzw. konkreter wie kann ich meine Arbeitsumgebung verlustfrei aufsetzen  ohne den Datenmüll von 5 Jahren Nutzung mitzunehmen, aber ohne gleichzeitig Daten oder Konfigurationen zu verlieren.

Time Machine, Homebrew und dotfiles – ein mächtiges Bündnis zum Setup eines neuen Rechners

Ich musste also planen ein User Verzeichnis inkl. privater und insbesondere Business Daten auf einen neuen Rechner zu migrieren.

Option 1: Time Machine Backup einspielen

Würde funktionieren, dann hätte ich aber in meinem Users Verzeichnis wieder einen ganzen Sack voller Überbleibsel von hunderten Softwarepaketen die ich nicht mehr benötige und die das System auch nicht stabiler machen. Zwar gibt es beim Mac keine Registry, aber die Caches/UserPreferences/Startup Objekte und dielen anderen Daten die in Deinem Home Verzeichnis in dem versteckten Ordner Library liegen werden leider beim Löschen einen App Packages nicht automatisch mit aufgeräumt. Und das würde ich mir mit dem einspielen des Backup doch wieder einfangen, was ich nicht wollte.

Option 2: Rechner neu aufsetzen

Hierbei steht mehr Aufwand an, aber auch die Möglichkeit mal wieder das eigene System zu überdenken und zu optimieren. Hierzu gehört dennoch, meine Daten aus dem Time Machine Backup zu nutzen, so dass ein manuelles kopieren übers WLAN/USB Stick o.ä. vom alten Rechner aus nicht nötig ist.

Meine macOS Entwickler Installationsdokumentation

Meine Wahl war ziemlich leicht: Option 2 mit einem letztlich mehrstufigen Prozess. Zunächst stand die Frage an: W_ie bekomme ich meine Daten auf den neuen Rechner?_ Dies war am Ende einfacher als ich dachte. Ich habe an dem neuen Mac einfach den Migrationsassistenten gestartet und das letzte Backup eingespielt. Der eigentliche Trick  dabei war: die Daten in ein neues User Profil (welches nicht genutzt werden soll und später wieder gelöscht wird!) zu importieren, die Option dazu hat man im Migrationsasisstenten (aber nur wenn ein gleichnamiger Benutzer bereits auf dem System existiert).

Die ersten Schritte sind also:

  • Mac installieren und Setup durchführen (dazu unten mehr)
  • Dein echtes User Profil aufsetzen
  • Migrationsasisstenten starten und Time Machine Backup in neues User Profil „backup“ importieren

Nachdem das Einspielen nach einigen Stunden durchgelaufen war, bin ich in meinem eigentlichen User Profil ins Terminal gewechselt und habe dort die Berechtigungen meiner Backup Daten auf meinen echten Benutzer übertragen:

sudo chown -R kevin /Users/backup/*

Danach kann man ganz bequem einzelne Daten aus dem Homeverzeichnis von „backup“ in das eigene Verzeichnis verschieben. Um es leichter zu haben, habe ich einfach alles in ein „backup“ Ordner in meinem Homeordner verschoben, aus dem ich später selektiv rausholen konnte, was ich benötigte:

mkdir ~/backup-mac/
mv /Users/backup/.* ~/backup-mac/
mv /Users/backup/* ~/backup-mac/

Und schon kann man in den Systemeinstellungen den „backup“ User wieder löschen.

Jetzt kommt der spannende Teil…

Frage: wie installiere ich meine Umgebung und all die die benötigte Software und Libraries? Antwort: dotfiles und homebrew

Dotfiles und Homebrew

Ich habe in der Vergangenheit bereits mein dotfiles Repo und meine persönliche Mac Developer Setup Anleitung bei Github geteilt. Dann habe ich angefangen, diese Ideen zu vereinen und einen einfachen Installer für meine Umgebung zu bauen. Alles nur eine Sammlung von Shell Skripten, die aber ihren Zweck erfüllen und mit deren Hilfe ich nun bereits auf mehrere Macs aufgesetzt habe.

Mein Installer Repo für dotfiles, homebrew, oh-my-zsh und verschiedenste Desktop Applikationen: https://github.com/kevinpapst/mac-os-setup

Der Installer fragt vor jedem Schritt nach ob er ausgeführt werden soll und es gibt dabei die folgende Auswahl:

  1. Un-brewed Software
  2. Homebrew Software
  3. Applikations- und MacOS Einstellungen
  4. Dotfiles

Unbrewed Software

Hierzu gehören die Pakete, welche nicht bei Homebrew verfügbar sind, aber dennoch über das Terminal installiert werden können:

Homebrew Software

Die Liste der Software die installiert wird, wäre etwas zu lang um sie hier aufzuführen. Dank des Homebrew „bundle“ Addons verwalte ich alles in einem Brewfile, schaut einfach selbst rein.

Applikations- und MacOS Einstellungen

Hier werden u.a. die Einstellungen für

Dotfiles

Meine .dotfiles sind aktuell noch sehr simpel gestrickt, nur eine kleine Sammlung von Skripten und Umgebungseinstellungen für die bash und zsh.

Gerade die Auseinandersetzung mit der verwendeten Shell und den eigenen .dotfiles ist sehr empfehlenswert für jeden Entwickler. Schaut einfach mal in meine Repos rein und/oder erstellt Euch aus der großen Liste an veröffentlichten Beispielen Euer eigenes Repo.

Und verlinkt doch Euer Repo unten in den Kommentaren, ich finde es total spannend zu sehen, wie andere ihre Umgebung optimieren und sich ihre Arbeit erleichtern!