May 14

Eine einfache Möglichkeit aktuelle Versionen von Apache, PHP, Perl und MySQL auf den Mac zu bekommen, ist XAMPP zu installieren. Auch für Wechsler von anderen Betriebssystemen ist das interessant, da XAMPP auch für Windows, Linux und Solaris verfügbar ist. Der Vorteil von XAMPP ist, dass sich alle genannten Programme sehr einfach und ohne viel Konfigurationsaufwand installieren lassen und obendrein sogar kostenlos ist. Einziges fehlendes Feature ist das Starten beim Systemstart, das besonders für Web-Entwickler wichtig ist, das unter Mac OS X hinzuzufügen ist allerdings recht einfach:

Als erstes startet man Terminal, wechselt in den StartupItems-Ordner und erstellt einen Ordner für das neue StartupItem in den man auch gleich wechselt:

cd /System/Library/StartupItems/
sudo mkdir Xampp
cd Xampp/

In diesem Ordner müssen nun zwei Dateien namens StartupParameters.plist und Xampp (selber Name wie der StartupItem-Ordner) erstellt und die erforderlichen Rechte gesetzt werden:

sudo touch StartupParameters.plist Xampp
sudo chmod 0755 *

In der Datei “StartupParameters.plist” muss man nur eine Beschreibung einfügen:

{
  Description = "Xampp";
}

In der Datei “Xampp” müssen die Funktionen StartService(), StopService() und RestartService() gesetzt werden:

#!/bin/sh
#
# Xampp StartupItem script
#
. /etc/rc.common
StartService ()
{
  ConsoleMessage "Starting Apache..."
  /Applications/xampp/xamppfiles/mampp startapache
  ConsoleMessage "Starting MySQL..."
  /Applications/xampp/xamppfiles/mampp startmysql
}
StopService ()
{
  ConsoleMessage "Stopping Apache..."
  /Applications/xampp/xamppfiles/mampp stopapache
  ConsoleMessage "Stopping MySQL..."
  /Applications/xampp/xamppfiles/mampp stopmysql
}
RestartService ()
{
  StopService
  StartService
}
RunService "$1"

Voraussetzung für die Funktion ist, dass XAMPP im Programme-Ordner (“/Applications/xampp”) installiert wurde, und sich die Datei “mampp” im Ordner “/Applications/xampp/xamppfiles/” befindet, andernfalls muss man die Pfade in der Datei “Xampp” entsprechend anpassen. Beim nächsten Systemstart sollte XAMPP automatisch gestartet werden, andernfalls muss man Pfade bzw. Dateirechte überprüfen.

May 03

Mit einem einfachen “Trick” ist es unter Mac OS X 10.5 möglich selten benutzte Programme platzsparend auch über das Dock verfügbar zu machen, indem man einen Fächer, ein Gitter, oder eine Liste wie für Dokumente oder Downloads erzeugt.

Im Terminal legt man zuerst einen Programme-Ordner im Benutzerverzeichnis an:

mkdir Applications
touch Applications/.localized
killall Finder

Im Finder erscheint daraufhin der Ordner “Programme” mit dem typischen Programme-Icon:

Anschließend markiert man im Programme-Ordner, indem alle Programme abgelegt sind, die gewünschten Programme mit der Command-Taste. Auf ein markiertes Programm klickt man mit der rechten Maustaste und wählt “Alias erzeugen” aus:

Diese verschiebt man in den vorhin erstellen Ordner “Programme” und benennt diese um, damit die Anzeige später besser lesbar wird entfernt man “.app Alias” vom Ende der Aliase:

Abschließend zieht man den soeben erstellten Ordner “Programme” in das Dock um eine Verknüpfung zu erstellen. Die Programme können nun mit einem einzigen Klick mehr schnell gestartet werden:

Apr 22

TextMate kann auch vom Terminal aus gestartet werden und bringt deshalb das eigene Kommando “mate” mit, mit dem auch mehrere Dateien auf einmal rekursiv geöffnet werden können. Dies ist vor allem für die Entwicklung von Anwendungen etwa mit Ruby on Rails sehr nützlich.

Zuerst muss man im Terminal den Ordner “bin” im Home-Verzeichnis des Benutzers anlegen:

mkdir ~/bin

Nachdem man TextMate in “Programme” installiert hat, legt man einen neuen symbolischen Link zu “mate” an:

ln -s /Applications/TextMate.app/Contents/Resources/mate ~/bin/mate

Damit nun “mate” von der Konsole/Terminal aus aufgerufen werden kann, muss die PATH-Variable angepasst werden:

export PATH=$PATH:~/bin

Um die PATH-Variable automatisch zu setzen, muss die vorherige Zeile in die Datei “~/.profile” eingefügt werden (bereits vorhandene Einträge sollten dabei nicht gelöscht werden) – dies erledigen wir am besten gleich mit “mate”:

mate ~/.profile

Datei speichern und beim erneuten Starten der Konsole sollte die PATH-Variable wieder gesetzt sein und “mate” somit sofort gestartet werden können.

Apr 21

Mac OS X 10.5 bringt im Gegensatz zu seinem Vorgänger eine neue Firewall mit. Damit man im lokalen Netzwerk (LAN) Dateien zwischen Computern austauschen kann, ist es nun nicht mehr ausreichend in den “Systemeinstellungen” unter “Sharing” “File-Sharing” zu aktivieren:

Zusätzlich muss unter “Sicherheit” die “Firewall” auf “Zugriff für bestimmte Dienste und Programme festlegen” umgestellt werden (die aufgelisteten Dienste gelten nur für diese Einstellung), damit eingehende Verbindungen möglich werden:

Das hat wiederum zur Folge, dass auch für alle Programme, die Netzwerkzugriff benötigen (z.B. Adium), eine Regel festgelegt werden muss. Wenn ein Programm zum ersten Mal eine Verbindung ins Netzwerk herstellen möchte, erscheint deshalb die Meldung “Möchten Sie, dass das Programm “Adium.app” eingehende Netzwerkverbindungen akzeptiert?”:

Hier sollte man Unterscheiden, ob wirklich eingehende Verbindungen notwendig sind. Ein SVN-Client etwa benötigt keine eingehenden Verbindungen, Adium hingegen schon. Alle Programme, für die bereits eine Entscheidung getroffen wurde, werden in “Firewall” aufgelistet, wo auch die Einstellung nachträglich geändert werden kann:

Apr 20

Erzeugt man unter Mac OS X 10.5 (Leopard) mit dem Befehl “rails anwendungsname” eine neue Anwendung und versucht diese nach “cd anwendungsname” anschließend mit “ruby script/server” zu starten, so erhält man in der Standardkonfiguration die folgende Fehlermeldung:

$ rails anwendungsname
$ cd anwendungsname
$ ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
Exiting
/Users/username/Sites/anwendungsname/config/environment.rb:44: undefined method `time_zone=' for #<Rails::Configuration:0x1242df8> (NoMethodError)
from /Library/Ruby/Gems/1.8/gems/rails-2.0.2/lib/initializer.rb:47:in `run'
from /Users/username/Sites/anwendungsname/config/environment.rb:13
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.4/bin/../lib/mongrel/rails.rb:147:in `rails'
... 20 levels...
from /Library/Ruby/Gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `require'
from script/server:3

Die installierte Version wurde von “gems.rubyonrails.org” geladen die für Entwickler gedacht ist, deshalb entfernt man diese Quelle mit dem Befehle “gem sources -r http://gems.rubyonrails.org” (je nach Konfiguration auch: “gem sources -r http://gems.rubyonrails.org/”) aus dem Cache:

$ gem sources -r http://gems.rubyonrails.org
Bulk updating Gem source index for: http://gems.rubyonrails.org/
http://gems.rubyonrails.org removed from sources

Danach muss man die alten “fehlerhaften” Versionen mit dem Befehle “gem uninstall rails” deinstallieren:

$ gem uninstall rails
Select gem to uninstall:
1. rails-2.0.2
2. rails-2.0.2.9216
3. All versions
> 3
Successfully uninstalled rails-2.0.2
Successfully uninstalled rails-2.0.2.9216

Abschließend muss noch eine brauchbare Version von Rails mit “sudo gem install rails” installieren, schließlich wollen wir damit auch arbeiten:

$ sudo gem install rails --include-dependencies
Password:
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed rails-2.0.2
1 gem installed

Erzeugt man nun eine neue Anwendung und startet diese, sollte alles wie gewünscht funktionieren:

$ ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).
** Rails signals registered.  HUP => reload (without restart).  It might not work well.
** Mongrel 1.1.4 available at 0.0.0.0:3000
** Use CTRL-C to stop.

Auch die Ausgabe im Browser liefert das gewünschte Ergebnis: