Установка из исходников Asterisk 11 на Debian 7.2
Установка из исходников Asterisk 11 на Debian 7.2
Что скачиваем?
В обычной системе устанавливается три компонента:
Asterisk
DAHDI
libpri
Библиотека libpri позволяет связать ваш Asterisk с ISDN. (Подробное описание о ISDN соединениях вы найдете в главе 450.8, "Intro to ISDN PRI and BRI Connections".) Хотя это не всегда нужно но, мы рекомендуем вам устанавливать её на новые системы.
Библиотека DAHDI позволяет Asterisk связываться с аналоговыми и цифровыми телефонами и телефонными линиями, включая соединения с Public Switched Telephone Network, или PSTN. Её желательно установить на новой системе, даже если вы не планируете ближайше время использовать аналоговые или цихровые подключения к вашему Asterisk.
DAHDI
DAHDI это Digium Asterisk Hardware Device Interface, и содержит драйвера и утилиты для аналоговых и цифровых телефных плат, которые производит Digium. Драйвера DAHDI не зависят от Asterisk, и могут быть использованны в других приложениях. DAHDI ранее назывался Zaptel, и появился из проекта Zapata Telephony.
Код DAHDI можно скачать в виде отдельных частей (dahdi-linux с драйверами DAHDI и dahdi-tools с утилитами DAHDI. Их можно скачать вместе одним пакетом с названием dahdi-linux-complete, который содержит как драйвера Linux так и утилиты.
Почему DAHDI разделен на несколько частей? DAHDI был разделен на две части (драйвера Linux и инструменты), поскольку мы начали портирование драйверов DAHDI для других операционных систем, таких как FreeBSD. В конце концов, мы будем иметь DAHDI-Linux, DAHDI-FreeBSD, и так далее. |
Текущие версии libpri, DAHDI, и Asterisk вы можете скачать с
http://downloads.digium.com/pub/telephony/
Системные требования
Для того, чтобы собрать и установить Asterisk, вам нужно установить компилятор C и ряд системных библиотек.
Компилятор
Компилятор это программа, которая берет исходный код (в случае Asterisk код, написанный на языке программирования C) и превращает его в программу, которая может быть выполнена. По идее любой компилятор C должны скомпилировать код Asterisk, однако мы настоятельно рекомендуем вам использовать компилятор GCC. Это не только самый популярный бесплатный компилятор C в системах Linux и Unix, но это также компилятор, который используют разработчики Asterisk.
Если компилятор GCC еще не установлен на вашем компьютере, просто используйте соответствующую систему управления пакетами на вашей машине, чтобы установить его. Вам также необходимо установить часть C++ в GCC, поскольку некоторые модули Asterisk будет его использовать.
Системные библиотеки
В дополнение к компилятору C, вам нужно установить системные библиотеки. Эти библиотеки использует Asterisk и должны быть установлены до компиляции Asterisk. В большинстве операционных систем, вам нужно установить библиотеку и соответствующий пакет разработки.
Библиотеки разработки Для большинства операционных систем, пакеты разработки будут иметь окончание -dev или -devel в названии. Например в Red Hat Linux, вам нужно установить оба пакета "openssl" и "openssl-devel". |
Список библиотек, которые вам нужно установить включает:
- OpenSSL
- ncurses
- newt
- libxml2
- Kernel headers (для сборки драйверов DAHDI)
Мы рекомендуем использовать менеджер пакетов вашей системы для установки этих библиотек до сборки и установки libpri, DAHDI, и Asterisk.
Помощь в нахождени и выборе библиотек Если вы устанавливаете версию Asterisk 1.6.1.0 или больше, то в комплекте вы имеете скрипт с названием install_prereq.sh в каталоге contrib/scripts. Если вы запустите скрипт install_prereq, то получите точные команды для установки необходимых системных библиотек в вашей операционной системе. Если вы запустите install_prereq install, то он попытается загрузить и установить необходимые компоненты автоматически. |
Распаковка исходников
Когда вы скачали исходники, DAHDI, и Asterisk у вас будут файлы с расширением .tar.gz или .tgz. Эти файлы ласково называют “tarballs”. Название происходит от Unix утилиты, которая делает архивы на ленте. Tarball, это коллекция файлов, объединенных в одном файле для удобства копирования, которую затем часто сжимают такими утилитами как GZip.
Чтобы извлечь исходный код из “tarballs”, мы будем использовать команду tar. Приведенные ниже команды предполагают, что вы скачали архивы для libpri, DAHDI и Asterisk в каталог /usr/local/src на своем Linux. (Вы должны войти в систему пользователем root, чтобы иметь возможность записи в этот каталог.) Мы также будем считать, что вы будете замените буквы X, Y, и Z на фактический номер закачанной вами версии архивов. Также обратите внимание, что командная строка может немного отличаться в вашей системе, от той, которую мы приведем здесь. Не волнуйтесь, команды должны работать так же. (по идеее)
Для начала, мы перейдем в каталог куда мы загрузили исходный код:
[root@server ~]# cd /usr/local/src |
Затем, давайте распакуем исходные коды каждого архива используя команду tar. Параметры -zxvf команды tar говорят, что мы хотим сделать с файлом. Опция z говорит системе сперва разархивировать (unzip) файл, потом опция x говорит, что нужно разпаковать файл из tarball, опция v указывает сообщать о каждом действии (писать имя каждого распакованного файла, и опция f говорит команде tar что мы извлекаем файл из файла, а не из ленты.
[root@server src]# tar -zxvf libpri-1.X.Y.tar.gz |
Вы увидите, что для каждого архива будет создан свой подкаталог, которых содержит распакованные файлы из соответствующего архива. Теперь мы можем собрать и установить каждый из компонентов.
Сборка и установка DAHDI
- С доступом в Интернет
- Без доступа в интернет
Давайте установим DAHDI! На Linux, мы будем использовать архив DAHDI-linux-complete, который содержит оба компонента DAHDI Linux драйвера и DAHDI инструменты. Опять же, мы предполагаем, что васпаковываете архив в каталог /usr/local/src, и что вы замените X и Y номерами соответствующих версий.
Исходные коды LibPRI 1.4.13 и старше зависят от исходников DAHDI. Поэтому сперва устанавливайте DAHDI и только потом устанавливайте libPRI. |
С доступом в Интернет
[root@server src]# cd dahdi-linux-complete-2.X.Y+2.X.Y |
Без доступа в Интернет
При установке в системе без доступа в Интернет, используйте несколько дополнительных мер, для сборки DAHDI. Нужно будет скачать файлы firmware для различных модулей VPM и распаковать в каталоге с исходными кодами. Приведенные ниже конкретные файлы, могут иметь другие версии на установки вами системы. Пожалуста перейдите по этой ссылке для просмотра полного списка версий. http://downloads.digium.com/pub/telephony/firmware/releases/
На системе с доступом в Интернет, скачиваем следующие файлы:
wget http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fw-hx8-2.06.tar.gz |
Теперь добавьте их к системе Asterisk и сохраните их в
/usr/local/src/dahdi-linux-complete-2.X.Y+2.X.Y/linux/drivers/dahdi/firmware/
Теперь мы можем продолжить установку Asterisk используя следующие шаги.
[root@server src]# cd dahdi-linux-complete-2.X.Y+2.X.Y |
Сборка и установка LibPRI
До сборки libpri, вам нужно выполнить Сборку и установку DAHDI. По завершения, мы можем скомпилировать и установить libpri. Напоминиаем, что вам нужно будет заменить символы X, Y, и Z на актуальные числа версий скачаных tarball архивов.
[root@server src]# cd libpri-1.X.Y |
Эта команда переходит в каталог с исходниками libpri.
[root@server libpri-1.X.Y]# make |
Эта команда компилирует исходный код libpri системные библиотеки.
[root@server libpri-1.X.Y]# make install |
Эта команда устанавливает библиотеку libpri в соответствующий каталог системных библиотек
Проверка требований Asterisk
Теперь пришло время скомпилировать и установить Asterisk. Давайте перейдем в каталог который содержит исходные коды Asterisk.
[root@server dahdi-linux-complete-2.X.Y+2.X.Y]# cd /usr/local/src/asterisk-1.8.X.Y |
Затем выполним команду ./configure, которая выполнит ряд проверок операционной системы, и подготовит код Asterisk к компиляции на этом конкретном сервере.
[root@server asterisk-1.8.X.Y]# ./configure |
Она будет работать в течение нескольких минут, и предупредит вас о отсутствующих системных библиотеках или других зависимостях. Если у вас отсутствуют какие либо пакеты, вы можете их установить и затем снова запустить configure, чтобы эти пакеты были опознаны. Простой способ установить большинство нужных вам пакетов, это использовать скрипт install_prereq находящийся в каталоге contrib/scripts/ исходников вашего Asterisk. Он достаточно прост в использовании, но может не работать на какихто системах. Запустите сценарий без аргументов, чтобы увидеть подсказки.
После завершения ./configure, вы должны увидеть сообщение подобное приведенному ниже. (Очевидно, тип вашего CPU может отличаться от приведенного ниже.)
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$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 : x86_64
configure: build-cpu:vendor:os: x86_64 : unknown : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : unknown : linux-gnu :
Сохраненная копия данных (Cached Data) Команда ./configure сохраняет определенные данные, чтобы ускорить процесс, в случае повторного испоьлзования. Чтобы очистить все данные в кэше системы сборки Asterisk, вы можете использовать следующую команду. [root@server asterisk-1.8.X.Y]# make distclean |
Использование Menuselect для выбора опций Asterisk
Следующий шаг в процесе сборки, сказать Asterisk какие модули компилировать и устанавливать, а также какие опции применять компилятору. Все эти настройки контролирются через систему управления с меню под названием menuselect. Чтобы вызвать menuselect, введите:
[root@server asterisk-1.8.X.Y]# make menuselect |
Asterisk 1.8+
|
menuselect должен выглядеть как на скриншоте ниже. С левой стороны, у вас есть список категорий, таких как Applications, Channel Drivers, и модули PBX. С правой стороны, вы увидите список модулей, которые соответствуют выбранной категории. В нижней части экрана вы увидите две кнопки. Вы можете использовать клавишу Tab для переключения между различными разделами, а нажимая Enter выбрать или отменить выбор конкретного модуля. Если вы видите [*] рядом с именем модуля, это означает, что модуль был выбран. Если вы видите [XXX], это означает, что выбрать модуль нельзя, так как один из его компонентов отсутствует. В этом случае, вы можете посмотреть в нижней части экрана строку с надписью Зависит от: для описания утеряной зависимости.
Когда вы впервые ставите Asterisk на тестовой системе, вы, вероятно, оставите настройки по умолчанию в menuselect. Если вы создаете промышленную систему, то вы можете не захотеть собирать все модули, а только те, которые будет использовать ваша система.
Простая отладка сбоев Asterisk Если вы увидите, что ваш Asterisk сбоит, добавьте параметры в menuselect, что бы дать дополнительную информацию для разработчиков Asterisk. Зайдите в menuselect и выберите раздел Compiler Flags (Флаги компилятора), и выбрать настройку DONT_OPTIMIZE. После пересобрать Asterisk, как и раньше. Asterisk станет немного больше, но это обеспечит дополнительную информацию для отладки в случае аварии. |
Мы также должны сказать о том, что звуковые файлы тоже выбираются в menuselect.
Когда вы закончите выбирать модули и опции в menuselect, нажмите клавишу F12 для сохранения и выхода или выберите кнопку “Save & Exit” и нажмите ВВОД.
Компиляция и установка Asterisk
Теперь мы можем скомпилировать и установить Asterisk. Для сборки Asterisk, просто наберите make в командой строке Linux.
[root@server asterisk-1.8.X.Y]# make |
Компиляция займет несолько минут, и в процессе вы будите видеть список файлов которые уже собрались. После того как сборка Asterisk завершится, вы увидите похожее сообщение.
+--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, and + + can be installed by running: + + + + make install + +-------------------------------------------+ +--------- Asterisk Build Complete ---------+ |
Это сообщение говорит о том, что нашим следующим шагом будет установка собранного Asterisk и модулей. И чтобы сделать это, используйте команду make install.
[root@server asterisk-1.8.X.Y]# make install |
После завершения, Asterisk выдасть следующее сообщение:
+---- 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 + + + +-------------------------------------------+ +---- Asterisk Installation Complete -------+ |
Меры предосторожности Как уже мы говорили, мы очень настоятельно рекомендуем вам прочитать документацию по безопасности, прежде чем устанавливать Asterisk. Несоблюдение указаниям безопастности может сделать вашу систему уязвимой к ряде случаев связанных с безопасностью и мошенничеством. Если вы установили Asterisk из архива (как показано выше), информация о безопасности находится в PDF файле с именем asterisk.pdf в подкаталоге исходных кодов tex/. Если этот файл не существует, пожалуйста, установите приложение rubber в вашей системе, а затем введите:
|
Установка файлов примеров
Для установки файлов с примерами конфигураций Asterisk, наберите:
[root@server asterisk-1.8.X.Y]# make samples |
Все уже существующие образцы файлов, которые были изменены получат расширение .old. Например, если у вас уже есть файл с именем extensions.conf, то он будет переименован в extensions.conf.old и новый пример плана набора будет установлен в качестве extensions.conf. (но архивную копию я бы сделал)
Установка скриптов инициализации
Теперь мы имеем собранный и установленный Asterisk, последним шагом установки будет установка скриптов инициализации, или initscript. Эти скрипты запускают Asterisk, когда ваш сервер загружается и начинает работать, вы также сможете останавливать (stop) или перезапускать (restart) Asteriskl. Для установки initscript, используйте команду make config
[root@server asterisk-1.8.X.Y]# make config |
Во время работы Asterisk создаются файлы журналов (logfiles). Рекомендуется установить скрипт создающий правила logrotation для сжатия и ротации файлов, это сохранит место на диске и упростит поиск. Что бы это сделать, выполните команду make install-logrotate.
[root@server asterisk-1.8.X.Y]# make install-logrotate |
Проверка установки
До того как мы продолжим, давайте проверим, правильно ли функционирует наша система. Сперва давайте проверим загружаются ли драйвера DAHDI. Чтобы увидить все загруженные модули ядра Linux, вы можете использовать lsmod, и команду grep что бы профильтровать вывод и показать только модули, которые имеют dahdi с своем имени.
[root@server asterisk-1.8.X.Y]# lsmod | grep dahdi |
Если команда ничего не вернет, значит DAHDI не запустился. Можно попробовать запустить DAHDI выполнив:
[root@server asterisk-1.8.X.Y]# /etc/init.d/dadhi start |
Различные методы запуска Initscripts Разные дистрибутивы Linux имеют различные методы запуска initscripts. Большинство основанных на Red Hat дистрибутивов ( таких как openSuSE, Red Hat Enterprise Linux, Fedora, и CentOS) позволят запустит выполнив:
Дистрибутивы основанные на Debian (такие как Ubuntu) имеют аналогичную (редко используемую) команду:
|
Если DAHDI работает, то вывод lsmod | grep dahdi должен быть похож на приведенный ниже пример. (Некоторые детали могут отличаться, это зависит от того какие модули DAHDI были собраны и пр.)
[root@server asterisk-1.8.X.Y]# lsmod | grep dahdi dahdi_dummy 4288 0 dahdi_transcode 7928 1 wctc4xxp dahdi_voicebus 40464 2 wctdm24xxp,wcte12xp dahdi 196544 12 dahdi_dummy,wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp crc_ccitt 2096 1 dahdi |
Теперь, когда DAHDI работает, вы можете запустить dahdi_hardware и получить список всех DAHDI устройств в вашей системе. Вы также можете запустить утилиту dahdi_tool и увидеть все DAHDI устройства, и их текущее состояние.
Для проверки, работает ли Asterisk, вы можете использовать Asterisk initscript.
[root@server asterisk-1.8.X.Y]# /etc/init.d/asterisk status asterisk is stopped |
Для запуска Asterisk, мы используем снова initscript, указав действие start:
[root@server asterisk-1.8.X.Y]# /etc/init.d/asterisk start Starting asterisk: |
Когда Asterisk запущен, он работает в фоновом режиме (или как демон), так что вы, как правило, не увидите ничего в командной строке. Мы можем проверить состояние Asterisk и убедиться, что он работает, с помощью команды показаной ниже. (Идентификатор процесса или PID, очевидно, будет отличаться в вашей системе.)
[root@server asterisk-1.8.X.Y]# /etc/init.d/asterisk status asterisk (pid 32117) is running... |
Вот так вы можете собрать и установить Asterisk, DAHDI и libpri из исходных кодов.
Далее приведено описание установки Asterisk из исходных кодов на Debian позаимствованное у
http://unclejoda.blogspot.com/2012/10/asterisk-18-ubuntu-1204.html с небольшими вариациями:
Будем считать что вы уже
- установили базовую систему (я устанавливаю без X)
- прописали сетевые настройки (IP адрес, маску MASK, ROUTE...) и система имеет выход в Интернет.
- настроили NTP (систему синхронизации времени)
- установили и настроили SSH
- знаете и можете настроить IPTABLES
Первым делом обновим систему
apt-get update && apt-get upgrade |
Проверим, и при необходимости установим новые файлы заголовков для ядра
apt-get install linux-headers-`uname -r` |
Устанавливаем пакеты для компилирования Asterisk:
Компилятор
apt-get install build-essential |
Библиотеки:
apt-get install libxml2-dev libncurses5-dev libreadline-dev libreadline6-dev |
Всё для Google Talk
apt-get install libiksemel-dev |
Поддержка формата ogg Vorbis
apt-get install libvorbis-dev |
Необходимое для SIP
apt-get install libssl-dev |
Поддержка кодека speex
apt-get install libspeex-dev libspeexdsp-dev |
Поддержка MySQL
apt-get install libmysqlclient-dev |
Поддержка SQLite3
apt-get install libsqlite3-dev sqlite3 |
И еще несколько дополнений
apt-get install mpg123 libmpg123-0 sox openssl wget subversion openssh-server |
Или всё разом:
apt-get install linux-headers-`uname -r` build-essential libxml2-dev libncurses5-dev libreadline-dev libreadline6-dev \ libiksemel-dev libvorbis-dev libssl-dev libspeex-dev libspeexdsp-dev libmysqlclient-dev libsqlite3-dev sqlite3 \ mpg123 libmpg123-0 sox openssl wget subversion openssh-server |
Переходим в директорию /usr/src и начинаем сборку:
cd /usr/src |
Открываем в броузере ссылку http://downloads.asterisk.org/pub/telephony/ и внимательно изучаем содержимое. Нам понадобятся три каталога: libpri, dahdi-linux-complete и asterisk
Скачиваем DAHDI для конференций MeetMe (даже если у вас нет оборудования для DAHDI)
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.1+2.6.1.tar.gz tar -zxvf dahdi-linux-complete-2.6.1+2.6.1.tar.gz cd ./dahdi-linux-complete-2.6.1+2.6.1 make make install cd .. |
Теперь переходим в libpri и выбираем ту версию которая нам интересна (принципиально можно пропустить установку libpri, но разрабочики Asterisk рекомендуют это сделать, … а вдруг пригодиться) скачиваем и устанавливаем.
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.14.tar.gz tar -zxvf libpri-1.4.14.tar.gz cd ./libpri-1.4.14 make make install cd .. |
Переходим по ссылке http://downloads.asterisk.org/pub/telephony/asterisk/releases/ и выбираем то что мы хотим установить (выбор остаеться за каждым согласно его предпочтеният и текущей коньюктуре)
Скачиваем Asterisk
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-x.x.x.x.tar.gz tar -zxvf asterisk-x.x.x.x.tar.gz cd ./asterisk-x.x.x.x |
Возможно первыми нужно скачать исходники Asterisk и запустить скрипт install_prereq.sh в каталоге contrib/scripts для проверки нужных библиотек в системе. Это ускорит процесс установки. После установить DAHDI и libpri, и только потом вернуться в каталог с исходниами Asterisk и продолжить его установку. |
Добавляем поддержку Mp3 и производим конфигурирование установщика
./contrib/scripts/get_mp3_source.sh ./configure |
Если все хорошо — мы получим лого Asterisk
Устанавливаем необходимые компоненты Asterisk
make menuconfig |
Описание что и зачем включать отдельная большая глава и будет добавлена позже ( может быть )
Создаем исполняемые файлы Asterisk
make && make install |
Копируем первичный конфиг в /etc/asterisk (учтите, если что то было то оно будет безвозвратно утряно)
make samples |
Устанавливаем стартовые скрипты для запуска Asterisk при загрузке
make config |
Добавляем поддержку 3G-модемов марки Huawei
wget https://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz tar xvzf chan_dongle-1.1.r14.tgz cd chan_dongle-1.1.r14 ./configure make make install cp /etc/dongle.conf /etc/asterisk |
Если в друг :) при make появилась ошибка, то рекомендую попробовать второй способ.
Нагуглил тут: www.ra1aie.ru/?p=1215
Сабж не компилится с 11 версией asterisk. Симптомы:
In file included from app.c:21:0: /usr/include/asterisk/version.h:1:2: error: #error "Do not include 'asterisk/version.h'; use 'asterisk/ast_version.h' instead." app.c: In function 'app_register': app.c:162:3: warning: passing argument 2 of 'ast_register_application2' from incompatible pointer type [enabled by default] In file included from app.c:20:0: /usr/include/asterisk/module.h:458:5: note: expected 'int (*)(struct ast_channel *, const char *)' but argument is of type 'int (*)(struct ast_channel *, void *)' make: *** [app.o] Error 1 |
Решение:
0. Переходим в каталог /usr/src
cd /usr/src |
1. Качаем пропатченный исходник
wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip |
2. Ставим autoconf и automake (из под root)
apt-get install autoconf automake |
3. Разархивируем исходник, переходим в его папку и выполняем одну за другой команды:
aclocal && autoconf && automake -a |
4. Ставим chan_dongle как обычно: ./configure, make, make install
./configure make make install |
5. Копируем дефолтный конфиг из /etc/chan_dongle.conf в папку с конфигом астериска.
cp /etc/dongle.conf /etc/asterisk/dongle.conf |
P.S. По описаниям это работает с 11 версией Asterisk, но не работает с 12.
Ну, а дальше - настроить конфиг /etc/asterisk/dongle.conf:
audio=/dev/ttyUSB1 ?
data=/dev/ttyUSB2 ? ¶