Installation Asterisk 1.2.x auf Mac OS X

Asterisk kann auf dem Mac ab OS X 10.2.8 („Jaguar“) zum Laufen gebracht werden. Empfehlenswert ist jedoch die aktuellste Version (z.Zt. 10.4.8, „Tiger“). Eine Installation auf Mac OS X Server ist ebenfalls möglich.

[Anmerkung]Anmerkung

Unterstützung für PCI-Karten ist in Asterisk auf MacOS X bisher noch nicht möglich. Will man also seinen Server direkt mit dem öffentlichen Telefonnetz verbinden, muss man auf einen externen Gateway-Provider zurückgreifen. [9]Das „Unicall for MacOS X“-Projekt arbeitet an einer Lösung.

Asterisk ist für verschiedene Anwendungen (z.B. MeetMe-Konferenzen) zu Timing-Zwecken auf Zaptel-Hardware angewiesen. Als Alternative kann man den mitgelieferten ztdummy-Treiber kompilieren - was aber auf MacOS X kaum möglich sein dürfte.

Es kann in Ausnahmefällen auch zu Problemen mit den Formaten WAV und WAV49 kommen (GSM funktioniert).

Asterisk ist auf MacOS X insgesamt noch keine ganz „runde“ Lösung. Zu Testzwecken oder für den Heimgebrauch zwar problemlos möglich, für größere Installationen aber (noch?) nicht empfehlenswert, wenn man auf die genannten Funktionen angewiesen ist.

Möglicherweise stehen bald unter http://www.mactelephony.net/ (ehemals http://www.astmasters.net/, inzwischen nicht mehr erreichbar) „Binaries“, also vorkompilierte Pakete, zum Download bereit. [10]Bezüglich der Aktualität der Software schadet es aber nicht, Asterisk neu zu kompilieren.

Vorausetzung sind die bei MacOS X mitgelieferten oder im Internet von Apple verfügbaren Developer Tools („Xcode“).

[Tipp]Tipp

Falls Sie die DVD nicht greifbereit haben, können Sie Xcode auch von der Apple-Webseite http://developer.apple.com/tools/xcode/ downloaden.

Installieren Sie diese, falls Sie das noch nicht getan haben (dieses Paket legt das Verzeichnis /Developer auf Ihrer Festplatte an). Danach steht z.B. der Compiler gcc und weitere Tools zur Verfügung.

Laden Sie von http://www.asterisk.org/ (oder direkt http://ftp.digium.com/pub/) die Asterisk-Quellen (Sources) in der gewünschten Version herunter. Sie können das im Browser machen oder auf der Kommandozeile (statt http:// ist auch ftp:// möglich):

$  curl -O http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz

Danach wird das komprimierte Archiv entpackt:

$  tar -xvzf asterisk-1.2-current.tar.gz
asterisk-1.2.13/
asterisk-1.2.13/build_tools/
asterisk-1.2.13/build_tools/make_svn_branch_name
asterisk-1.2.13/build_tools/mkdep
asterisk-1.2.13/build_tools/make_build_h
[...]

Jetzt müssen wir in das gerade entpackte Verzeichnis wechseln und Asterisk mit make kompilieren. Bitte beachten Sie, dass 1.2.13 vielleicht nicht mehr die aktuellste Version ist; passen Sie also die Befehle entsprechend an.

$  cd asterisk-1.2.13/
$  make

Da dieser Vorgang je nach Leistung Ihres Rechners einige Zeit dauern kann, empfehle ich an dieser Stelle eine Tasse Tee[11] oder Kaffee. [12]Der Testrechner war allerdings schon nach etwa 3 Minuten fertig, was sich in dieser erfreulichen Botschaft ausdrückt:

[...]
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +               make install                +
 +-------------------------------------------+

Die Software ist jetzt kompiliert. Der nächste Schritt muss mit Root-Rechten ausgeführt werden. Hierzu bedienen wir uns des Programms sudo.

Jetzt nur noch alle Dateien automatisch mit sudo make install installieren, also in die richtigen Verzeichnisse kopieren lassen:

$  sudo make install
[...]
 +---- Asterisk Installation Complete -------+
 +                                           +
 +    YOU MUST READ THE SECURITY DOCUMENT    +
 +                                           +
 + Asterisk has successfully been installed. +
 + If you would like to install the sample   +
 + configuration files (overwriting any      +
 + existing config files), run:              +
 +                                           +
 +               make samples                +
 +                                           +
 +-----------------  or ---------------------+
 +                                           +
 + You can go ahead and install the asterisk +
 + program documentation now or later run:   +
 +                                           +
 +              make progdocs                +
 +                                           +
 + **Note** This requires that you have      +
 + doxygen installed on your local system    +
 +-------------------------------------------+

Und da wir sofort loslegen wollen, lassen wir auch noch mit sudo make samples die Beispiel-Konfiguration erstellen:

$  sudo make samples
[...]
done

Fertig! Asterisk ist auf Ihrem System installiert. Mit dem Befehl asterisk -V können Sie die installierte Version herausfinden (bitte achten Sie auf das großgeschriebene V):

$  asterisk -V
Asterisk 1.2.13

Ihren Asterisk-Server können Sie mit sudo asterisk starten und mit sudo asterisk -rx "stop now" beenden.

Asterisk automatisch beim Hochfahren starten

Unsere Installation hat noch eine Schwäche: Wenn Sie Ihren Computer neu starten, läuft der Asterisk-Server nicht mehr. Auf einem „Production“-Server ist es natürlich wünschenswert, dass Asterisk immer automatisch startet (während man das auf einem Arbeitsplatzrechner eher nicht will). Unter Mac OS X ist das Vorgehen etwas anders, als man es von anderen *nixen kennt. Man richtet sich am besten ein Startup Item ein, indem man im Verzeichnis /Library/StartupItems/ ein neues Verzeichnis Asterisk/ anlegt. Darin erstellt man mit einem Text-Editor seiner Wahl eine Datei StartupParameters.plist mit dem Inhalt:

{
  Description = "Asterisk PBX";
  Provides = ("Asterisk");
  OrderPreference = "Last";
  Messages =
  {
    start = "Starting Asterisk";
    stop  = "Stopping Asterisk";
  };
}

Diese Datei sagt dem SystemStarter, was unser Startup-Item bereitstellt und in welcher Rehenfolge es relativ zu den anderen Startup-Items geladen werden soll.

Jetzt brauchen wir noch eine zweite Datei mit dem Namen Asterisk, nämlich ein Shell-Skript, das dem SystemStarter erklärt, wie Asterisk zu starten und zu beenden ist:

#!/bin/sh

# ohne Parameter geben wir aus, wie dieses Skript aufzurufen ist:
#
if [ -z $1 ] ; then
  echo "Usage: $0 [start|stop|restart] "
  exit 1
fi

# die Funktionen für Startup-Skripte einbinden:
#
test -r /etc/rc.common || exit 1
. /etc/rc.common

# das ausführbare Asterisk-Programm finden:
#
if [ -x /usr/sbin/asterisk ]; then
  ASTERISK="/usr/sbin/asterisk"
else
  if [ -x /opt/sbin/asterisk ]; then
    ASTERISK="/opt/sbin/asterisk"
  else
    if [ -x asterisk ]; then
      ASTERISK="asterisk"
    else
      ConsoleMessage "Cannot find asterisk"
      exit 1
    fi
  fi
fi

# Funktion zum Starten von Asterisk:
#
StartService ()
{
  if [ ! -f /var/run/asterisk.pid ]; then
    ConsoleMessage "Starting Asterisk"
    $ASTERISK
  else
    ConsoleMessage "Asterisk already running"
  fi
}

# Funktion zum Stoppen von Asterisk:
#
StopService ()
{
  if [ -f /var/run/asterisk.pid ]; then
    ConsoleMessage "Stopping Asterisk"
    $ASTERISK -rx "stop now"
  else
    ConsoleMessage "Asterisk not running"
  fi
}

# Funktion zum Neu-Starten von Asterisk:
#
RestartService ()
{
  if [ -f /var/run/asterisk.pid ]; then
    ConsoleMessage "Reloading Asterisk configuration"
    $ASTERISK -rx reload
  else
    StartService
  fi
}

# je nach Parameter die entsprechende oben definierte Funktion
# aufrufen:
#
RunService "$1"

Es ist wichtig, dass diese Dateien dem Benutzer root und der Gruppe wheel gehören und kein anderer Schreibrechte an diesen Dateien hat. Wir machen also Folgendes im Terminal:

$  cd /Library/StartupItems/
$  sudo chown -R root:wheel Asterisk
$  sudo chmod -R 754 Asterisk

Fertig. Wenn wir jetzt unseren Rechner hochfahren, wird Asterisk automatisch gestartet. Wir können das selbst im Terminal testen:

$  sudo SystemStarter start Asterisk
$  ps ax | grep ast
  521  ??  Ss     0:00.13 /usr/sbin/asterisk
  528  p1  S+     0:00.00 grep ast
$  sudo SystemStarter stop Asterisk
  538  p1  S+     0:00.00 grep ast


[10] Zur Drucklegung fand sich ein etwas älteres Binary auf http://www.dacrib.net/rant/ (ggf. auf der Seite nach „Asterisk“ suchen).

[11] Vorzugsweise einen Darjeeling First Flush FTGFOP von der Teekampagne

[12] Jedes kleine Kind weiß, dass man Kaffee nicht unbeaufsichtigt rumstehen lässt!


Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch