A.1. Installation von Asterisk 1.4.x auf Debian Linux

Die hier aufgeführte Installationsanleitung gilt für ein Asterisk-System mit allen in diesem Buch beschriebenen Features (bei Ausnahmen wird dies gesondert besprochen). Deshalb ist die Installation etwas umfangreicher. Das hat aber auch den Vorteil, dass Sie in Zukunft nicht noch einmal etwas nachinstallieren müssen.
Es wird ein frisch installiertes Debian GNU/Linux 5.0 (Lenny) vorausgesetzt. Ein ISO-Image für die Installation finden Sie auf http://www.debian.org/releases/lenny/debian-installer/. Wir empfehlen das etwa 150 MByte große Netzinstallations-CD-Image[145]. Eine Debian GNU/Linux-Installationsanleitung findet sich unter http://www.debian.org/releases/lenny/i386/. Ein allgemeines Anwenderhandbuch steht unter http://debiananwenderhandbuch.de.

Anmerkung

Bitte loggen Sie sich nach der Installation als Benutzer root am System ein, und führen Sie alle hier angegebenen Befehle mit diesem Benutzer aus.

Anmerkung

Einige Anwender werden wohl direkt einen SSH-Server installieren wollen, um von ihrem normalen Arbeitsplatz aus im Terminal auf dem Server arbeiten zu können. Der Befehl dazu lautet: aptitude install ssh. Dann kann man hier im Folgenden auch wunderbar mit Kopieren und Einsetzen der meisten Befehle arbeiten. Wir setzen voraus, dass Sie entweder mit der grundsätzlichen Verwendung von ssh vertraut sind oder direkt am System selbst arbeiten.
Es versteht sich eigentlich von selbst, dass man auf einem frisch installierten System erst einmal sicherstellt, dass die Paketverwaltung (APT[146] bzw. aptitude) die aktuellen Paketlisten zur Verfügung hat ...
debian:~# aptitude update
Treffer http://ftp.de.debian.org lenny Release.gpg
[...]
1820kB wurden in 13s heruntergeladen (138kB/s)
Paketlisten werden gelesen... Fertig

debian:~# 
... und dass alle Pakete auf dem neusten Stand sind:
debian:~# aptitude -y upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
[...]
Es werden keine Pakete installiert, aktualisiert oder entfernt.
0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 0B an Archiven herunterladen. Nach dem Entpacken werden 0B zusätzlich belegt sein.
debian:~# 
Für den Fall, dass beim Upgrade der Pakete auch ein neuer Kernel installiert wurde, müssen wir jetzt das System mit shutdown -r now (oder mit reboot) neu starten:
debian:~# shutdown -r now

Broadcast message from root@debian (pts/0) (Mon Mar 23 17:42:04 2009):

The system is going down for reboot NOW!
Nach dem Booten loggen Sie sich bitte wieder als root ein.

Anmerkung

Das hat zwar nichts mit Asterisk zu tun, aber typischerweise installiert man auch NTP, um immer die aktuelle Zeit zu haben:
debian:~# aptitude -y install ntp ntpdate
Ein Muss ist das natürlich nicht.
Zuerst installieren wir eine Build-Umgebung – d.h. Compiler usw. – und diverse Abhängigkeiten, damit das Kompilieren von Asterisk erfolgreich durchgeführt werden kann.
debian:~# aptitude -y install build-essential
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  binutils{a} build-essential bzip2{a} cpp{a} cpp-4.3{a} 
  dpkg-dev{a} g++{a} g++-4.3{a} gcc{a} gcc-4.3{a} 
  libc6-dev{a} libgmp3c2{a} libgomp1{a} libmpfr1ldbl{a} 
  libstdc++6-4.3-dev{a} libtimedate-perl{a} 
  linux-libc-dev{a} make{a} patch{a} 
0 Pakete aktualisiert, 19 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 19,4MB an Archiven herunterladen. Nach dem Entpacken werden 60,4MB zusätzlich belegt sein.
[...]
Richte libstdc++6-4.3-dev ein (4.3.2-1.1) ...
Richte g++-4.3 ein (4.3.2-1.1) ...
Richte g++ ein (4:4.3.2-2) ...
Richte build-essential ein (11.4) ...
[...]
Linux-Kernel-Header:
debian:~# aptitude -y install linux-headers-`uname -r`
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  cpp-4.1{a} gcc-4.1{a} gcc-4.1-base{a} 
  linux-headers-2.6.26-1-686 
  linux-headers-2.6.26-1-common{a} 
  linux-kbuild-2.6.26{a} 
0 Pakete aktualisiert, 6 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 7326kB an Archiven herunterladen. Nach dem Entpacken werden 41,3MB zusätzlich belegt sein.
[...]

LibPRI

Die LibPRI-Bibliothek enthält den PRI[147]-Stack, allerdings auch Funktionen für BRI[148]-ISDN-Anschlüsse. Sie ist nicht für alle Einsatzzwecke notwendig, schadet dann aber auch nicht.
debian:~# cd /usr/src/
debian:/usr/src# wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
[...]
2009-03-23 10:24:55 (108 KB/s) - »libpri-1.4-current.tar.gz« gespeichert [94075/94075]
Entpacken Sie sie wie folgt:
debian:/usr/src# tar xvzf libpri-1.4-current.tar.gz
libpri-1.4.9/
libpri-1.4.9/build_tools/
[...]
debian:/usr/src# rm libpri-1.4-current.tar.gz 
Kompilieren und installieren:
debian:/usr/src# cd libpri-1.4.9/
debian:/usr/src/libpri-1.4.9# make
[...]
debian:/usr/src/libpri-1.4.9# make install
[...]

Dahdi

Dahdi[149] ist für die Kommunikation zwischen Asterisk und ISDN/Analog-Karten zuständig. Aber auch ohne solche Karten lohnt sich die Installation, denn Dahdi erfüllt z. B. auch die Aufgabe, einen Zeittakt für Konferenzräume bereitzustellen.
Laden Sie Dahdi wie folgt herunter:
debian:~# cd /usr/src/
debian:/usr/src# wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz
[...]
2009-03-23 10:33:37 (165 KB/s) - »dahdi-linux-current.tar.gz« gespeichert [1251822/1251822]

debian:/usr/src# wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz
[...]
2009-03-23 10:37:49 (147 KB/s) - »dahdi-tools-current.tar.gz« gespeichert [413598/413598]

debian:/usr/src# 
Entpacken:
debian:/usr/src# tar xvzf dahdi-linux-current.tar.gz 
dahdi-linux-2.1.0.4/
dahdi-linux-2.1.0.4/include/
[...]
debian:/usr/src# tar xvzf dahdi-tools-current.tar.gz 
dahdi-tools-2.1.0.2/
dahdi-tools-2.1.0.2/hdlctest.c
[...]
debian:/usr/src# rm dahdi-linux-current.tar.gz 
debian:/usr/src# rm dahdi-tools-current.tar.gz 
Abhängigkeiten installieren:
debian:/usr/src# aptitude -y install libusb-dev libnewt-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libnewt-dev libpng12-0{a} libpng12-dev{a} 
  libslang2-dev{a} libusb-dev zlib1g-dev{a} 
0 Pakete aktualisiert, 6 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 1176kB an Archiven herunterladen. Nach dem Entpacken werden 3113kB zusätzlich belegt sein.
[...]
Richte libnewt-dev ein (0.52.2-11.3) ...
Richte libusb-dev ein (2:0.1.12-13) ...
[...]
Kompilieren und installieren:
debian:/usr/src# cd dahdi-linux-2.1.0.4/
debian:/usr/src/dahdi-linux-2.1.0.4# make
[...]
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-1-686'
debian:/usr/src/dahdi-linux-2.1.0.4# make install
[...]
  DEPMOD  2.6.26-1-686
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-1-686'
[...]
###################################################
###
### DAHDI installed successfully.
### If you have not done so before, install the package
### dahdi-tools.
###
###################################################
debian:/usr/src/dahdi-linux-2.1.0.4# cd ..
debian:/usr/src# cd dahdi-tools-2.1.0.2/
debian:/usr/src/dahdi-tools-2.1.0.2# ./configure 
[...]
checking for newtBell in -lnewt... yes
checking newt.h usability... yes
checking newt.h presence... yes
checking for newt.h... yes
checking for usb_init in -lusb... yes
checking usb.h usability... yes
checking usb.h presence... yes
checking for usb.h... yes
[...]
debian:/usr/src/dahdi-tools-2.1.0.2# make
[...]
make[1]: Leaving directory `/usr/src/dahdi-tools-2.1.0.2'
debian:/usr/src/dahdi-tools-2.1.0.2# make install
[...]
###################################################
###
### DAHDI tools installed successfully.
### If you have not done so before, install init scripts with:
###
###   make config
###
###################################################
debian:/usr/src/dahdi-tools-2.1.0.2# 
Init-Skripte und Konfigurationsdateien installieren:
debian:/usr/src/dahdi-tools-2.1.0.2# make config
install -D dahdi.init /etc/init.d/dahdi
/usr/bin/install -c -D -m 644 init.conf.sample /etc/dahdi/init.conf
/usr/bin/install -c -D -m 644 modules.sample /etc/dahdi/modules
/usr/bin/install -c -D -m 644 modprobe.conf.sample /etc/modprobe.d/dahdi
/usr/bin/install -c -D -m 644 blacklist.sample /etc/modprobe.d/dahdi.blacklist
/usr/sbin/update-rc.d dahdi defaults 15 30
 Adding system startup for /etc/init.d/dahdi ...
   /etc/rc0.d/K30dahdi -> ../init.d/dahdi
   /etc/rc1.d/K30dahdi -> ../init.d/dahdi
   /etc/rc6.d/K30dahdi -> ../init.d/dahdi
   /etc/rc2.d/S15dahdi -> ../init.d/dahdi
   /etc/rc3.d/S15dahdi -> ../init.d/dahdi
   /etc/rc4.d/S15dahdi -> ../init.d/dahdi
   /etc/rc5.d/S15dahdi -> ../init.d/dahdi
DAHDI has been configured.

If you have any DAHDI hardware it is now recommended you 
edit /etc/dahdi/modules in order to load support for only
the DAHDI hardware installed in this system.  By default 
support for all DAHDI hardware is loaded at DAHDI start. 

I think that the DAHDI hardware you have on your system is:
debian:/usr/src/dahdi-tools-2.1.0.2# 
Der Hinweis sagt uns, dass wir für einen schnelleren Systemstart und für ein schlankeres System in der Datei /etc/dahdi/modules alle Module auskommentieren sollten, die wir nicht für gegebenenfalls eingebaute Karten benötigen. Das ist aber kein Muss. Wer keine Karten installiert hat, kann alle Module auskommentieren.
Um jetzt nicht das System rebooten zu müssen, starten wir einfach Dahdi neu, damit die Module geladen werden:
debian:~# /etc/init.d/dahdi restart
Unloading DAHDI hardware modules: done
Loading DAHDI hardware modules:

No hardware timing source found in /proc/dahdi, loading dahdi_dummy
Running dahdi_cfg: done.
debian:~# 
Hier im Beispiel wurde ohne eingebaute Karten automatisch dahdi_dummy[150] geladen, das auch ohne ISDN-Karten einen Zeittakt bereitstellt.

Asterisk

Auf der Asterisk-Homepage http://www.asterisk.org finden Sie die notwendigen Quellen, um Asterisk zu installieren. Nehmen Sie bitte eine stabile und keine Entwickler-Version, und laden Sie diese herunter:
debian:~# cd /usr/src/
debian:/usr/src# wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
[...]
2009-03-23 10:45:32 (172 KB/s) - »asterisk-1.4-current.tar.gz« gespeichert [11858197/11858197]
Entpacken:
debian:/usr/src# tar xvzf asterisk-1.4-current.tar.gz 
asterisk-1.4.24/
[...]
debian:/usr/src# rm asterisk-1.4-current.tar.gz 
Abhängigkeiten und zusätzliche Pakete installieren:
debian:/usr/src# aptitude -y install libncurses5-dev libnewt-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libncurses5-dev 
0 Pakete aktualisiert, 1 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 1546kB an Archiven herunterladen. Nach dem Entpacken werden 6599kB zusätzlich belegt sein.
[...]
debian:/usr/src# aptitude -y install libcurl4-openssl-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  ca-certificates{a} comerr-dev{a} libcurl3{a} 
  libcurl4-openssl-dev libglib2.0-0{a} 
  libglib2.0-data{a} libidn11{a} libidn11-dev{a} 
  libkadm55{a} libkrb5-dev{a} libldap2-dev{a} 
  libpcre3{a} libssh2-1{a} libssh2-1-dev{a} 
  libssl-dev{a} openssl{a} pkg-config{a} 
0 Pakete aktualisiert, 17 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 8171kB an Archiven herunterladen. Nach dem Entpacken werden 23,2MB zusätzlich belegt sein.
[...]
debian:/usr/src# aptitude -y install libspeex-dev libspeexdsp-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libspeex-dev libspeex1{a} 
  libspeexdsp-dev libspeexdsp1{a} 
0 Pakete aktualisiert, 2 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 320kB an Archiven herunterladen. Nach dem Entpacken werden 717kB zusätzlich belegt sein.
[...]
debian:/usr/src# aptitude -y install libiksemel-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  libiksemel-dev libiksemel3{a} 
0 Pakete aktualisiert, 2 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 91,9kB an Archiven herunterladen. Nach dem Entpacken werden 299kB zusätzlich belegt sein.
[...]
debian:/usr/src# aptitude -y install unixodbc-dev
[...]
Die folgenden NEUEN Pakete werden zusätzlich installiert:
  autotools-dev{a} defoma{a} file{a} fontconfig{a} 
  fontconfig-config{a} libaudio2{a} libdrm2{a} 
  libexpat1{a} libfontconfig1{a} libfreetype6{a} 
  libgl1-mesa-glx{a} libglu1-mesa{a} libice6{a} 
  libjpeg62{a} liblcms1{a} libltdl3{a} libltdl3-dev{a} 
  libmagic1{a} libmng1{a} libodbcinstq1c2{a} 
  libqt3-mt{a} libsm6{a} libtool{a} libxcursor1{a} 
  libxdamage1{a} libxfixes3{a} libxft2{a} libxi6{a} 
  libxinerama1{a} libxmu6{a} libxrandr2{a} 
  libxrender1{a} libxt6{a} libxxf86vm1{a} 
  odbcinst1debian1{a} ttf-dejavu{a} ttf-dejavu-core{a} 
  ttf-dejavu-extra{a} ucf{a}unixodbc{a} unixodbc-dev 
0 Pakete aktualisiert, 41 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 12,8MB an Archiven herunterladen. Nach dem Entpacken werden 32,2MB zusätzlich belegt sein.
[...]
Kompilierung vorbereiten:
debian:/usr/src# cd asterisk-1.4.24/
debian:/usr/src/asterisk-1.4.24# ./configure 
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
[...]
configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : i686
debian:/usr/src/asterisk-1.4.24# 
Kompilieren[151]:
debian:/usr/src/asterisk-1.4.24# make
[...]
   [CC] astman.c -> astman.o
   [CC] md5.c -> md5.o
   [LD] astman.o md5.o -> astman
   [CC] stereorize.c -> stereorize.o
[...]
make[1]: Leaving directory `/usr/src/asterisk-1.4.24/main'
 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +               make install                +
 +-------------------------------------------+
debian:/usr/src/asterisk-1.4.24# 
Installieren:
debian:/usr/src/asterisk-1.4.24# 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    +
 +-------------------------------------------+
debian:/usr/src/asterisk-1.4.24# 
Die eben kompilierten Programmdateien sind jetzt auf dem System installiert. Allerdings finden wir im Asterisk-Konfigurationsverzeichnis /etc/asterisk/ noch gähnende Leere vor. Da wir nicht von Grund auf beginnen möchten, lassen wir uns die Standard-Beispieldateien erstellen:
debian:/usr/src/asterisk-1.4.24# make samples
[...]
debian:/usr/src/asterisk-1.4.24# 
Damit Asterisk beim Booten des Rechners auch automatisch gestartet und bei einem Shutdown ordentlich gestoppt wird, benötigen wir noch entsprechende Init-Skripte:
debian:/usr/src/asterisk-1.4.24# make config
update-rc.d: warning: /etc/init.d/asterisk missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/asterisk ...
   /etc/rc2.d/K91asterisk -> ../init.d/asterisk
   /etc/rc3.d/K91asterisk -> ../init.d/asterisk
   /etc/rc4.d/K91asterisk -> ../init.d/asterisk
   /etc/rc5.d/K91asterisk -> ../init.d/asterisk
   /etc/rc2.d/S50asterisk -> ../init.d/asterisk
   /etc/rc3.d/S50asterisk -> ../init.d/asterisk
   /etc/rc4.d/S50asterisk -> ../init.d/asterisk
   /etc/rc5.d/S50asterisk -> ../init.d/asterisk
debian:/usr/src/asterisk-1.4.24# 
Wir sind jetzt fast fertig. Leider setzt die Asterisk-Installation die Runlevels auf Debian bisher noch nicht ganz korrekt, was wir folgendermaßen beheben:
debian:/usr/src/asterisk-1.4.24# cd
debian:~# update-rc.d -f asterisk remove
 Removing any system startup links for /etc/init.d/asterisk ...
   /etc/rc2.d/S50asterisk
   /etc/rc2.d/K91asterisk
   /etc/rc3.d/S50asterisk
   /etc/rc3.d/K91asterisk
   /etc/rc4.d/S50asterisk
   /etc/rc4.d/K91asterisk
   /etc/rc5.d/S50asterisk
   /etc/rc5.d/K91asterisk
debian:~# update-rc.d asterisk defaults 50 15
update-rc.d: warning: /etc/init.d/asterisk missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/asterisk ...
   /etc/rc0.d/K15asterisk -> ../init.d/asterisk
   /etc/rc1.d/K15asterisk -> ../init.d/asterisk
   /etc/rc6.d/K15asterisk -> ../init.d/asterisk
   /etc/rc2.d/S50asterisk -> ../init.d/asterisk
   /etc/rc3.d/S50asterisk -> ../init.d/asterisk
   /etc/rc4.d/S50asterisk -> ../init.d/asterisk
   /etc/rc5.d/S50asterisk -> ../init.d/asterisk
debian:~# 
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:~# asterisk -V
Asterisk 1.4.24
debian:~# 


[145] In der Regel werden Sie das für die Architektur i386 benötigen.

[147] siehe PRI

[148] siehe BRI

[149] Bis Asterisk 1.4.21 hieß Dahdi noch Zaptel. Für weitere Informationen siehe Anhang I, Zaptel zu DAHDI.

[150] früher ztdummy

[151] An dieser Stelle vor dem Kompilieren könnte man als erfahrenerer Asterisk-Benutzer mit make menuselect in einem interaktiven Dialog bestimmte Module deaktivieren.