Setup 2011

Trotz kleinerer Probleme macht mir Mac OS X 10.7 von Anfang an so viel Freude, dass ich den schwerelos fließenden Setup-Prozess dokumentieren möchte. Im ersten Schritt erstelle ich einen SuperDuper-Klon meiner Festplatte, anschließend übertrage ich alle relevanten Daten:

Da ich sämtliche Mediendaten schon vor längerer Zeit ausgelagert habe, enthält ~/Music im Wesentlichen die iTunes-Bibliothek selbst. ~/Library wird nur sehr selektiv migriert, neben der Keychain und den Browser-Lesezeichen übernehme ich vor allem Teile aus Application Support und natürlich den Scripts-Ordner.

Anschließend installiere ich XCode 4.2 aus dem Mac App Store und vergrabe mich für längere Zeit im Terminal. Übertragen werden die Bash-Konfiguration (.bash_profile), die SSH-Schlüssel (.ssh/), sowie Konfigurationsdateien für vim (.vimrc, .vim/), mutt (.muttrc, .mutt/, .mailcap), lbdb (.lbdbrc), Datenbanken (.my.cnf, .pgpass) sowie Webserver (nginx.conf, httpd.conf).

Weiter geht es mit der Kompilation meiner Arbeitsumgebung:

# vim: Apple liefert vim 7.3. ohne Clipboard-Unterstützung aus ./configure --prefix=/usr/local --with-features=huge make sudo make install # Berkeley DB: mutts Header Cache bedarf einer Datenbank ./configure --prefix=/usr/local make sudo make install # mutt ./configure --enable-imap --enable-smtp --with-curses --with-regex --enable-hcache --with-sasl=/usr --with-ssl --prefix=/usr/local make sudo make install # lbdb: mutt soll mit dem Adressbuch interagieren ./configure --prefix=/usr/local make sudo make install # urlview: ./configure --prefix=/usr/local make sudo make install # PCRE: nginx kann nicht ohne reguläre Ausdrücke ./configure --prefix=/usr/local make sudo make install # nginx ./configure --prefix=/usr/local --with-http_gzip_static_module make sudo make install # mod_wsgi ./configure --prefix=/usr/local make sudo make install # Django sudo python setup.py install # PostgreSQl ./configure --prefix=/usr/local make sudo make install # psycopg ./configure --prefix=/usr/local make sudo make install # MySQL 5.1 ./configure --prefix=/usr/local make sudo make install # mysqldb python setup.py build sudo python setup.py install # libjpeg ./configure --prefix=/usr/local make sudo make install # Python Imaging Library python setup.py build sudo python setup.py install

Abgesehen davon, dass MySQL 5.5 cmake erfordert (was sich wiederum nicht ohne Weiteres kompilieren lässt): Keine besonderen Vorkommnisse. Teile von PostgreSQL schweben schon in /usr/bin herum, deshalb muss .bash_profile eine gewisse Reihenfolge einhalten:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH:/Users/jan/Library/Scripts

Die Initialisierung von der Datenbanken (PostgreSQL: createuser, initdb und createdb, MySQL: sudo bin/mysql_install_db --user=_postgres) läuft ebenfalls erstaunlich glatt. Nach dem Import der Datenbank-Dumps für und dem Eintrag der lokalen Domains (*.django) in /etc/hosts sind sämtliche Web-Applikationen einsatzfähig.

Statt separate LaunchDaemons für nginx und PostgreSQL zu erstellen, verwende ich ein minimales Bash-Skript namens webstack:

#!/bin/bash sudo nginx cd ~ sudo -u _postgres /usr/local/bin/postgres -D /usr/local/pgsql/data & > /dev/null

LaTeX lässt sich dank der MacTeX-Distribution automatisch installieren, lediglich individuelle Schriften müssen TeX manuell zur Kenntnis gebracht werden.

Nachdem ich das Kernbackup mittels einiger symbolischer Links in ~/Backup zusammengestellt habe, ist das Setup beinahe abgeschlossen. Es fehlen lediglich einige Mac-Applikationen (1Password, LaunchBar, Typinator, Dropbox, ExpanDrive, MacVim, BBEdit, Yojimbo, Things, HTTP Client, QuickCursor, Parallels, Aperture, AppZapper, PCalc, Papers, Microsoft Office und Handbrake) deren Installation sich aber ähnlich langweilig gestaltet wie die Konfiguration von iCal für meine Google-Kalender und die Einrichtung der Safari-Erweiterung Ghostery.

Was bleibt? Die Erkenntnis, dass ich 85% meiner Arbeitsumgebung auch auf einem Linux-Rechner einrichten könnte, und trotzdem ausgesprochen zufrieden bin.