Kapitel 2. Installation und "Hello World"

1. Einleitung

Ein nicht immer ganz zu Unrecht bestehendes Vorurteil gegenüber Asterisk ist die Behauptung, dass man mindestens 2 bis 3 Tage Webseiten und Dokumentation studieren muss, um überhaupt auch nur irgendetwas Lauffähiges zu Stande zu bekommen. Diese Hürde ist für viele Interessierte zu hoch oder es ist die Mühe und Zeit nicht wert. Wer zu denen gehört, die sich nicht lange mit einem theoretischen Unterbau beschäftigen möchten, sondern möglichst schnell ein Ergebnis sehen wollen, ist in diesem Kapitel genau richtig aufgehoben. In 30 Minuten haben Sie Ihre erste funktionierende Asterisk-Telefonanlage. Versprochen!

Bei Programmierbüchern gibt es ganz am Anfang meistens ein „Hello World“-Beispiel. Die Aufgabe des „Hello World“-Programmes ist die Ausgabe des Strings „Hello World“ auf dem Bildschirm. Es ist quasi ein Standardbeispiel, um die grundlegende Form und Syntax einer Programmiersprache aufzuzeigen und ein schnelles erstes Erfolgserlebnis zu vermitteln. Das folgende Kapitel überträgt diese Praxis auf das Thema Telefonanlagen mit Asterisk.

2. Eine Minimal-Telefonanlage

Wie sieht die einfachst mögliche Telefonanlage aus? Zwei Telefone und eine Black-Box, die diese beiden Telefone sinnvoll miteinander verbindet. Die Black-Box ist ein gewöhnlicher PC, auf dem wir die Asterisk-Software installieren und der von nun an unsere Telefonanlage sein wird. Die beiden Telefone sind so genannte „Softphones“, also Telefone in Software, die wir ebenfalls auf einem PC ausführen. Somit genügt für das folgende Beispiel ein einfacher PC, auf dem Sie eine aktuelle Linux-Distribution installieren, als Grundlage für unseren Kick-Start. [1]

Die Aufgabe

  • Einen frisch mit Linux installierten PC zu einer Mini-Telefonanlage umfunktionieren

  • Zwei VoIP-Telefone einrichten und die Nummern 2000 und 2001 zuweisen

  • Vom Telefon 2000 das Telefon 2001 anrufen und umgekehrt

Voraussetzungen

Sie benötigen für die Installation von Asterisk einen halbwegs aktuellen PC mit genügend Speicher. Es geht auch mit älterer Hardware, allerdings kann ich dann mein 30-Minuten Versprechen nicht einlösen und es macht auch weniger Spaß, damit zu arbeiten. Konkret sollte es mindestens ein 500 MHz Pentium-System mit 256 MByte Arbeitsspeicher (RAM) und einer 10 GByte Festplatte sein. Asterisk läuft auf allen gängigen Linux-Distributionen. Diese können Sie entweder im Geschäft kaufen oder aus dem Internet herunterladen.[2]

Bitte achten Sie darauf, dass die Linux-Distribution aktuell ist, und verwenden Sie nicht eine 2 Jahre alte Heft-CD, die noch irgendwo im Schrank liegt.

Die einzelnen Installations- und Konfigurationsanweisungen sind in diesem Buch exemplarisch für ein Linux-System auf Basis einer Debian-Distribution[3] beschrieben. Weiterhin werden die entsprechenden Anweisungen auf der Kommandozeile einer Shell eingegeben.[4]

Welche Asterisk-Version ist empfehlenswert?

Für 99 Prozent aller Asterisk-Installationen wird es wahrscheinlich vollkommen egal sein, ob man ein Asterisk 1.2.x oder ein Asterisk 1.4.x verwendet. Deshalb lautet die persönliche Empfehlung des Autors bis Mitte 2007 die Version 1.2.x und erst ab Mitte 2007 die Version 1.4.x einzusetzen. Gerade bei derart zentralen Applikationen sollte stets die Stabilität das wichtigste Entscheidungskriterium sein, und die Version 1.4 wird der Einschätzung des Autors nach bis Mitte 2007 benötigen, um eine vergleichbar gute Stabiliät wie Version 1.2 zu erhalten.

Welche Linux-Distribution ist die richtige für einen Asterisk-Server?

Die Diskussion über die ideale Linux-Distribution bekommt immer sehr schnell technisch-religiöse Züge. Der Autor hat sich in diesem Buch für ein Debian Linux (stable) entschieden. Dennoch haben wir gerade in diesem Kapitel sehr viel Platz für Installationsanleitungen auf anderen Linux-Distributionen und anderen Betriebssystemen eingeräumt, um ihnen hier auch eine alternative Wahl zu unterstützen. Bei späteren Kapiteln (z.B. ISDN) kann diese Vielfalt nicht in gleicher Weise aufrecht erhalten werden. Zum Teil gibt es für andere Betriebssysteme keine passenden Treiber oder die Installation ist so kompliziert, dass der Rahmen dieses Buches gesprengt werden würde. Aus diesem Grund gehen wir, wenn nichts anders gesagt wird, immer von einem Debian Linux aus.

Warum keine fertigen Asterisk-Pakete mit rpm oder apt-get installieren?

Es gibt einen ganz einfachen Grund, warum an dieser Stelle im Buch bei den Installationsanleitungen für Asterisk nicht auf die in den Distributionen bereits enthaltenen Asterisk-Pakete zurückgegriffen wird, und der heißt: Aktualität!

Keine Standard-Linux-Distribution hat auch nur halbwegs aktuelle Asterisk-Pakete in ihren Stable-Zweigen. Da Asterisk ein sehr lebendiges und wachsendes Softwareprojekt ist, ist es aber auch nicht sinnvoll, eine 1.0-er Version zu installieren, wenn bereits eine 1.2-er lange auf dem Markt und einfach viel besser ist.

[Anmerkung]Anmerkung

Da von Distributionen gebaute Pakete einige Vorteile haben und ein Update-Zyklus einfacher zu realisieren ist, hoffe ich darauf, dass dieses Kapitel irgendwann einmal auf fertige Standardpakete aus den Stable-Versionen zugreifen kann. Das liegt aber noch in der Zukunft.

Als Lohn für die Arbeit mit dem Übersetzen der Quellpakete winkt Ihnen das Wissen, Ihr Asterisk-System auf dem neuesten Stand zu halten, ohne dass Sie dafür auf aktuellere Pakete für Ihre Distribution warten müssen.

Asterisk 1.2

Installation Asterisk 1.2.x auf Debian Linux

Diese Installationsanleitung setzt ein frisch installiertes Debian GNU/Linux 3.1 (a.k.a. sarge) voraus.

[Wichtig]Wichtig

Bitte beachten Sie, das die Installationsanleitung nur für die zum Zeitpunkt der Veröffentlichung dieses Buches aktuelle Debian Version 3.1 und nicht für neuere Debian Versionen geeignet ist. Ein Update der Anleitung für die Debian Version 4.0 finden Sie in der zukünftigen Version des Buches. Teile davon können Sie bereits jetzt unter http://www.das-asterisk-buch.de/unstable/ einsehen.

Wir empfehlen zur Installation das Netzwerkinstallations-CD-Image, welches ungefähr 100 MB gross ist und unter http://www.debian.org/releases/sarge/debian-installer/ downgeloadet werden kann. Eine Debian GNU/Linux-Installationsanleitung steht unter http://www.debian.org/releases/sarge/i386/ und ein allgemeines Anwenderhandbuch unter http://debiananwenderhandbuch.de.

Nach erfolgreicher Installation des Debian Linux-Systems melden Sie sich als Benutzer root am System an und führen Sie die hier nachfolgend angegebenen Befehle aus. Bitte achten Sie darauf, keinen Schritt auszulassen und die Schritte als Benutzer root durchzuführen.

Als Erstes stellen Sie mit einem apt-get update sicher, dass apt-get alle aktuellen Paketlisten zur Verfügung hat:

debian:~# apt-get update
OK   http://ftp.de.debian.org stable/main Packages
OK   http://ftp.de.debian.org stable/main Release
OK   http://security.debian.org stable/updates/main Packages
OK   http://security.debian.org stable/updates/main Release
OK   http://security.debian.org stable/updates/contrib Packages
OK   http://security.debian.org stable/updates/contrib Release
OK   http://ftp.de.debian.org stable/main Sources
OK   http://ftp.de.debian.org stable/main Release
Paketlisten werden gelesen... Fertig
debian:~#

Um sicherzugehen, dass alle Pakete auf dem neuesten Stand sind, führen Sie zur Sicherheit noch ein apt-get -y upgrade aus:

debian:~# apt-get -y upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
debian:~#

Jetzt müssen Sie mit apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev noch ein paar Pakete nachinstallieren, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

debian:~# apt-get -y install openssl zlibc libkrb5-dev libncurses5-dev libssl-dev zlib1g-dev
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
  comerr-dev libkadm55
Vorgeschlagene Pakete:
  doc-base krb5-doc ca-certificates
Die folgenden NEUEN Pakete werden installiert:
  comerr-dev libkadm55 libkrb5-dev libncurses5-dev libssl-dev openssl
  zlib1g-dev zlibc
0 aktualisiert, 8 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 6025kB Archive geholt werden.
Nach dem Auspacken werden 18,8MB Plattenplatz zusätzlich benutzt.
Hole:1 http://ftp.de.debian.org stable/main libkadm55 1.3.6-2sarge3 [165kB]
Hole:2 http://ftp.de.debian.org stable/main libncurses5-dev 5.4-4 [1038kB]
Hole:3 http://ftp.de.debian.org stable/main libssl-dev 0.9.7e-3sarge4 [2555kB] 
Hole:4 http://ftp.de.debian.org stable/main openssl 0.9.7e-3sarge4 [906kB]     
Hole:5 http://ftp.de.debian.org stable/main zlib1g-dev 1:1.2.2-4.sarge.2 [488kB]
Hole:6 http://ftp.de.debian.org stable/main zlibc 0.9j-7 [245kB]               
Hole:7 http://ftp.de.debian.org stable/main comerr-dev 2.1-1.37-2sarge1 [53,0kB]
Hole:8 http://ftp.de.debian.org stable/main libkrb5-dev 1.3.6-2sarge3 [574kB]  
Es wurden 6025kB in 57s geholt (104kB/s)                                       
Wähle vormals abgewähltes Paket libkadm55.
(Lese Datenbank ... 32512 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke libkadm55 (aus .../libkadm55_1.3.6-2sarge3_i386.deb) ...
Wähle vormals abgewähltes Paket libncurses5-dev.
Entpacke libncurses5-dev (aus .../libncurses5-dev_5.4-4_i386.deb) ...
Wähle vormals abgewähltes Paket libssl-dev.
Entpacke libssl-dev (aus .../libssl-dev_0.9.7e-3sarge4_i386.deb) ...
Wähle vormals abgewähltes Paket openssl.
Entpacke openssl (aus .../openssl_0.9.7e-3sarge4_i386.deb) ...
Creating directory /etc/ssl
Wähle vormals abgewähltes Paket zlib1g-dev.
Entpacke zlib1g-dev (aus .../zlib1g-dev_1%3a1.2.2-4.sarge.2_i386.deb) ...
Wähle vormals abgewähltes Paket zlibc.
Entpacke zlibc (aus .../archives/zlibc_0.9j-7_i386.deb) ...
Wähle vormals abgewähltes Paket comerr-dev.
Entpacke comerr-dev (aus .../comerr-dev_2.1-1.37-2sarge1_i386.deb) ...
Wähle vormals abgewähltes Paket libkrb5-dev.
Entpacke libkrb5-dev (aus .../libkrb5-dev_1.3.6-2sarge3_i386.deb) ...
Richte libkadm55 ein (1.3.6-2sarge3) ...

Richte libncurses5-dev ein (5.4-4) ...
Richte libssl-dev ein (0.9.7e-3sarge4) ...

Richte openssl ein (0.9.7e-3sarge4) ...

Richte zlib1g-dev ein (1.2.2-4.sarge.2) ...
Richte zlibc ein (0.9j-7) ...

Richte comerr-dev ein (2.1-1.37-2sarge1) ...

Richte libkrb5-dev ein (1.3.6-2sarge3) ...
debian:~#

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/ herunter:

debian:~# cd /usr/src
debian:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
--18:30:46--  http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
           => `asterisk-1.2-current.tar.gz'
Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164
Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 10,584,113 [application/x-gzip]

100%[====================================>] 10,584,113   224.71K/s    ETA 00:00

18:31:36 (207.67 KB/s) - »asterisk-1.2-current.tar.gz« gespeichert [10584113/10584113]

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.2-current.tar.gz entpackt werden:

debian:/usr/src# 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
asterisk-1.2.13/build_tools/make_version_h
asterisk-1.2.13/build_tools/make_defaults_h
asterisk-1.2.13/aesopt.h
asterisk-1.2.13/utils.c
asterisk-1.2.13/keys/
[...]
asterisk-1.2.13/cli.c
asterisk-1.2.13/io.c
asterisk-1.2.13/ulaw.c
asterisk-1.2.13/logger.c
debian:/usr/src# 

Die entpackten Dateien müssen jetzt kompiliert werden.[5]Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.13 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

debian:/usr/src# cd asterisk-1.2.13
debian:/usr/src/asterisk-1.2.13# make
if cmp -s .cleancount .lastclean ; then echo ; else \
        make clean; cp -f .cleancount .lastclean;\

[...]

make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/asterisk-1.2.13/stdtime'
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, but +
 + cannot be run before being installed by   +
 + running:                                  +
 +                                           +
 +               make install                +
 +-------------------------------------------+

Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich an die vorgesehenen Stellen im Dateisystem kopiert) werden:

debian:/usr/src/asterisk-1.2.13# make install
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

 +---- 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    +
 +-------------------------------------------+

Geschafft! Die soeben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit make samples:

debian:/usr/src/asterisk-1.2.13# make samples
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

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):

debian:/usr/src/asterisk-1.2.13# asterisk -V
Asterisk 1.2.13

Installation Asterisk 1.2.x auf Ubuntu Linux

Da Ubuntu auch von der CD als Live-System gebootet werden kann, müssen Sie es nicht zwangsläufig auf der Festplatte installieren (gut zum Testen). Diese Anleitung wurde mit einem Ubuntu 6.06.1 LTS (Dapper Drake) ausgeführt bzw. setzt dieses voraus. Das entsprechende ISO-Image finden Sie unter http://de.archive.ubuntu.com/ubuntu-releases/6.06/ubuntu-6.06.1-desktop-i386.iso. Wir benutzen die Desktop-CD, der gleiche Installationsweg funktioniert aber auch bei der Server-CD. Hierbei sollte aber vor der Installation von Asterisk noch ein sudo apt-get update und ein sudo apt-get -y upgrade durchgeführt werden, um sicherzustellen, dass alle aktuellen Security Fixes installiert sind.

Weitere Informationen zu Ubuntu finden Sie auf http://www.ubuntu.com.

[Tipp]Tipp

Eine Liste von FTP-Mirrors zum Download des ISO-Images stehen auf http://www.ubuntu.com/products/GetUbuntu/download#lts.

Da auf einem Ubuntu-System root-Befehle immer über sudo (siehe http://de.wikipedia.org/wiki/Sudo) erfolgen, können Sie diese Installationsanleitung mit dem Benutzer ubuntu ausführen. Bitte öffnen Sie nach dem Starten von Ubuntu einfach ein Terminal-Fenster (im Menü oben links -> Applications -> Accessories -> Terminal).

Als Erstes stellen Sie mit einem sudo apt-get update sicher, dass apt-get alle aktuellen Paketlisten zur Verfügung hat:

ubuntu@ubuntu:~$ sudo apt-get update
Get:1 http://security.ubuntu.com dapper-security Release.gpg [191B]
Hit http://security.ubuntu.com dapper-security Release
Get:2 http://archive.ubuntu.com dapper Release.gpg [189B]                  
Get:3 http://archive.ubuntu.com dapper-updates Release.gpg [191B]
Hit http://security.ubuntu.com dapper-security/main Packages
Hit http://archive.ubuntu.com dapper Release
Hit http://security.ubuntu.com dapper-security/restricted Packages  
Hit http://security.ubuntu.com dapper-security/main Sources
Hit http://archive.ubuntu.com dapper-updates Release
Hit http://security.ubuntu.com dapper-security/restricted Sources   
Hit http://archive.ubuntu.com dapper/main Packages
Hit http://archive.ubuntu.com dapper/restricted Packages
Hit http://archive.ubuntu.com dapper/main Sources
Hit http://archive.ubuntu.com dapper/restricted Sources
Hit http://archive.ubuntu.com dapper-updates/main Packages
Hit http://archive.ubuntu.com dapper-updates/restricted Packages
Hit http://archive.ubuntu.com dapper-updates/main Sources
Hit http://archive.ubuntu.com dapper-updates/restricted Sources
Fetched 3B in 1s (2B/s)  
Reading package lists... Done
ubuntu@ubuntu:~$ 

Jetzt müssen Sie mit sudo apt-get -y install make gcc g++ libncurses5-dev libssl-dev zlib1g-dev noch ein paar Pakete nachinstallieren, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

uubuntu@ubuntu:~$ sudo apt-get -y install make gcc g++ libncurses5-dev libssl-dev zlib1g-dev
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  binutils cpp cpp-4.0 g++-4.0 gcc-4.0 libc6-dev libstdc++6-4.0-dev
  linux-kernel-headers
Suggested packages:
  binutils-doc cpp-doc gcc-4.0-locales gcc-4.0-doc lib64stdc++6 manpages-dev
  autoconf automake1.9 libtool flex bison gcc-doc libc6-dev-amd64 lib64gcc1
  glibc-doc libstdc++6-4.0-doc stl-manual
Recommended packages:
  libmudflap0-dev
The following NEW packages will be installed:
  binutils cpp cpp-4.0 g++ g++-4.0 gcc gcc-4.0 libc6-dev libncurses5-dev
  libssl-dev libstdc++6-4.0-dev linux-kernel-headers make zlib1g-dev
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 15.6MB of archives.
After unpacking 58.9MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com dapper/main cpp-4.0 4.0.3-1ubuntu5 [1987kB]
Get:2 http://security.ubuntu.com dapper-security/main binutils 2.16.1cvs20060117-1ubuntu2.1 [1407kB]

[...]

Setting up g++-4.0 (4.0.3-1ubuntu5) ...
Setting up libstdc++6-4.0-dev (4.0.3-1ubuntu5) ...
Setting up g++ (4.0.3-1) ...

ubuntu@ubuntu:~$

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/ herunter:

ubuntu@ubuntu:~$ cd /usr/src
ubuntu@ubuntu:/usr/src$ wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
--09:36:42--  http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
           => `asterisk-1.2-current.tar.gz'
Resolving ftp.digium.com... 69.16.138.164
Connecting to ftp.digium.com|69.16.138.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10,584,113 (10M) [application/x-gzip]

100%[====================================>] 10,584,113   109.65K/s    ETA 00:00

09:38:29 (97.21 KB/s) - `asterisk-1.2-current.tar.gz' saved [10584113/10584113]

ubuntu@ubuntu:/usr/src$

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.2-current.tar.gz entpackt werden:

ubuntu@ubuntu:/usr/src$ 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
asterisk-1.2.13/build_tools/make_version_h
asterisk-1.2.13/build_tools/make_defaults_h
asterisk-1.2.13/aesopt.h
asterisk-1.2.13/utils.c
asterisk-1.2.13/keys/
[...]
asterisk-1.2.13/cli.c
asterisk-1.2.13/io.c
asterisk-1.2.13/ulaw.c
asterisk-1.2.13/logger.c
ubuntu@ubuntu:/usr/src$ 

Die entpackten Dateien müssen jetzt kompiliert werden.[6]Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.13 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich den obligatorischen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

ubuntu@ubuntu:/usr/src$ cd asterisk-1.2.13/
ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ make
if cmp -s .cleancount .lastclean ; then echo ; else \
                make clean; cp -f .cleancount .lastclean;\


[...]

make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/asterisk-1.2.13/stdtime'
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, but +
 + cannot be run before being installed by   +
 + running:                                  +
 +                                           +
 +               make install                +
 +-------------------------------------------+
ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ 

Die Software ist jetzt kompiliert und muss nur noch mit sudo make install installiert (sprich in die richtigen Verzeichnisse kopiert) werden:

ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ sudo make install
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo;

[...]

make[1]: Leaving directory `/usr/src/asterisk-1.2.13/stdtime'
 +---- 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    +
 +-------------------------------------------+

ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ 

Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit einem sudo make samples:

ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ sudo make samples
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; then echo;

[...]

for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
                cat /var/lib/asterisk/sounds/$x.gsm >> /var/spool/asterisk/voicemail/default/1234/busy.gsm ; \
        done
ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ 

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

ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ sudo asterisk -V
Asterisk 1.2.13
ubuntu@ubuntu:/usr/src/asterisk-1.2.13$ 
[Warnung]Warnung

Dadurch, dass Ubuntu normalen root-Zugriff nur über sudo zulässt, müssen Sie bei allen Beispielen in diesem Buch bei Aufrufen von Asterisk immer ein sudo davorschreiben. Wenn Sie als Benutzer ubuntu Asterisk starten, werden Sie eine Fehlermeldung bekommen, da der Benutzer ubuntu nicht in allen Verzeichnissen schreiben kann.

Der richtige Aufruf zum Starten von Asterisk muss also immer wie folgt aussehen: sudo asterisk -c oder sudo asterisk

Installation Asterisk 1.2.x auf OpenSUSE Linux

Diese Installationsanleitung setzt ein aktuelles OpenSUSE 10.2 aus dem stabilen Entwicklungszweig voraus. Falls Sie nicht bereits eine fertig installierte OpenSUSE-Distribution haben, können Sie sich die entsprechenden Installationsmedien auf folgender Seite herunterladen: http://de.opensuse.org/Stabile_Version.

Um Asterisk zu kompilieren, benötigen Sie einige zusätzliche Pakete. Diese können Sie mit dem SuSE Administrationstool YaST installieren. Bitte starten Sie dazu YaST.

Wählen Sie im Installationsfenster als Filter "Schemata" aus, dort finden Sie dann als installierbare Schemata unter "Entwicklung" die Einträge "Grundlegende Entwicklung", "C/C++ Entwicklung" und "Linux-Kernel-Entwicklung".

Wechseln Sie dann wieder auf "Suchen" als Filter und suchen Sie nach folgenden Stichworten: "openssl, krb5, ncurses, zlib". Installieren Sie jeweils das gleichnamige Paket, als auch das mit dem Zusatz "devel", also z.B. "openssl" und "openssl-devel". Nach erfolgreicher Einrichtung der Buildumgebung können dann im nächsten Schritt die Asterisk-Sourcen heruntergeladen und kompiliert werden.

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/ herunter:

linux:~# cd /usr/src
linux:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
--18:30:46--  http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
           => `asterisk-1.2-current.tar.gz'
Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164
Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 10,584,113 [application/x-gzip]

100%[====================================>] 10,584,113   224.71K/s    ETA 00:00

18:31:36 (207.67 KB/s) - »asterisk-1.2-current.tar.gz« gespeichert [10584113/10584113]

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.2-current.tar.gz entpackt werden:

linux:/usr/src# 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
asterisk-1.2.13/build_tools/make_version_h
asterisk-1.2.13/build_tools/make_defaults_h
asterisk-1.2.13/aesopt.h
asterisk-1.2.13/utils.c
asterisk-1.2.13/keys/
[...]
asterisk-1.2.13/cli.c
asterisk-1.2.13/io.c
asterisk-1.2.13/ulaw.c
asterisk-1.2.13/logger.c
linux:/usr/src# 

Die entpackten Dateien müssen jetzt kompiliert werden.[7]Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.13 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt vielleicht ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

linux:/usr/src# cd asterisk-1.2.13
linux:/usr/src/asterisk-1.2.13# make
if cmp -s .cleancount .lastclean ; then echo ; else \
        make clean; cp -f .cleancount .lastclean;\

[...]

make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/asterisk-1.2.13/stdtime'
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, but +
 + cannot be run before being installed by   +
 + running:                                  +
 +                                           +
 +               make install                +
 +-------------------------------------------+

Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich in die richtigen Verzeichnisse kopiert) werden:

linux:/usr/src/asterisk-1.2.13# make install
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

 +---- 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    +
 +-------------------------------------------+

Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit einem make samples:

linux:/usr/src/asterisk-1.2.13# make samples
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

done

Fertig! Asterisk ist auf Ihrem System installiert. Mit dem Befehl asterisk -V können Sie die installierte Version herausfinden (bitte achten Sie darauf, dass es sich um ein großgeschriebenes V handelt):

linux:/usr/src/asterisk-1.2.13# asterisk -V
Asterisk 1.2.13

Installation Asterisk 1.2.x auf Fedora Linux

Diese Installationsanleitung setzt ein frisch installiertes Fedora Core 6 "Zod" voraus. Eine Liste von Mirrors zum Download des ISO-Images findet man unter http://fedora.redhat.com/Download/mirrors.html . Auf einem Mirror Ihrer Wahl laden Sie dann das CD- oder besser gleich das DVD-Image herunter. Mit der gebrannten DVD können Sie nun den Rechner booten und Fedora installieren.

Bitte loggen Sie sich danach als Benutzer root am System an und führen Sie alle hier angegebenen Befehle mit diesem Benutzer aus.

Als Erstes stellen Sie mit einem yum -y update sicher, dass Ihr Fedora Linux-System nur aktuelle Pakete installiert hat:

[root@fc6 ~]# yum -y update
Loading "installonlyn" plugin
Setting up Update Process
Setting up repositories
core                      100% |=========================| 1.1 kB    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
updates                   100% |=========================| 1.2 kB    00:00     
Reading repository metadata in from local files

[...]

Replaced: bluez-pin.i386 0:0.30-5
Complete!
[root@fc6 ~]# 

Am besten starten Sie nach dem Update den Server neu mit init 6.

Jetzt müssen Sie mit yum -y groupinstall "Development Tools" noch einige Pakete installieren:

[root@fc6 ~]# yum -y groupinstall "Development Tools"
Loading "installonlyn" plugin
Setting up Group Process
Setting up repositories
Setting up repositories
Reading repository metadata in from local files
Package make - 1:3.81-1.1.i386 already installed and latest version

[...]

  Installing: automake17                   ####################### [53/53] 

Installed: autoconf.noarch 0:2.59-12 automake.noarch 0:1.9.6-2.1 automake14.noarch 0:1.4p6-13 automake15.noarch 0:1.5-16 automake16.noarch 0:1.6.3-8 automake17.noarch 0:1.7.9-7 bison.i386 0:2.3-2.1 byacc.i386 0:1.9-29.2.2 cscope.i386 0:15.5-15.fc6.1 ctags.i386 0:5.6-1.1 cvs.i386 0:1.11.22-6.fc6 diffstat.i386 0:1.41-1.2.2 doxygen.i386 1:1.5.1-1 elfutils.i386 0:0.123-1.fc6 flex.i386 0:2.5.4a-41.fc6 frysk.i686 0:0.0.1.2006.12.22.rh1-1.fc6 gcc.i386 0:4.1.1-30 gcc-c++.i386 0:4.1.1-30 gcc-gfortran.i386 0:4.1.1-30 gdb.i386 0:6.5-15.fc6 indent.i386 0:2.2.9-14.fc6 libtool.i386 0:1.5.22-6.1 ltrace.i386 0:0.5-6.45svn.fc6 oprofile.i386 0:0.9.2-3.fc6 oprofile-gui.i386 0:0.9.2-3.fc6 patchutils.i386 0:0.2.31-2.2.2 pfmon.i386 0:3.2-0.060621.7.1 pstack.i386 0:1.2-7.2.2 python-ldap.i386 0:2.2.0-2.1 rcs.i386 0:5.7-30.1 redhat-rpm-config.noarch 0:8.0.45-6 rpm-build.i386 0:4.4.2-32 strace.i386 0:4.5.14-3 subversion.i386 0:1.4.2-2.fc6 swig.i386 0:1.3.31-0.fc6 systemtap.i386 0:0.5.10-1.fc6 texinfo.i386 0:4.8-14.fc6 valgrind.i386 1:3.2.1-4
Dependency Installed: cairo-java.i386 0:1.0.5-3.fc6 elfutils-libs.i386 0:0.123-1.fc6 glib-java.i386 0:0.2.6-3.fc6 glibc-devel.i386 0:2.5-3 glibc-headers.i386 0:2.5-3 gmp.i386 0:4.1.4-9.fc6 imake.i386 0:1.0.2-3 libgconf-java.i386 0:2.12.4-5.fc6 libgfortran.i386 0:4.1.1-30 libgomp.i386 0:4.1.1-30 libgtk-java.i386 0:2.8.7-2.fc6 libpfm.i386 0:3.2-0.060621.8.1 libstdc++-devel.i386 0:4.1.1-30 perl-URI.noarch 0:1.35-3 systemtap-runtime.i386 0:0.5.10-1.fc6
Complete!
[root@fc6 ~]# 

Zum Schluss noch ein yum -y install libtermcap-devel ncurses-devel openssl-devel ausführen, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

[root@fc6 ~]# yum -y install libtermcap-devel ncurses-devel openssl-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories

[...]

Installed: libtermcap-devel.i386 0:2.0.8-46.1 ncurses-devel.i386 0:5.5-24.20060715 openssl-devel.i386 0:0.9.8b-8.3.fc6
Dependency Installed: e2fsprogs-devel.i386 0:1.39-7.fc6 krb5-devel.i386 0:1.5-7 zlib-devel.i386 0:1.2.3-3
Complete!
[root@fc6 ~]# 

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz in das Verzeichnis /usr/src/ herunter:

fc6:~# cd /usr/src
fc6:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
--18:30:46--  http://ftp.digium.com/pub/asterisk/asterisk-1.2-current.tar.gz
           => `asterisk-1.2-current.tar.gz'
Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164
Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 10,584,113 [application/x-gzip]

100%[====================================>] 10,584,113   224.71K/s    ETA 00:00

18:31:36 (207.67 KB/s) - »asterisk-1.2-current.tar.gz« gespeichert [10584113/10584113]

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.2-current.tar.gz entpackt werden:

fc6:/usr/src# tar xvzf asterisk-1.2-current.tar.gz 
asterisk-1.2.14/
asterisk-1.2.14/build_tools/
asterisk-1.2.14/build_tools/make_svn_branch_name
asterisk-1.2.14/build_tools/mkdep
asterisk-1.2.14/build_tools/make_build_h
asterisk-1.2.14/build_tools/make_version_h
asterisk-1.2.14/build_tools/make_defaults_h
asterisk-1.2.14/aesopt.h
asterisk-1.2.14/utils.c
asterisk-1.2.14/keys/
[...]
asterisk-1.2.14/cli.c
asterisk-1.2.14/io.c
asterisk-1.2.14/ulaw.c
asterisk-1.2.14/logger.c
fc6:/usr/src#

Die entpackten Dateien müssen jetzt kompiliert werden.[8]Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version 1.2.14 vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

fc6:/usr/src# cd asterisk-1.2.14
fc6:/usr/src/asterisk-1.2.14# make
if cmp -s .cleancount .lastclean ; then echo ; else \
        make clean; cp -f .cleancount .lastclean;\

[...]

make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/usr/src/asterisk-1.2.14/stdtime'
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, but +
 + cannot be run before being installed by   +
 + running:                                  +
 +                                           +
 +               make install                +
 +-------------------------------------------+
[root@fc6 asterisk-1.2.14]#

Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich an die vorgesehenen Stellen im Dateisystem kopiert) werden:

fc6:/usr/src/asterisk-1.2.14# make install
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

 +---- 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    +
 +-------------------------------------------+

Geschafft! Die soeben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit make samples:

fc6:/usr/src/asterisk-1.2.14# make samples
build_tools/make_version_h > include/asterisk/version.h.tmp
if cmp -s include/asterisk/version.h.tmp include/asterisk/version.h ; 
then echo;

[...]

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):

fc6:/usr/src/asterisk-1.2.14# asterisk -V
Asterisk 1.2.14

Installation Asterisk 1.2.x auf FreeBSD

Diese Installationsanleitung setzt ein frisch installiertes FreeBSD (aktuell ist Version 6.1) voraus. ISO-Images für eine entsprechende i386er FreeBSD-Installation finden Sie unter ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1/. Eine Installationsanleitung befindet sich bei http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/install.html.

Nach erfolgreicher Installation melden Sie sich als Benutzer root am System an und führen Sie die hier nachfolgend angegebenen Befehle aus. Bitte achten Sie darauf, keinen Schritt auszulassen und die Schritte als Benutzer root durchzuführen.

[Warnung]Warnung

Da FreeBSD seit dem Release der Version 6.0 aktuelle Asterisk-Pakete beinhaltet hat, beschreibt diese Anleitung nicht die Installation aus den Asterisk-Quellen, sondern aus dem FreeBSD Portage-Tree.

Die Installation erfolgt dabei ganz einfach, einen aktuellen Portage-Tree vorausgesetzt, und zwar wie folgt:

[Tipp]Tipp

Es gibt verschiedene Möglichkeiten, den Portage-Tree aktuell zu halten. Eine Variante besteht in einem Supfile /etc/supfile-ports mit folgendem Inhalt:

*default host=cvsup6.de.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
ports-all

Danach kann wie folgt der Portsdb-Index aktualisiert werden:

# cvsup -L 2 -g /etc/supfile-ports
# portsdb -Uu

Nach der Aktualisierung des Portage-Trees kann Asterisk dann einfach mit dem folgenden Befehl installiert werden:

# cd /usr/ports/net/asterisk
# make install distclean

Nach der Installation des Basispaketes werden dann die Asterisk-Add-ons installiert:

# cd /usr/ports/net/asterisk-addon
# make install distclean
[Warnung]Warnung

Wenn ISDN genutzt werden soll, dann empfiehlt sich der Einsatz des net/asterisk-bristuff-Paketes anstelle von net/asterisk. Allerdings ist die Installation von ISDN und von chan_capi unter FreeBSD nicht trivial und wird derzeitig vom Portage System nicht unterstützt. Eine genaue Besprechung der Vorgehensweise würde den Rahmen dieses Buches sprengen und wird daher hier nicht beschrieben. Digium unterhält eine Asterisk-BSD Mailingliste, auf der man weitere Hilfe bekommen kann: http://lists.digium.com/mailman/listinfo/asterisk-bsd.

Soll Asterisk beim Booten automatisch starten, so ist in der Datei /etc/rc.conf die folgende Zeile einzutragen:

asterisk_enable="YES"
[Warnung]Warnung

Unter FreeBSD werden die Konfigurationsdateien der nachinstallierten Softwarepakete unter /usr/local/etc/ gespeichert, um diese von den Systemdateien unter /etc/ zu trennen. Daher liegen die Asterisk-Konfigurationsdateien nicht wie oft in diesem Buch beschrieben in /etc/asterisk/, sondern in /etc/local/etc/asterisk/.

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

Asterisk 1.4

Installation Asterisk 1.4.x auf Debian Linux

Diese Installationsanleitung setzt ein frisch installiertes Debian GNU/Linux 3.1 (a.k.a. sarge) voraus.

[Wichtig]Wichtig

Bitte beachten Sie, das die Installationsanleitung nur für die zum Zeitpunkt der Veröffentlichung dieses Buches aktuelle Debian Version 3.1 und nicht für neuere Debian Versionen geeignet ist. Ein Update der Anleitung für die Debian Version 4.0 finden Sie in der zukünftigen Version des Buches. Teile davon können Sie bereits jetzt unter http://www.das-asterisk-buch.de/unstable/ einsehen.

Wir empfehlen zur Installation das Netzwerkinstallations-CD-Image, welches ungefähr 100 MB gross ist und unter http://www.debian.org/releases/sarge/debian-installer/ downgeloadet werden kann. Eine Debian GNU/Linux-Installationsanleitung steht unter http://www.debian.org/releases/sarge/i386/ und ein allgemeines Anwenderhandbuch unter http://debiananwenderhandbuch.de.

Bitte loggen Sie sich als Benutzer root am System an und führen Sie alle hier angegebenen Befehle mit diesem Benutzer aus.

Als Erstes stellen Sie mit einem apt-get update sicher, dass apt-get alle aktuellen Paketlisten zur Verfügung hat:

debian:~# apt-get update
OK   http://ftp.de.debian.org stable/main Packages
OK   http://ftp.de.debian.org stable/main Release
OK   http://security.debian.org stable/updates/main Packages
OK   http://security.debian.org stable/updates/main Release
OK   http://security.debian.org stable/updates/contrib Packages
OK   http://security.debian.org stable/updates/contrib Release
OK   http://ftp.de.debian.org stable/main Sources
OK   http://ftp.de.debian.org stable/main Release
Paketlisten werden gelesen... Fertig

Um sicherzugehen, dass alle Pakete auf dem neuesten Stand sind, führen Sie noch ein apt-get -y upgrade aus:

debian:~# apt-get -y upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Jetzt müssen Sie mit apt-get -y install libncurses5-dev noch ein Paket nachinstallieren, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

debian:~# apt-get -y install libncurses5-dev
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden NEUEN Pakete werden installiert:
  libncurses5-dev
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0B von 1038kB Archiven geholt werden.
Nach dem Auspacken werden 5296kB Plattenplatz zusätzlich benutzt.
Wähle vormals abgewähltes Paket libncurses5-dev.
(Lese Datenbank ... 21874 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke libncurses5-dev (aus .../libncurses5-dev_5.4-4_i386.deb) ...
Richte libncurses5-dev ein (5.4-4) ...
debian:~# 

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz in das Verzeichnis /usr/src/ herunter:

debian:~# cd /usr/src
debian:/usr/src# wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
--18:53:00--  http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
           => `asterisk-1.4-current.tar.gz'
Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164
Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 10,928,902 [application/x-gzip]

100%[====================================>] 10,928,902   230.71K/s    ETA 00:00

18:53:47 (227.00 KB/s) - »asterisk-1.4-current.tar.gz« gespeichert [10928902/10928902]

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.4-current.tar.gz entpackt werden:

debian:/usr/src# tar xvzf asterisk-1.4-current.tar.gz 
asterisk-1.4.0/
asterisk-1.4.0/build_tools/
asterisk-1.4.0/build_tools/mkpkgconfig
asterisk-1.4.0/build_tools/get_moduleinfo
asterisk-1.4.0/build_tools/mkdep
asterisk-1.4.0/build_tools/get_makeopts
asterisk-1.4.0/build_tools/make_version

[...]

asterisk-1.4.0/menuselect/mxml/COPYING
asterisk-1.4.0/menuselect/mxml/CHANGES
asterisk-1.4.0/menuselect/mxml/mxml-file.c
asterisk-1.4.0/menuselect/mxml/install-sh
asterisk-1.4.0/menuselect/mxml/mxml.pc
debian:/usr/src# 

Asterisk 1.4 ist die erste Version, die den allgemein üblichen autoconf-Mechanismus benutzt. Als Erstes muss also im Asterisk-Verzeichnis ein ./configure aufgerufen werden:

debian:/usr/src# cd asterisk-1.4.0/
debian:/usr/src/asterisk-1.4.0# ./configure 
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for uname... /bin/uname
checking for gcc... gcc

[...]

configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile
config.status: creating include/asterisk/autoconfig.h

               .$$$$$$$$$$$$$$$=..      
            .$7$7..          .7$$7:.    
          .$$:.                 ,$7.7   
        .$7.     7$$$$           .$$77  
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7 
$$$       .7$$$$$$$$$$$$$$$$      :$$$. 
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.  
$$$        $$$   7$$$7  .$$$    .$$$.   
$$$$             $$$$7         .$$$.    
7$$$7            7$$$$        7$$$      
 $$$$$                        $$$       
  $$$$7.                       $$  (TM)     
   $$$$$$$.           .7$$$$$$  $$      
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : i686
debian:/usr/src/asterisk-1.4.0# 

Asterisk muss jetzt kompliliert werden.[13]Dies geschieht mit dem Befehl make.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

debian:/usr/src/asterisk-1.4.0# make
make[1]: Entering directory `/usr/src/asterisk-1.4.0/menuselect'
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes

[...]

   [LD] abstract_jb.o acl.o aescrypt.o aeskey.o aestab.o alaw.o app.o ast_expr2.o ast_expr2f.o asterisk.o astmm.o autoservice.o callerid.o cdr.o channel.o chanvars.o cli.o config.o cryptostub.o db.o devicestate.o dns.o dnsmgr.o dsp.o enum.o file.o fixedjitterbuf.o frame.o fskmodem.o http.o image.o indications.o io.o jitterbuf.o loader.o logger.o manager.o md5.o netsock.o pbx.o plc.o privacy.o rtp.o say.o sched.o sha1.o slinfactory.o srv.o stdtime/localtime.o strcompat.o tdd.o term.o translate.o udptl.o ulaw.o utils.o editline/libedit.a db1-ast/libdb1.a -> asterisk
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +               make install                +
 +-------------------------------------------+
debian:/usr/src/asterisk-1.4.0# 

Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich: in die vorgesehenen Verzeichnisse kopiert) werden:

debian:/usr/src/asterisk-1.4.0# make install
make[1]: Für das Ziel »depend« ist nichts zu tun.
make[1]: Für das Ziel »depend« ist nichts zu tun.

[...]

for x in ; do /usr/bin/install -c -m 755 $x /usr/lib/asterisk/modules ; done
make[1]: Leaving directory `/usr/src/asterisk-1.4.0/main'
 +---- 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    +
 +-------------------------------------------+
debian:/usr/src/asterisk-1.4.0# 

Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit einem make samples:

debian:/usr/src/asterisk-1.4.0# make samples
mkdir -p /etc/asterisk
for x in configs/*.adsi; do \
        if [ ! -f /etc/asterisk/$x ]; then \
                /usr/bin/install -c -m 644 $x /etc/asterisk/`/usr/bin/basename $x` ; \
        fi ; \

[...]

for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
        cat /var/lib/asterisk/sounds/$x.gsm >> /var/spool/asterisk/voicemail/default/1234/busy.gsm ; \
done
debian:/usr/src/asterisk-1.4.0# 

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

debian:/usr/src/asterisk-1.4.0# asterisk -V
Asterisk 1.4.0
debian:/usr/src/asterisk-1.4.0# 

Installation Asterisk 1.4.x auf Ubuntu Linux

Da Ubuntu auch von der CD als Live-System gebootet werden kann, müssen Sie es nicht zwangsläufig auf der Festplatte installieren (gut zum Testen). Diese Anleitung wurde mit einem Ubuntu 6.06.1 LTS (Dapper Drake) ausgeführt bzw. setzt dieses voraus. Das entsprechende ISO-Image finden Sie unter http://de.archive.ubuntu.com/ubuntu-releases/6.06/ubuntu-6.06.1-desktop-i386.iso. Wir benutzen die Desktop-CD. Der gleiche Installationsweg funktioniert aber auch bei der Server-CD. Hierbei sollte aber vor der Installation von Asterisk noch ein sudo apt-get update und ein sudo apt-get -y upgrade durchgeführt werden, um sicherzustellen, dass alle aktuellen Security Fixes installiert sind.

Weitere Informationen zu Ubuntu finden Sie auf http://www.ubuntu.com.

[Tipp]Tipp

Eine Liste von FTP-Mirrors zum Download des ISO-Images finden Sie auf http://www.ubuntu.com/products/GetUbuntu/download#lts.

Da auf einem Ubuntu-System root-Befehle immer über sudo (siehe http://de.wikipedia.org/wiki/Sudo) erfolgen, können Sie diese Installationsanleitung mit dem Benutzer ubuntu ausführen. Bitte öffnen Sie nach dem Starten von Ubuntu einfach ein Terminal-Fenster (im Menü oben links -> Applications -> Accessories -> Terminal).

Als Erstes stellen Sie mit einem sudo apt-get update sicher, dass apt-get alle aktuellen Paketlisten zur Verfügung hat:

ubuntu@ubuntu:~$ sudo apt-get update
Get:1 http://security.ubuntu.com dapper-security Release.gpg [191B]
Hit http://security.ubuntu.com dapper-security Release
Get:2 http://archive.ubuntu.com dapper Release.gpg [189B]                  
Get:3 http://archive.ubuntu.com dapper-updates Release.gpg [191B]
Hit http://security.ubuntu.com dapper-security/main Packages
Hit http://archive.ubuntu.com dapper Release
Hit http://security.ubuntu.com dapper-security/restricted Packages  
Hit http://security.ubuntu.com dapper-security/main Sources
Hit http://archive.ubuntu.com dapper-updates Release
Hit http://security.ubuntu.com dapper-security/restricted Sources   
Hit http://archive.ubuntu.com dapper/main Packages
Hit http://archive.ubuntu.com dapper/restricted Packages
Hit http://archive.ubuntu.com dapper/main Sources
Hit http://archive.ubuntu.com dapper/restricted Sources
Hit http://archive.ubuntu.com dapper-updates/main Packages
Hit http://archive.ubuntu.com dapper-updates/restricted Packages
Hit http://archive.ubuntu.com dapper-updates/main Sources
Hit http://archive.ubuntu.com dapper-updates/restricted Sources
Fetched 3B in 1s (2B/s)  
Reading package lists... Done
ubuntu@ubuntu:~$ 

Jetzt müssen Sie mit sudo apt-get -y install make gcc g++ libncurses5-dev noch ein paar Pakete nachinstallieren, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

ubuntu@ubuntu:~$ sudo apt-get -y install make gcc g++ libncurses5-dev
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  binutils cpp cpp-4.0 g++-4.0 gcc-4.0 libc6-dev libstdc++6-4.0-dev
  linux-kernel-headers
Suggested packages:
  binutils-doc cpp-doc gcc-4.0-locales gcc-4.0-doc lib64stdc++6 manpages-dev
  autoconf automake1.9 libtool flex bison gcc-doc libc6-dev-amd64 lib64gcc1
  glibc-doc libstdc++6-4.0-doc stl-manual
Recommended packages:
  libmudflap0-dev
The following NEW packages will be installed:
  binutils cpp cpp-4.0 g++ g++-4.0 gcc gcc-4.0 libc6-dev libncurses5-dev
  libstdc++6-4.0-dev linux-kernel-headers make
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.1MB of archives.
After unpacking 52.6MB of additional disk space will be used.
Get:1 http://security.ubuntu.com dapper-security/main binutils 2.16.1cvs20060117-1ubuntu2.1 [1407kB]

[...]

Setting up g++-4.0 (4.0.3-1ubuntu5) ...
Setting up libstdc++6-4.0-dev (4.0.3-1ubuntu5) ...
Setting up g++ (4.0.3-1) ...

ubuntu@ubuntu:~$ 

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz in das Verzeichnis /usr/src herunter:

ubuntu@ubuntu:/usr/src$ wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
--11:16:56--  http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
           => `asterisk-1.4-current.tar.gz'
Resolving ftp.digium.com... 216.27.40.102, 69.16.138.164
Connecting to ftp.digium.com|216.27.40.102|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10,928,902 (10M) [application/x-gzip]

100%[====================================>] 10,928,902   228.90K/s    ETA 00:00

11:17:44 (228.19 KB/s) - `asterisk-1.4-current.tar.gz' saved [10928902/10928902]

ubuntu@ubuntu:/usr/src$ 

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.4-current.tar.gz entpackt werden:

ubuntu@ubuntu:/usr/src$ tar xvzf asterisk-1.4-current.tar.gz 
asterisk-1.4.0/
asterisk-1.4.0/build_tools/
asterisk-1.4.0/build_tools/mkpkgconfig
asterisk-1.4.0/build_tools/get_moduleinfo
asterisk-1.4.0/build_tools/mkdep
asterisk-1.4.0/build_tools/get_makeopts
asterisk-1.4.0/build_tools/make_version

[...]

asterisk-1.4.0/menuselect/mxml/COPYING
asterisk-1.4.0/menuselect/mxml/CHANGES
asterisk-1.4.0/menuselect/mxml/mxml-file.c
asterisk-1.4.0/menuselect/mxml/install-sh
asterisk-1.4.0/menuselect/mxml/mxml.pc
ubuntu@ubuntu:/usr/src$ 

Asterisk 1.4 ist die erste Version, die den allgemein üblichen autoconf-Mechanismus benutzt. Zuerst muss also im Asterisk-Verzeichnis ein ./configure aufgerufen werden:

ubuntu@ubuntu:/usr/src$ cd asterisk-1.4.0/
ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ ./configure 
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for uname... /bin/uname
checking for gcc... gcc


[...]

configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile
config.status: creating include/asterisk/autoconfig.h

               .$$$$$$$$$$$$$$$=..      
            .$7$7..          .7$$7:.    
          .$$:.                 ,$7.7   
        .$7.     7$$$$           .$$77  
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7 
$$$       .7$$$$$$$$$$$$$$$$      :$$$. 
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.  
$$$        $$$   7$$$7  .$$$    .$$$.   
$$$$             $$$$7         .$$$.    
7$$$7            7$$$$        7$$$      
 $$$$$                        $$$       
  $$$$7.                       $$  (TM)     
   $$$$$$$.           .7$$$$$$  $$      
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : i686
ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ 

Die entpackten Dateien müssen jetzt kompiliert werden.[14]Dies geschieht mit dem Befehl make im gerade entpackten Verzeichnis.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich den obligatorischen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

debian:/usr/src/asterisk-1.4.0# make
make[1]: Entering directory `/usr/src/asterisk-1.4.0/menuselect'
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes

[...]

   [LD] abstract_jb.o acl.o aescrypt.o aeskey.o aestab.o alaw.o app.o ast_expr2.o ast_expr2f.o asterisk.o astmm.o autoservice.o callerid.o cdr.o channel.o chanvars.o cli.o config.o cryptostub.o db.o devicestate.o dns.o dnsmgr.o dsp.o enum.o file.o fixedjitterbuf.o frame.o fskmodem.o http.o image.o indications.o io.o jitterbuf.o loader.o logger.o manager.o md5.o netsock.o pbx.o plc.o privacy.o rtp.o say.o sched.o sha1.o slinfactory.o srv.o stdtime/localtime.o strcompat.o tdd.o term.o translate.o udptl.o ulaw.o utils.o editline/libedit.a db1-ast/libdb1.a -> asterisk
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +               make install                +
 +-------------------------------------------+
debian:/usr/src/asterisk-1.4.0# 

Die Software ist jetzt kompiliert und muss nur noch mit sudo make install installiert (sprich in die richtigen Verzeichnisse kopiert) werden:

ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ sudo make install
make[1]: Nothing to be done for `depend'.
make[1]: Nothing to be done for `depend'.

[...]

for x in ; do /usr/bin/install -c -m 755 $x /usr/lib/asterisk/modules ; done
make[1]: Leaving directory `/usr/src/asterisk-1.4.0/main'
 +---- 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    +
 +-------------------------------------------+
ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ 

Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit einem sudo make samples:

ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ sudo make samples
mkdir -p /etc/asterisk
for x in configs/*.adsi; do \
                if [ ! -f /etc/asterisk/$x ]; then \
                        /usr/bin/install -c -m 644 $x /etc/asterisk/`/usr/bin/basename $x` ; \
                fi ; \


[...]

for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
                cat /var/lib/asterisk/sounds/$x.gsm >> /var/spool/asterisk/voicemail/default/1234/busy.gsm ; \
        done
ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ 

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

ubuntu@ubuntu:/usr/src/asterisk-1.4.0$ sudo asterisk -V
Asterisk 1.4.0
ubuntu@ubuntu:/usr/src/asterisk-1.4.0$

Installation Asterisk 1.4.x auf Fedora Linux

Diese Installationsanleitung setzt ein frisch installiertes Fedora Core 6 "Zod" voraus. Eine Liste von Mirrors zum Download des ISO-Images findet man unter http://fedora.redhat.com/Download/mirrors.html. Auf einem Mirror Ihrer Wahl laden Sie dann das CD- oder besser gleich das DVD-Image herunter. Mit der gebrannten DVD können Sie nun den Rechner booten und Fedora installieren.

Bitte loggen Sie sich danach als Benutzer root am System an und führen Sie alle hier angegebenen Befehle mit diesem Benutzer aus.

Als Erstes stellen Sie mit einem yum -y update sicher, dass Ihr Fedora Linux-System nur aktuelle Pakete installiert hat:

[root@localhost ~]# yum -y update
Loading "installonlyn" plugin
Setting up Update Process
Setting up repositories
core                      100% |=========================| 1.1 kB    00:00     
extras                    100% |=========================| 1.1 kB    00:00     
updates                   100% |=========================| 1.2 kB    00:00     
Reading repository metadata in from local files

[...]

bs.i386 0:0.7.40-1.fc6 system-config-soundcard.noarch 0:2.0.5-2.fc6 system-config-users.noarch 0:1.2.47-1.fc6 tar.i386 2:1.15.1-22.fc6 tcpdump.i386 14:3.9.4-9.fc6 tcsh.i386 0:6.14-12 traceroute.i386 3:2.0.2-1.fc6 tzdata.noarch 0:2006p-1.fc6 util-linux.i386 0:2.13-0.45.1.fc6 vnc-server.i386 0:4.1.2-7.fc6 wpa_supplicant.i386 1:0.4.9-1.fc6 xorg-x11-drv-ati.i386 0:6.6.3-1.fc6 xorg-x11-drv-i810.i386 0:1.6.5-10.fc6 xorg-x11-server-Xorg.i386 0:1.1.1-47.1.fc6 xorg-x11-xinit.i386 0:1.0.2-15.fc6 yelp.i386 0:2.16.0-10.fc6 ypbind.i386 3:1.19-6.fc6 yum.noarch 0:3.0.1-2.fc6 yum-updatesd.noarch 0:3.0.1-2.fc6
Replaced: bluez-pin.i386 0:0.30-5
Complete!
[root@localhost ~]# 

Jetzt müssen Sie mit yum -y groupinstall "Development Tools" noch einige Pakete installieren:

[root@localhost ~]# yum -y groupinstall "Development Tools"
Loading "installonlyn" plugin
Setting up Group Process
Setting up repositories
Setting up repositories
Reading repository metadata in from local files
Package make - 1:3.81-1.1.i386 already installed and latest version

[...]

  Installing: automake17                   ####################### [56/56] 

Installed: autoconf.noarch 0:2.59-12 automake.noarch 0:1.9.6-2.1 automake14.noarch 0:1.4p6-13 automake15.noarch 0:1.5-16 automake16.noarch 0:1.6.3-8 automake17.noarch 0:1.7.9-7 bison.i386 0:2.3-2.1 byacc.i386 0:1.9-29.2.2 cscope.i386 0:15.5-15.fc6.1 ctags.i386 0:5.6-1.1 cvs.i386 0:1.11.22-6.fc6 diffstat.i386 0:1.41-1.2.2 doxygen.i386 1:1.5.1-1 elfutils.i386 0:0.123-1.fc6 flex.i386 0:2.5.4a-41.fc6 frysk.i686 0:0.0.1.2006.12.01.rh1-1.fc6 gcc.i386 0:4.1.1-30 gcc-c++.i386 0:4.1.1-30 gcc-gfortran.i386 0:4.1.1-30 gdb.i386 0:6.5-13.fc6 indent.i386 0:2.2.9-14.fc6 libtool.i386 0:1.5.22-6.1 ltrace.i386 0:0.5-6.45svn.fc6 oprofile.i386 0:0.9.2-3.fc6 oprofile-gui.i386 0:0.9.2-3.fc6 patchutils.i386 0:0.2.31-2.2.2 pfmon.i386 0:3.2-0.060621.7.1 pstack.i386 0:1.2-7.2.2 python-ldap.i386 0:2.2.0-2.1 rcs.i386 0:5.7-30.1 redhat-rpm-config.noarch 0:8.0.45-6 rpm-build.i386 0:4.4.2-32 strace.i386 0:4.5.14-3 subversion.i386 0:1.4.2-2.fc6 swig.i386 0:1.3.29-2.fc6 systemtap.i386 0:0.5.10-1.fc6 texinfo.i386 0:4.8-14.fc6 valgrind.i386 1:3.2.1-4
Dependency Installed: cairo-java.i386 0:1.0.5-3.fc6 elfutils-libs.i386 0:0.123-1.fc6 glib-java.i386 0:0.2.6-3.fc6 glibc-devel.i386 0:2.5-3 glibc-headers.i386 0:2.5-3 gmp.i386 0:4.1.4-9.fc6 imake.i386 0:1.0.2-3 libgconf-java.i386 0:2.12.4-5.fc6 libgfortran.i386 0:4.1.1-30 libglade-java.i386 0:2.12.5-3.fc6 libgnome-java.i386 0:2.12.4-3.fc6 libgomp.i386 0:4.1.1-30 libgtk-java.i386 0:2.8.7-2.fc6 libpfm.i386 0:3.2-0.060621.8.1 libstdc++-devel.i386 0:4.1.1-30 libvte-java.i386 0:0.12.1-5.fc6 perl-URI.noarch 0:1.35-3 systemtap-runtime.i386 0:0.5.10-1.fc6
Complete!
[root@localhost ~]# 

Zum Schluss noch ein yum -y install libtermcap-devel ncurses-devel openssl-devel ausführen, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann:

[root@localhost ~]# yum -y install libtermcap-devel ncurses-devel openssl-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories

[...]

Installed: libtermcap-devel.i386 0:2.0.8-46.1
Complete!
[root@localhost ~]# 

Auf der Asterisk-Homepage http://www.asterisk.org/ finden Sie die notwendigen Quellen, um Asterisk zu kompilieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version und laden Sie diese mit wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz in das Verzeichnis /usr/src/ herunter:

[root@localhost ~]# cd /usr/src
[root@localhost src]# wget http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
--16:33:35--  http://ftp.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
Auflösen des Rechnernamens »ftp.digium.com«.... 69.16.138.164, 216.27.40.102
Verbindungsaufbau mit ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP-Anfrage gesendet, warte auf Antwort... 200 OK
Länge: 10928902 (10M) [application/x-gzip]
Speichere nach: »asterisk-1.4-current.tar.gz«

100%[=======================================>] 10.928.902   142K/s   in 72s    

16:34:48 (149 KB/s) - »asterisk-1.4-current.tar.gz« gespeichert [10928902/10928902]

[root@localhost src]#

Die komprimierte Datei muss jetzt mit tar xvzf asterisk-1.4-current.tar.gz entpackt werden:

[root@localhost src]# tar xvzf asterisk-1.4-current.tar.gz 
asterisk-1.4.0-beta3/
asterisk-1.4.0-beta3/build_tools/
asterisk-1.4.0-beta3/build_tools/mkpkgconfig
asterisk-1.4.0-beta3/build_tools/get_moduleinfo
asterisk-1.4.0-beta3/build_tools/mkdep

[...]

asterisk-1.4.0-beta3/menuselect/mxml/CHANGES
asterisk-1.4.0-beta3/menuselect/mxml/mxml-file.c
asterisk-1.4.0-beta3/menuselect/mxml/install-sh
asterisk-1.4.0-beta3/menuselect/mxml/mxml.pc
[root@localhost src]# 

Asterisk 1.4 ist die erste Version, die den allgemein üblichen autoconf-Mechanismus benutzt. Zuerst muss also im Asterisk-Verzeichnis ein ./configure aufgerufen werden:

[root@localhost src]# cd asterisk-1.4.0
[root@localhost asterisk-1.4.0]# ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for uname... /bin/uname
checking for gcc... gcc

[...]

configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile
config.status: creating include/asterisk/autoconfig.h

               .$$$$$$$$$$$$$$$=..      
            .$7$7..          .7$$7:.    
          .$$:.                 ,$7.7   
        .$7.     7$$$$           .$$77  
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7 
$$$       .7$$$$$$$$$$$$$$$$      :$$$. 
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.  
$$$        $$$   7$$$7  .$$$    .$$$.   
$$$$             $$$$7         .$$$.    
7$$$7            7$$$$        7$$$      
 $$$$$                        $$$       
  $$$$7.                       $$  (TM)     
   $$$$$$$.           .7$$$$$$  $$      
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : i686
[root@localhost asterisk-1.4.0]##

Asterisk muss jetzt kompiliert werden.[15]Dies geschieht mit dem Befehl make.

[Warnung]Warnung

Bitte achten Sie darauf, dass die hier in der Dokumentation benutzte Version vielleicht zum Zeitpunkt Ihrer Installation nicht mehr aktuell ist. Entsprechend werden sich die Verzeichnisnamen ändern.

Übrigens ist dies jetzt ein guter Moment, sich einen Kaffee oder Tee zu kochen. Der Kompiliervorgang kann je nach Rechenleistung des PCs wenige Minuten oder bis zu einer Stunde dauern.

[root@localhost asterisk-1.4.0]# make
make[1]: Entering directory `/usr/src/asterisk-1.4.0/menuselect'
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes

[...]

   [LD] abstract_jb.o acl.o aescrypt.o aeskey.o aestab.o alaw.o app.o ast_expr2.o ast_expr2f.o asterisk.o astmm.o autoservice.o callerid.o cdr.o channel.o chanvars.o cli.o config.o cryptostub.o db.o devicestate.o dns.o dnsmgr.o dsp.o enum.o file.o fixedjitterbuf.o frame.o fskmodem.o http.o image.o indications.o io.o jitterbuf.o loader.o logger.o manager.o md5.o netsock.o pbx.o plc.o privacy.o rtp.o say.o sched.o sha1.o slinfactory.o srv.o stdtime/localtime.o strcompat.o tdd.o term.o translate.o udptl.o ulaw.o utils.o editline/libedit.a db1-ast/libdb1.a -> asterisk
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +               make install                +
 +-------------------------------------------+
[root@localhost asterisk-1.4.0]#

Die Software ist jetzt kompiliert und muss nur noch mit make install installiert (sprich: in die vorgesehenen Verzeichnisse kopiert) werden:

[root@localhost asterisk-1.4.0]# make install
make[1]: Für das Ziel »depend« ist nichts zu tun.
make[1]: Für das Ziel »depend« ist nichts zu tun.

[...]

for x in ; do /usr/bin/install -c -m 755 $x /usr/lib/asterisk/modules ; done
make[1]: Leaving directory `/usr/src/asterisk-1.4.0/main'
 +---- 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    +
 +-------------------------------------------+
[root@localhost asterisk-1.4.0]# 

Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. In diesem Verzeichnis liegen die Konfigurationsdateien von Asterisk und da wir nicht von Null beginnen möchten, lassen wir uns die Standarddateien erstellen. Dies erreichen wir mit einem make samples:

[root@localhost asterisk-1.4.0]# make samples
mkdir -p /etc/asterisk
for x in configs/*.adsi; do \
        if [ ! -f /etc/asterisk/$x ]; then \
                /usr/bin/install -c -m 644 $x /etc/asterisk/`/usr/bin/basename $x` ; \
        fi ; \

[...]

for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
        cat /var/lib/asterisk/sounds/$x.gsm >> /var/spool/asterisk/voicemail/default/1234/busy.gsm ; \
done
[root@localhost asterisk-1.4.0]# 

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

[root@localhost asterisk-1.4.0]# asterisk -V
Asterisk 1.4.0
[root@localhost asterisk-1.4.0]# 

Installation Asterisk 1.4.x mit AsteriskNOW

Der Hersteller von Asterisk (die Firma Digium) hat für die Asterisk-Version 1.4 erstmalig eine eigene Linux-Distribution herausgebracht, die unter dem Namen AsteriskNOW auf der Webseite http://www.asterisknow.org zum Download angeboten wird. Diese Installation ist natürlich im Vergleich zu den anderen hier beschriebenen extrem einfach, allerdings ist man dafür später teilweise auf Digium-Hardware eingeschränkt.

Das ISO-Image für die Installations-CD können Sie auf http://www.asterisknow.org herunterladen.

Bitte stellen Sie vor der Installation sicher, dass auf dem entsprechenden Rechner keine wichtigen Daten mehr vorhanden sind. Die Festplatte wird während der Installation neu partitioniert und die Partitionen dann formatiert.

Nach dem Einlegen der CD und dem Booten (hierfür muss im BIOS die Einstellung „zuerst von CD booten“ aktiviert sein) sehen Sie folgenden Bildschirm:

Um ein neues System zu installieren, können Sie hier einfach ENTER drücken.

Danach können Sie entscheiden, welche Art der Installation Sie wünschen:

Das Installationsprogramm wird danach noch ein paar Einstellungen zum System (wie z.B. die Zeitzone) abfragen und dann mit der Installation beginnen:

Ist die Installation abgeschlossen, wird das System gestartet und zeigt das AsteriskNOW Console Menu an:

Mit der Tastenkombinationen ALT-F2 erhalten Sie eine normale Konsole, auf der Sie sich mit dem User admin einlogen können. Für Rootrechte müssen Sie auch bei dieser Distribution mit dem Programm sudo arbeiten.

[Tipp]Tipp

Mit der Tastenkombination ALT-F9 kommen Sie ins Asterisk-CLI.

[Warnung]Warnung

Die Benutzung von AsteriskNOW ist für den Asterisk-Anfänger an dieser Stelle wenig geeignet. Nehmen Sie als Grundlage um mit diesem Buch zu arbeiten lieber ein Debian Linux! Wer Asterisk verstanden hat, der wird die Vor- und Nachteile von AsteriskNOW abschätzen können. Für den Anfänger überwiegen die Nachteile, da in diesem Buch ein Schwerpunkt in der Programmierung von Dialplänen in der extensions.conf liegt.

Installation Asterisk 1.4.x auf Mac OS X

Für die Installation von Asterisk 1.4 gehen wir von einem aktuellen Mac OS X aus, das ist z.Zt. 10.4.8 „Tiger“.

[Anmerkung]Anmerkung

Ebenso wie für Asterisk 1.2 gilt auf Mac OS X dieser Hinweis:

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. [16]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. 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.

[Wichtig]Wichtig

Asterisk 1.4 wird weiter unten beim Installieren mit make install weitere erforderliche Sprachpakete runterladen, wozu wget verwendet wird, was allerdings auf einem frischen Mac OS X nicht vorhanden ist (deshalb verwenden wir ansonsten curl). Wenn Sie sowieso schon Fink[17] oder Darwinports[18] benutzen, können Sie damit ganz einfach wget installieren. Ob wget bereits installiert ist, kann man so rausfinden:

$  which wget
no wget in /bin /sbin /usr/bin /usr/sbin

Alternativ installiert man wgetvon Hand“:

$  curl -O ftp://ftp.gnu.org/pub/gnu/wget/wget-1.10.tar.gz
$  tar -xvzf wget-1.10.tar.gz
$  rm wget-1.10.tar.gz
$  cd wget-1.10/
$  ./configure
$  make
$  sudo make install

und man passt entweder seinen PATH an oder macht einen Symlink:

$  sudo ln -s /usr/local/bin/wget /usr/bin/wget

Jetzt sollte folgendes möglich sein:

$  which wget
/usr/bin/wget
$  wget --version
GNU Wget 1.10

Copyright (C) 2005 Free Software Foundation, Inc.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.

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.4-current.tar.gz

Danach wird das komprimierte Archiv entpackt:

$  tar -xvzf asterisk-1.4-current.tar.gz
asterisk-1.4.0/
asterisk-1.4.0/build_tools/
asterisk-1.4.0/build_tools/mkpkgconfig
asterisk-1.4.0/build_tools/get_moduleinfo
asterisk-1.4.0/build_tools/get_makeopts
[...]

Ab Asterisk 1.4 kommt der übliche autoconf-Mechanismus zum Einsatz[19]. Wir müssen also in das gerade entpackte Verzeichnis wechseln und ./configure ausführen, was eine Menge Informationen ausspuckt:

$  cd asterisk-1.4.0/
$  ./configure
checking build system type... i386-apple-darwin8.8.3
checking host system type... i386-apple-darwin8.8.3
checking for uname... /usr/bin/uname
checking for gcc... gcc
[...]
configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile
config.status: creating include/asterisk/autoconfig.h

               .$$$$$$$$$$$$$$$=..      
            .$7$7..          .7$$7:.    
          .$$:.                 ,$7.7   
        .$7.     7$$$$           .$$77  
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7 
$$$       .7$$$$$$$$$$$$$$$$      :$$$. 
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.  
$$$        $$$   7$$$7  .$$$    .$$$.   
$$$$             $$$$7         .$$$.    
7$$$7            7$$$$        7$$$      
 $$$$$                        $$$       
  $$$$7.                       $$  (TM)     
   $$$$$$$.           .7$$$$$$  $$      
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : darwin8.8.3
configure: Host CPU : i386

Danach kompilieren wir Asterisk mit make, was einige Zeit dauern kann, daher empfehle ich an dieser Stelle eine Tasse Tee[20] oder Kaffee. [21]

$  make
gcc -O -Wall   -c mxml-attr.c
gcc -O -Wall   -c mxml-entity.c
gcc -O -Wall   -c mxml-file.c
gcc -O -Wall   -c mxml-index.c
gcc -O -Wall   -c mxml-node.c
[...]

Der Testrechner war allerdings schon nach etwa 2 bis 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[22]:

$  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
[...]

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.4.0

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

In „Asterisk automatisch beim Hochfahren starten“ finden Sie eine Beschreibung, wie man für Asterisk ein Startup-Item anlegt, um Asterisk automatisch beim Hochfahren zu starten.

Weitere Sprachprompts

Da wir gerade dabei sind, bietet sich die Gelegenheit an noch ein paar zusätzliche Sprachbausteine (Prompts) mit zu installieren. Diese können mit wget http://ftp.digium.com/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz downgeloadet werden (vorher noch mit cd .. ein Verzeichnis rauf gehen):

debian:/usr/src/asterisk-1.2.13# cd ..
debian:/usr/src# wget http://ftp.digium.com/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz
--11:38:17--  http://ftp.digium.com/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz
           => `asterisk-sounds-1.2.1.tar.gz'
Auflösen des Hostnamen »ftp.digium.com«.... 69.16.138.164, 216.27.40.102
Verbindungsaufbau zu ftp.digium.com[69.16.138.164]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 3,249,876 [application/x-gzip]

100%[====================================>] 3,249,876    153.27K/s    ETA 00:00

11:38:39 (149.37 KB/s) - »asterisk-sounds-1.2.1.tar.gz« gespeichert [3249876/3249876]

debian:/usr/src#

Jetzt in das mit tar xvzf asterisk-sounds-1.2.1.tar.gz ausgepackte Verzeichnis wechseln (cd asterisk-sounds-1.2.1) und dort mit make install die Sprachbausteine installieren.

debian:/usr/src# tar xvzf asterisk-sounds-1.2.1.tar.gz 
asterisk-sounds-1.2.1/
asterisk-sounds-1.2.1/sounds-extra.txt
asterisk-sounds-1.2.1/README.txt
asterisk-sounds-1.2.1/sounds/
asterisk-sounds-1.2.1/sounds/call-fwd-parallel.gsm
asterisk-sounds-1.2.1/sounds/accounts-payable.gsm
asterisk-sounds-1.2.1/sounds/language.gsm

[...]

asterisk-sounds-1.2.1/sounds/research-and-development.gsm
asterisk-sounds-1.2.1/sounds/distribution.gsm
asterisk-sounds-1.2.1/sounds/login-fail.gsm
asterisk-sounds-1.2.1/sounds/repair.gsm
asterisk-sounds-1.2.1/sounds/T-to-enable-ancmnt.gsm
asterisk-sounds-1.2.1/Makefile
debian:/usr/src# cd asterisk-sounds-1.2.1
debian:/usr/src/asterisk-sounds-1.2.1# make install
mkdir -p /var/lib/asterisk/sounds
mkdir -p /var/lib/asterisk/sounds/letters
mkdir -p /var/lib/asterisk/sounds/phonetic
mkdir -p /var/lib/asterisk/sounds/silence
mkdir -p /var/lib/asterisk/sounds/wx
mkdir -p /var/lib/asterisk/sounds/ha
for x in sounds/letters/*.gsm; do \
        if grep -q "^%`basename $x`%" sounds-extra.txt; then \
                install -m 644 $x /var/lib/asterisk/sounds/letters ; \
        else \
                echo "No description for $x"; \
                exit 1; \
        fi; \

[...]

for x in sounds/*.gsm; do \
        if grep -q "^%`basename $x`%" sounds-extra.txt; then \
                install -m 644 $x /var/lib/asterisk/sounds ; \
        else \
                echo "No description for $x"; \
                exit 1; \
        fi; \
done
debian:/usr/src/asterisk-sounds-1.2.1# 

Den Asterisk-Server konfigurieren

Im Verzeichnis /etc/asterisk/ finden wir jetzt alle Konfigurationsdateien in einer einfachen Standardausführung:

debian:/usr/src/asterisk-sounds-1.2.1# cd /etc/asterisk 
debian:/etc/asterisk# ls
adsi.conf           cdr_tds.conf     indications.conf  privacy.conf
adtranvofr.conf     codecs.conf      logger.conf       queues.conf
agents.conf         dnsmgr.conf      manager.conf      res_odbc.conf
alarmreceiver.conf  dundi.conf       meetme.conf       rpt.conf
alsa.conf           enum.conf        mgcp.conf         rtp.conf
asterisk.adsi       extconfig.conf   misdn.conf        sip.conf
asterisk.conf       extensions.ael   modem.conf        sip_notify.conf
cdr.conf            extensions.conf  modules.conf      skinny.conf
cdr_custom.conf     features.conf    musiconhold.conf  telcordia-1.adsi
cdr_manager.conf    festival.conf    osp.conf          voicemail.conf
cdr_odbc.conf       iax.conf         oss.conf          vpb.conf
cdr_pgsql.conf      iaxprov.conf     phone.conf        zapata.conf
debian:/etc/asterisk#

Dies ist jetzt eine recht umfangreiche Liste, aber -- keine Angst -- für unsere Mini-Telefonanlage müssen wir uns nur mit zwei Dateien näher befassen. Die mit make samples erstellen Defaultdateien verschieben wir dazu erst einmal nach /etc/asterisk/backup/ (damit wir später bei Bedarf darauf zugreifen können):

debian:/etc/asterisk# mkdir backup
debian:/etc/asterisk# mv sip.conf backup/
debian:/etc/asterisk# mv extensions.conf backup/
debian:/etc/asterisk# 

Legen Sie mit Ihrem Lieblingseditor[23] die Datei /etc/asterisk/sip.conf mit folgendem Inhalt an:[24]

[general]
port = 5060
bindaddr = 0.0.0.0
context = sonstige

[2000]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[2001]
type=friend
context=meine-telefone
secret=1234
host=dynamic

In die Datei /etc/asterisk/extensions.conf schreiben wir einen einfachen Wählplan:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000)
exten => 2001,1,Dial(SIP/2001)

Und diese 21 Zeilen Konfiguration sollen ausreichen, um eine komplette Telefonanlage zu konfigurieren? Dabei heißt es doch immer, dass Asterisk so kompliziert sei. Probieren wir es einmal aus! Mit dem Befehl asterisk -c starten Sie Asterisk:

debian:/etc/asterisk# asterisk -c
Asterisk 1.2.13, Copyright (C) 1999 - 2005 Digium.
Written by Mark Spencer <markster@digium.com>
=========================================================================
[ Booting...Nov 20 18:59:28 NOTICE[14937]: cdr.c:1185 do_reload: CDR 
simple logging enabled.
.........................................................................
............................................... ]
Asterisk Ready.
*CLI> 

Mit dem erfolgreichen Start von Asterisk erhalten wir ebenfalls eine Konsole, auf der man mit dem laufenden Asterisk-Prozess kommunizieren kann. Vor uns sehen wir jetzt das Command Line Interface (CLI) von Asterisk. Hier können wir aktiv in das Geschehen eingreifen und als erste Handlung die eben gestartete Telefonanlage wieder herunterfahren:

*CLI> stop now
debian:/etc/asterisk#

Die SIP-Telefone konfigurieren

Jetzt müssen wir zwei SIP-Telefone mit der Anlage verbinden. Wenn Sie kein SIP-Telefon besitzen, können Sie auch zwei Software-Telefone, die Sie aus dem Internet herunterladen, benutzen.

[Warnung]Warnung

Wenn Sie zu Testzwecken ein Software-SIP-Telefon und den Asterisk-Server auf den gleichen Rechner installieren wollen, so müssen Sie beim SIP-Telefon den SIP Port auf 5061 umstellen, da 5060 bereits von Asterisk benutzt wird.

[Tipp]Tipp

Stellen Sie in Ihrem SIP-Telefon als Registrar und Proxy jeweils die IP-Adresse des Asterisk-Server ein. Bei manchen Telefon ist es auch notwendig alle Felder und notfalls mit xxx zu füllen. Leider gibt es dafür keine allgemein gültige Hilfe. Da hilft nur Ausprobieren!

Die User-Daten können Sie der Datei /etc/asterisk/sip.conf entnehmen. Falls Sie die IP-Adresse Ihres Asterisk-Linux-Systems nicht kennen, finden Sie diese mit folgendem Befehl heraus:

debian:/etc/asterisk# ifconfig | grep Bcast | sed s/Bcast.*//
          inet addr:23.3.19.73

In diesem Fall ist es also die 23.3.19.73. Wir starten Asterisk erneut, diesmal jedoch in einem ''gesprächigeren'' Modus, um mehr Informationen über die laufenden Aktionen zu erhalten. Dies erreichen wir, indem wir Asterisk mit dem Parameter -vvvvvc starten (die 5 v stehen für den Verbose-Level 5'). Dann können wir verfolgen, wie sich das SIP-Telefon an der Anlage anmeldet:

debian:/etc/asterisk# asterisk -vvvvvc
[...]
Asterisk Ready.
*CLI>

Nachdem Sie Ihre SIP-Telefone konfiguriert haben (Daten siehe /etc/asterisk/sip.conf), können Sie jetzt den Anmeldevorgang starten (einfach das Telefon einschalten). Der Asterisk-Prozess teilt uns die Anmeldung der Telefone mit:

*CLI>     -- Registered SIP '2000' at 87.143.3.144 port 5060 
expires 120 -- Unregistered SIP '2000'

*CLI>     -- Registered SIP '2001' at 87.143.3.145 port 5060 
expires 120 -- Unregistered SIP '2001'

Nachdem die Telefone am System angemeldet sind, können wir jetzt von einem Telefon das andere anrufen, z.B. einfach die 2001 vom 2000-er anwählen. Wenn Sie sich jetzt über die Telefone unterhalten können, haben Sie es geschafft --- Ihre erste Mini-Telefonanalage mit Asterisk funktioniert.

[Tipp]Tipp

Falls Sie im Eifer des Gefechts die Registered SIP Ausgabe im CLI übersehen haben oder sich nicht mehr sicher sind, können Sie mit sip show peers alle konfigurierten SIP-Telefone auflisten. Mit sip show peer 2000 bekommen Sie sogar ganz detaillierte Informationen zum Peer 2000.

Sie können Asterisk jederzeit mit dem Kommando stop now im CLI beenden.

Und jetzt mit einem Anrufbeantworter

Asterisk beinhaltet bereits ein fertiges Voicemail-Modul, wir müssen es lediglich in der Datei /etc/asterisk/voicemail.conf aktivieren. Als ersten Schritt verschieben wir diese Default-Datei in unser Verzeichnis mit den Sicherungskopien der Konfigurationsdateien:

debian:/# cd /etc/asterisk
debian:/etc/asterisk# mv voicemail.conf backup/

Daraufhin erstellen wir eine neue /etc/asterisk/voicemail.conf und versehen diese mit folgendem Inhalt:

[general]
format = wav

[default]
2000 => 4711,Hans Mustermann,hansi@company.de
2001 => 0815,Ute Beispiel,ute.beispiel@company.de

Damit sind die Voicemailboxen grundsätzlich eingerichtet (ja, so einfach geht das!). Jetzt müssen wir aber noch in der /etc/asterisk/extensions.conf ein paar weitere Zeilen eintragen, um die Voicemail-Funktionalität unseren Telefonen zuzuweisen. Bitte vergessen Sie dabei nicht den Eintrag ",20" bei der Dial-Applikation.

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

Fertig! Asterisk nur noch mit asterisk -vvvvvc neu starten

[Tipp]Tipp

In einem laufenden Asterisk System reicht auch ein reload im CLI aus.

und mit einem Telefon das andere anrufen. Nachdem es 20 Sekunden lang geklingelt hat (deshalb die 20 am Ende des Dial-Befehls), kommt man auf die VoiceMailbox. Ist die Gegenstelle besetzt, wird man direkt auf die VoiceMailbox 2000 geleitet. Sie können vom Telefon mit der Nummer 2000 die entsprechende Mailboxen abhören, indem Sie die Nummer 2999 anrufen. Dann bekommen Sie Ihre Voicemailbox als Menü vorgespielt. Wenn Sie das Ganze noch mit einer Passwortabfrage absichern wollen oder eine Auflistung des Menüs suchen, finden Sie dazu in Kapitel 7, Voicemailsystem die nötigen Informationen.

Was haben wir gerade gemacht?

Nach unserem ersten Erfolg gehen wir nun Schritt für Schritt die Konfigurationsdateien durch, um mehr über die Funktionsweise von Asterisk zu erfahren. Fangen wir mit der Datei /etc/asterisk/sip.conf an.

[general]
port = 5060
bindaddr = 0.0.0.0
context = sonstige

In diesem ersten Abschnitt [general] werden allgemeine Variablen definiert. Der Standard-Port wird auf 5060 gesetzt, d.h. Asterisk wickelt die Verbindungen über diese Portnummer ab. Mit bindaddr = 0.0.0.0 beachtet Asterisk einkommenden IP-Pakete auf allen IP-Adressen auf diesem System. Üblicherweise haben Rechner meist nur eine IP-Adresse, falls Sie einem Rechner mehrere IP-Adressen zugewiesen haben und vielleicht sogar mehrere Asterisk-Instanzen betreiben, können Sie hiermit eine bestimmte IP-Adresse einer jeweiligen Asterisk-Instanz zuordnen. Das Context-Konstrukt folgt nicht unbedingt einer intuitiven Logik bei der Konfiguration von Asterisk. Auf diesen Konfigurationsparameter werde ich noch an geeigneterer Stelle eingehen. Im weiteren Verlauf der Anleitungen wird nach und nach das Verständnis dafür geschaffen, was ein Context im Asterisk-Sinne bedeutet und wie er eingesetzt wird.

[2001]
type=friend
context=meine-telefone
secret=1234
host=dynamic

Im Abschnitt [2001] wird der SIP-Anschluss mit der Kennung 2001 definiert. Dass hierbei eine Zahl (also 2001) verwendet wurde, ist dabei eher der üblichen Erwartungshaltung geschuldet, da die meisten Nutzer Telefone mit Nummern verbinden. Ein SIP-Anschluss kann aber auch mit einem alphanumerischen Wert definiert werden, also beispielsweise [Rezeption-1]. Der Parameter type=friend bestimmt vereinfacht gesagt, dass dieser SIP-Anschluss sowohl eingehende, als auch ausgehende Verbindungen aufbauen darf.[25]

Und wieder stoßen wir auf den ominösen context. Diesen werden wir gleich in der Datei /etc/asterisk/extensions.conf aufgreifen und dann wird das zugrundeliegende System in der Verwendung auch klarer.

Mit secret wird das Passwort gesetzt. Wir benutzen an dieser Stelle Zahlen, da man diese mit einem Telefon leichter eintippen kann. host=dynamic sagt aus, dass es für Asterisk ohne Bedeutung ist, ob der SIP-Client wechselnde IP-Adressen hat.

extensions.conf - der Dialplan

Die Datei /etc/asterisk/extensions.conf ist das Herz jeder Asterisk-Konfiguration (siehe auch Kapitel 4, Programmieren im Dialplan). Sie ist vergleichbar mit einer Schaltzentrale bei frühen Telefonanlagen. In dieser Konfigurationsdatei wird bestimmt, welches Telefon mit welchem Telefon Kontakt aufnehmen darf.

[sonstige]

Diese erste Sektion der Konfiguration ist für den Context sonstige bestimmt. Da wir dieses in diesem Beispiel nicht benötigen, ist sie leer.

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

Der Context wird von Asterisk immer benutzt, wenn ein Telefon die Nummer eines anderen Telefons wählt. Der Name ist dabei beliebig. Wichtig ist, dass in der Datei /etc/asterisk/sip.conf bei der Definition eines SIP-Gerätes eine entsprechende Bezeichnung für den Context definiert wurde und dieselbe Bezeichnung in der Datei /etc/asterisk/extensions.conf wieder als context-Bezeichnung verwendet wird (dann könnte er auch Apfelmus heißen). Dieser Context ist von entscheidender Bedeutung für die Konfiguration des Telefons! Einfach gesagt legen die im Context definierten Regeln exakt fest, welche Nummern das Telefon wählen darf und welche Aktionen dadurch gestattet werden.

[Wichtig]Wichtig

Der Context der angerufenen Nummer spielt keinerlei Rolle, sondern nur der Context der anrufenden Nummer! Merken Sie sich bitte diesen Zusammenhang, er ist wesentlich für einen erfolgreichen Umgang mit den Konfigurationsdateien.

Die Syntax der Einträge ist immer wie folgt:

exten => Nummer, Prioritaet, Applikation

Wird eine Nummer gewählt, die einen entsprechenden Eintrag (Regel) in dieser Form aufweist, dann wird diese Regel gelesen und übernommen. Ist mehr als eine Regel für eine Nummer definiert, wird als Erstes die Regel mit der Priorität 1 durchgeführt. Die mit einer Regel verbundene Aktion steht an dritter Stelle (''Applikation''). Auf der Grundlage unserer Konfigurationsdateien (s.o.) geschieht Folgendes, wenn vom Telefon 2001 die Nummer 2000 gewählt wird:

  • Asterisk sieht in der Datei /etc/asterisk/sip.conf nach, welcher Context der anrufenden Nummer (2001) zugewiesen wurde. In unserem Beispiel haben wir der Nummer 2001 den Context meine-telefone zugewiesen. Dadurch werden die Regeln gelesen, die in der entsprechenden Context-Bezeichnung context=meine-telefone der Datei /etc/asterisk/extensions.conf definiert sind.

  • Nachdem Asterisk die Regeln im Context für die anrufende Nummer (2001) gelesen hat, führt es die Regeln aus, die mit der angerufenen Nummer (2000) definiert sind und zwar in der durch die Priorität festgelegten Reihenfolge. (In unserem Beispiel sind im Context der anrufenden Nummer (2001) für die angerufene Nummer (2000) zwei Regeln hinterlegt.)

  • Da die Regel mit dem Befehl Dial(SIP/2000,20) die Priorität 1 besitzt, kommt diese zur Ausführung. Dadurch wird das Programm Dial gestartet, welches wiederum in der Datei /etc/asterisk/sip.conf nach dem Eintrag 2000 sucht und diesen Apparat dann 20 Sekunden lang anruft (dafür die 20 als zweiter Parameter des Dial-Befehls).

  • Wenn nach 20 Sekunden niemand den Anruf annimmt wird die Dial() Applikation abgebrochen und die Priorität um 1 hochgezählt.

  • Die Zeile exten => 2000,2,VoiceMail(2000) ist also an der Reihe und startet das Programm Voicemail mit dem Parameter 2000. Die 2000 steht für die Nummer der Voicemailbox. Wie Sie sich sicherlich schon denken können, ist auch hier die 2000 nur der Einfachheit halber genommen worden. Die Voicemailbox könnte auch 5555 oder Apfelmus heißen.

Damit wir später vom jeweiligen Telefon auch an unsere Sprachnachrichten kommen, wird in der letzten Zeile die Nummer 2999 für das Aufrufen der Voicemailbox definiert.

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

Hierbei kommen wir zum ersten Mal mit der Benutzung von Variablen in der /etc/asterisk/extensions.conf in Berührung. Das aufgerufene Programm heißt VoiceMailMain und ihm wird als erster Parameter die Ausgabe der Funktion ${CALLERID(num)} übergeben. ${CALLERID(num)} gibt die Nummer des Anrufers aus. Deshalb weiß das Programm VoiceMailMain, welche Voicemailbox gerade abgefragt wird. Wird dieser Parameter nicht angegeben, fragt VoiceMailMain als Erstes den Anrufer nach dem Namen der VoiceMailbox. Der Parameter s sorgt dafür, das der Benutzer kein Passwort eingeben muss.

voicemail.conf - der Anrufbeantworter

Das Voicemail-Modul (siehe auch Kapitel 7, Voicemailsystem) wird in der Datei /etc/asterisk/voicemail.conf konfiguriert und mit dem Wissen, das wir bisher bereits erworben haben, ist sie fast schon selbsterklärend:

[general]
format = wav

[default]
2000 => 4711,Hans Mustermann,hansi@company.de
2001 => 0815,Ute Beispiel,ute.beispiel@company.de

In der Sektion [general] wird das Aufzeichnungsformat definiert (hier WAV) und in der Sektion [default] werden die beiden Mailboxen 2000 und 2001 mit den entsprechenden Passwörtern (4711 und 0815) definiert. Hinter dem Passwort findet sich dann noch ein Eintrag für den Namen des Benutzers und danach seine E-Mail-Adresse. Sprachnachrichten werden so automatisch als E-Mail-Attachments im WAV-Format zugestellt.

Ins öffentliche Telefonnetz telefonieren

Jetzt werden Sie vielleicht einwenden, dass Sie zwar eine fertige Telefonanlage haben, was an und für sich spannend ist, aber ohne den Anschluss an die große weite Welt noch nicht wirklich nützlich. Wenn Sie mir weitere 10 Minuten Zeit geben und Ihre Mini-Telefonanlage eine Internetverbindung besitzt, lässt sich auch diese Aufgabe lösen und Sie erhalten in Kürze Anschluss ans Festnetz. Dazu benötigen Sie einen Account bei einem SIP-Provider.

Jetzt konfigurieren wir Asterisk so, dass Sie mit den Telefonen 2000 und 2001 ins deutsche Festnetz telefonieren können. Als Erstes muss der Provider-Account in der /etc/asterisk/sip.conf eingetragen werden:

[general]
port = 5060
bindaddr = 0.0.0.0
context = sonstige

register => 5587572:UHDZJD@mein-voip-provider.de/5587572
;              ^       ^       ^                    ^
;              |       |       |                    |
;             User Passwort  Provider              User

[2000]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[2001]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[ext-sip-account]
type=friend
context=von-voip-provider
username=5587572
fromuser=5587572
secret=UHDZJD
host=mein-voip-provider.de
fromdomain=mein-voip-provider.de
qualify=yes
insecure=very
nat=yes

Den Usernamen (im Beispiel 5587572) und Ihr Passwort (im Beispiel UHDZJD) können Sie der SIP-Provider-Webseite entnehmen. Damit kann Asterisk diesen Account benutzen. Allerdings müssen wir jetzt noch in der /etc/asterisk/extensions.conf eine Regel zum Rauswählen einfügen:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

Nachdem die Einträge in den Konfigurationsdateien erstellt sind, starten Sie Asterisk, wie bekannt, mit asterisk -vvvvvc in das CLI und warten ein paar Sekunden, bis sich eines der SIP-Telefone angemeldet hat. Danach einfach eine beliebige Nummer im deutschen Festnetz (mit Vorwahl) wählen und warten (im CLI können Sie beobachten, was passiert). Nach kurzer Zeit hören Sie auch schon das Freizeichen und können mit einem Festnetz-Teilnehmer telefonieren. Wie die obige Konfiguration genau funktioniert, wird an dieser Stelle noch nicht verraten.[26]

Gespräche vom öffentlichen Netz entgegennehmen

Der letzte Schritt ist ein kleiner. Wir wollen über unsere Rufnummer beim VoIP-Provider auf dem Telefon mit der Nummer 2000 angerufen werden können. Dazu müssen wir nur noch einen weiteren Context in die Konfigurationsdatei /etc/asterisk/extensions.conf hinzufügen:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[von-voip-provider]
exten => 5587572,1,Dial(SIP/2000)

Fertig! :-)

Die 5587572 ist Ihre interne Rufnummer bei Ihrem VoIP-Provider. Bitte schauen Sie auf der Webseite des Providers in Ihren Kundendaten diese Nummer nach. Dass die Rufnummer hier dieselbe ist wie der Username, ist prinzipiell Zufall.

Wer will kann natürlich ganz einfach mit der folgenden Variante noch eine Voicemailbox für Gespräche die vom SIP-Provider kommen aktivieren:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[von-voip-provider]
exten => 5587572,1,Dial(SIP/2000,20)
exten => 5587572,2,VoiceMail(2000)

In diesem Einführungs-Kapitel wollte ich Ihnen zeigen, wie schnell und einfach man mit Asterisk eine funktionierende Telefonanlage aufbauen kann. Im verbleibenden Teil des Buches gehen wir tiefer in die Details und ich zeige Ihnen, was man mit Asterisk alles machen kann.



[1] Unser „Hello World“-Beispiel macht noch mehr Spaß, falls Sie über zwei oder mehr PCs (oder Laptops) verfügen, die Sie in einem gemeinsamen Netzwerk verbunden haben. Dann können Sie einen Rechner als Asterisk-Telefonanlage verwenden und die anderen PCs als Softphones.

[2] Ein paar URLs zu im Internet frei verfügbaren Linux-Distributionen:

[3] Die aktuelle Debian Stable-Version.

[4] Falls Sie mit einer grafischen Benutzeroberfläche des X-Window Systems arbeiten, benötigen Sie eine Textkonsole für die Eingabe, beispielsweise ''xterm'' oder ''konsole''.

[5] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[6] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[7] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[8] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[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!

[13] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[14] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[15] Die Linux-Cracks unter den Lesern mögen mir diese starke Vereinfachung verzeihen.

[19] wobei die Umstellung noch nicht ganz abgeschlossen zu sein scheint

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

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

[22] Wer noch nie sudo ausgeführt hat, erhält dabei folgenden Hinweis:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[23] Wenn Sie keinen Editor kennen, den Sie in einem Terminalfenster verwenden können, empfehle ich Ihnen nano. Unter Debian ist dieser einfach als Benutzer root mit apt-get install nano zu installieren. Danach öffnen Sie mit nano dateiname die Datei. In Nano selbst sehen Sie im unteren Bereich des Bildschirms die wichtigsten Befehle.

[24] Diese einfachen Passwörter sind natürlich nur für den Testbetrieb gedacht, für den produktiven Einsatz sollten Sie entsprechend bessere Passwörter vergeben.

[25] Der Eintrag type= kennt drei verschiedene Werte (auf die in einem späteren Kapitel genau eingegangen wird):

  • friend: kann anrufen und angerufen werden.

  • peer: kann nur anrufen.

  • user: kann nur angerufen werden.

[26] Nur so viel an dieser Stelle: Die Variable ${EXTEN} speichert die vom Benutzer gewählte Nummer ab (siehe Kapitel 4, Programmieren im Dialplan).


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

Werbung