Setup 2012

Ein neues Jahr, ein neues Arbeitsgerät. Mit einer Mischung aus Neugier und Ungeduld stürze ich mich in die Konfiguration eines MacBook Air mit Mountain Lion (OS X 10.8). Im Vergleich zur letzten Setup-Runde ändere ich die Vorgehensweise etwas:

  1. SuperDuper-Klon der alten Festplatte
  2. Kompilation/Installation der Unix-Anwendungen
  3. Übertragung der Konfigurationsdateien aus ~/
  4. Installation der Mac-Anwendungen
  5. Übertragung der regulären Daten (~/Documents etc)

Vor die Kompilation hat Cupertino die Installation der XCode-Umgebung gesetzt, die mittlerweile (Version 4.4) eine kleine Tücke bereit hält: gcc steht erst dann zur Verfügung, wenn man die Command Line Tools manuell in den XCode-Einstellungen aktiviert.

Das von Apple gelieferte vim bietet weiterhin keine Clipboard-Unterstützung, daher gehört ein vollwertiges vim 7.3 in /usr/local:

./configure --prefix=/usr/local --with-features=huge make sudo make install

Für mutt 1.5.21 wird nach wie vor die Berkeley DB (db 5.1.25) benötigt, um Caching-Funktionen nutzen zu können, sowie die Little Brother Database (lbdb-0.38.1) für den Zugriff auf das systemweite Adressbuch – statt der für Snow Leopard gepatchten Version gibt es mittlerweile einen dedizierten Fork für Mac OS X. Die Kompilation von urlview entfällt, da ich mittlerweile über einen Python-Handler für URLs verfüge:

# Berkeley DB tar -xzvf db-5.1.25.tar.gz cd db-5.1.25/build_unix ../dist/configure --prefix=/usr/local make sudo make install # Little Brother Database tar -xzvf tgray-lbdb-v0.38.1-0-gf324721.tar.gz cd tgray-lbdb-d09025a ./configure --prefix=/usr/local make sudo make install # mutt tar -xzvf mutt-1.5.21.tar.gz cd mutt-1.5.21 ./configure --enable-imap --enable-smtp --with-curses --with-regex --enable-hcache --with-sasl=/usr --with-ssl --prefix=/usr/local make sudo make install

00:37:09. Der Webstack verursacht wenig Probleme, mit Ausnahme von mod_wsgi 3.4, das unter einer fehlenden Verlinkung in OS X 10.8 leidet. Auch nginx 1.2.3 harmoniert nicht uneingeschränkt mit OS X 10.8: Es benötigt die PCRE-Bibliothek, um reguläre Ausdrücke verarbeiten zu können. Unter Mac OS X 10.7 musste die Bibliothek nur nachträglich installiert werden, 10.8 wird dagegen mit einem 32-bit-PCRE ausgeliefert (warum auch immer), das die nginx-Kompilation nachhaltig behindert. Die Lösung besteht darin, den Quellcode (pcre 8.3.1) herunterzuladen und direkt zu referenzieren. Django 1.4.1, PostgreSQL 9.2 und psycopg 2.4.5 laufen dagegen glatt durch. Erfreulicherweise lässt sich jetzt auch cmake 2.8.9 – das von Oracle präferierte Kompilationsframework ab MySQL 5.5 – problemlos installieren, so dass ich endlich auf das aktuelle MySQL 5.5.27 (samt MySQLdb 1.2.3) umsteigen kann:

# mod_wsgi tar -xzvf mod_wsgi-3.4.tar.gz cd mod_wsgi-3.4 # create the missing link sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain ./configure --prefix=/usr/local make sudo make install # nginx tar -xzvf pcre-8.3.1.tar-gz tar -xzvf nginx-1.2.3.tar.gz cd nginx-1.2.3 ./configure --prefix=/usr/local --with-http_gzip_static_module --with-pcre=../pcre-8.31 # Django tar -xzvf Django-1.4.1.tar.gz cd Django-1.4.1 sudo python setup.py install # PostgreSQL tar -xzvf postgresql-9.2.0.tar.gz cd postgresql-9.2.0 ./configure --prefix=/usr/local make sudo make install # psycopg2 tar -xzvf psycopg2-2.4.5.tar.gz cd psycopg2-2.4.5 python setup.py build sudo python setup.py install # cmake tar -xzvf cmake-2.8.9.tar.gz cd cmake-2.8.9 ./bootstrap --prefix=/usr/local make sudo make install # MySQL tar -xzvf mysql-5.5.27.tar.gz cd mysql-5.5.27 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local make sudo make install # MySQLdb tar -xzvf MySQL-python-1.2.3.tar.gz cd MySQL-python-1.2.3 python setup.py build sudo python setup.py install

01:49:17. PostgreSQL und MySQL müssen natürlich noch initalisiert werden:

# PostgreSQL sudo mkdir /usr/local/data/postgres sudo chown _postgres:wheel /usr/local/data/postgres sudo -u _postgres /usr/local/bin/initdb -D /usr/local/data/postgres # _postgres needs a password psql -U _postgres postgres ALTER USER _postgres WITH PASSWORD 'new_password'; \q createuser -d -P myuser createdb db1 psql db1 < ~/Sites/site1/dbdump/db1.sql # MySQL cd /usr/local sudo ./scripts/mysql_install_db --user=_mysql sudo ./bin/mysqladmin -u root password 'new_password' sudo ./bin/mysqladmin -u root - localhost password 'new_password' mysql -u root -p GRANT ALL ON db2.* TO myuser@localhost IDENTIFIED BY 'new_password'; exit mysql -u myuser -p CREATE DATABASE db2; exit mysql -u myuser db2 -p < ~/Sites/site2/dbdump/db2.sql

02:22:45. Außerdem werden noch einige Python-Pakete (und Libjpeg) benötigt:

# cssmin tar -xzvf cssmin-0.1.4.tar.gz cd cssmin-0.1.4 sudo python setup.py install # libjpeg tar -xzvf jpegsrc.v8d.tar.gz cd jpeg-8d ./configure make make test sudo make install # Python Imaging Library tar -xzvf Imaging-1.1.7.tar.gz cd Imaging-1.1.7 sudo python setup.py install

02:46:19. Dann die Haskell-Plattform samt Pandoc und Yesod. Yesod wird Zeit meines Lebens ein Zukunftsprojekt bleiben, aber Pandoc allein lohnt den Aufwand (zumal ich mit Cabal den leichten Weg gehe):

# Glasgow Haskell Compiler tar -xzvf ghc-7.6.1-x86_64-apple-darwin.tar.bz2 cd ghc-7.6.1 ./configure --prefix=/usr/local sudo make install # Haskell Platform tar -xzvf haskell-platform-2012.2.0.0.tar.gz cd haskell-platform-2012.2.0.0 ./configure --prefix=/usr/local make sudo make install # Pandoc sudo cabal install --global Pandoc # Yesod sudo cabal install --global Yesod

– und schließlich das traditionelle Ritual nach der MacTeX 2012-Installation:

texhash updmap --enable MixedMap pad.map

03:23:14. Kommen wir zu Schritt 3, dem Befüllen von ~, /etc/apache2, /usr/local/conf und /usr/local/bin:

03:57:01. Die beiden nächsten Schritte sind nicht weiter erwähnenswert. Zum Schluss degradiere ich mich sicherheitshalber zum Standardnutzer und aktiviere das Dateigewölbe. TTL: 04:51:27.