Установка Asterisk 1.8 на Debian/GNU Linux (squeeze)

Установка Asterisk 1.8 на Debian/GNU Linux (squeeze)

By Andriy Ivashchenko
Posted on ai.kh.ua: Mar 25, 2011
http://ai.kh.ua/articles/002.html
Updated: Jun 16, 2013

Upd: Dec 10, 2012. Реклама: Выходит новая статья, пока в черновом варианте, Установка Asterisk 11 и Asterisk 10 на Debian squeeze в контейнер wheezy

Disclaimer.
1. Методика установки пакетов в Debian.
2. О команде разработчиков Debian VoIP team.
3. Генерация "base system from scratch"
4. Получение исходных кодов, компиляция и сборка пакетов.

Disclaimer.

Автор ни при каких обстоятельствах не несет ответственности за ущерб, явившийся результатом прямого или косвенного использования данной статьи. Информация предоставляется исключительно в ознакомительных целях.

1. Методика установки пакетов в Debian.

На данный момент Debian/GNU Linux предоставляет огромный выбор пакетов как для создания IP АТС, так и для мультимедийных клиентских платформ. В Репозитории вы можете найти все необходимое для работы с протоколами передачи голосовой и видеоинформации.

Пакет программ в Debian представляет собой один или несколько deb-файлов. Высокоуровневая система управления пакетами называется Advanced Packaging Tool (APT) и представляет собой оболочку для низкоуровневой системы dpkg. APT оказался настолько производительным, удобным и открытым средством, что его взяли на вооружение другие дистрибутивы.

Debian 6 , кодовое имя "squeeze", представляет стабильную ветку на момент написания статьи. При помощи APT вы сможете легко установить пакет программ Asterisk версии 1.6. Но жизнь не стоит на месте. Для тех, кто активно интересуется версией 1.8, существует несколько путей получить набор deb-файлов и установить их в системе.

A - Подключить Репозиторий Digium, воспользовавшись их инструкцией.
B - Самому собрать deb-файлы.

Собственно цель статьи -- освоить сборку пакета программ из SVN репозитория. Существуют и другие методики установки Asterisk версии 1.8, но мы остановимся на той, которая позволит получить deb-файлы. SVN используется в связи с тем, что исходные коды Asterisk 1.8 находятся в активной стадии отладки и мы можем их получить "прямо из печки".

2. О команде разработчиков Debian VoIP team

Все пакеты программ, которые связаны с протоколами VoIP, собираются командой Debian VoIP team. Если вас интересует список людей, кто участвует в разработке, то это можно узнать на странице Проекта Alioth. Здесь же вы можете подать заявку на участие в проекте, если считаете, что обладаете достаточной квалификацией в процессах сборки и отладки пакетов программ для Debian.

Посмотреть дерево проекта можно через Web-интерфейс SVN VoIP team. (UPD 20110808: или http://anonscm.debian.org/viewvc/pkg-voip/)

Участники Debian VoIP team настоящие профессионалы в области разработки средств VoIP. При этом, как правило, они являются сотрудниками тех компаний, которые ведут разработку ключевых приложений. Например Paul Belanger является сотрудником Digium, которая собственно и разработала Asterisk. А вот Tzafrir Cohen является представителем компании Xorcom, которая известна не только программными, но и аппаратными решениями для IP АТС.

Не столь давно появившаяся система Ubuntu базируется на проекте Debian. Ubuntu VoIP разработчики многое берут из Debian, так как компания Canonical, управляющая Ubuntu, не смогла бы справиться с огромным количеством портируемых пакетов. Но при этом Ubuntu приносит ощутимую пользу Debian, потому что сообщество Ubuntu помогает в отладке благодаря всё возрастающему количеству участников обоих проектов. На данный момент в процессе активной разработки система обмена патчами между проектами. Таким образом обе системы помогают друг другу активно развиваться. Это пример того, как в сообществе открытого ПО, казалось бы, конкурирующие системы на самом деле являются партнерами.

Данная статья не рассматривает методик инсталляций Asterisk 1.8 в Ubuntu, хотя можно сказать, что они очень похожи, так как обе системы используют dpkg и APT.

3. Генерация "base system from scratch"

Данная глава посвящена тому, как внутри готовой системы Debian сгенерировать "базовый комплект" дистрибутива squeeze. Это не обязательно, если у вас уже squeeze и вы готовы добавлять пакеты в основную систему для процессов сборки. Но если вы хотите чтоб ваша система осталась не тронутой, то приступим к получению среды в которой "сварим" новый Asterisk.

- Загружаем программу установки, которая называется debootstrap
# apt-get install debootstrap

- создаем каталог где будем создавать базовую систему (у нас это /var/opt/chroots)
# mkdir /var/opt/chroots
# cd /var/opt/chroots
# debootstrap squeeze ./squeeze-chroot http://ftp.us.debian.org/debian

- После того, как система установилась, примонтируем каталог proc, чтобы безболезненно можно было переключиться в неё при помощи chroot.
# mount -t proc proc squeeze-chroot/proc
# chroot squeeze-chroot

- Теперь в файл /etc/apt/sources.list добавляем следующие строки, чтобы активировать репозитории squeeze для системы
deb-src http://ftp.de.debian.org/debian/ squeeze main non-free contrib
deb http://ftp.de.debian.org/debian/ squeeze main non-free contrib
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

- Вгрузим информацию о пакетах
# apt-get update
# apt-get clean

- Таким образом мы приготовили базовую систему. Вы можете заархивировать ее, чтоб не выполнять такую процедуру еще раз:
# exit
# umount squeeze-chroot/proc
# tar zcvf squeeze-chroot-`date "+%Y%m%d"`.tar.gz squeeze-chroot/

- И вернуться назад в chroot
# mount -t proc proc squeeze-chroot/proc
# chroot squeeze-chroot

4. Получение исходных кодов, компиляция и сборка пакетов

- Вгрузим длинный список пакетов, необходимых для сборки asterisk
# apt-get build-dep asterisk

- Еще нам необходимы для сборки пакеты svn-buildpackage, autoconf, automake
# apt-get install svn-buildpackage autoconf automake

- Предположим сборку осуществляем в /usr/src/
# cd /usr/src

- Забираем из SVN дерева адаптированные патчи.
# svn co svn://anonscm.alioth.debian.org/svn/pkg-voip/asterisk/trunk asterisk

- Это только патчи и файлы для сборки пакетов. Самого исходника asterisk пока нет. Чтоб получить его, нужно зайти в каталог asterisk и выполнить команду:
# cd asterisk/
# ./debian/rules get-orig-source

(# UPD20110808: зависимости можно посмотреть при помощи dpkg-checkbuilddeps )

- После того, как закачаются исходники, нужно запустить сборку.
# svn-buildpackage -uc -us -rfakeroot

- С первой попытки вы получите сообщения об ошибках. Это потому, что Asterisk 1.8 требует дополнительной установки программ. Оказывается не достаточно apt-get build-dep asterisk, потому что в репозитории squeeze зависимости рассчитаны только на версию 1.6. Но это не проблема. Вот какой вывод покажет команда svn-buildpackage:

Complete layout information:
  origDir=/usr/src/tarballs
  trunkDir=/usr/src/asterisk
    trunkUrl=svn://anonscm.alioth.debian.org/svn/pkg-voip/asterisk/trunk
	dpkg-checkbuilddeps
	dpkg-checkbuilddeps: Unmet build dependencies: libreadline-dev | 
	libreadline5-dev libgsm1-dev libssl-dev libtonezone-dev (>= 1:2.0.0) 
	libasound2-dev libpq-dev unixodbc-dev libmysqlclient-dev | 
	libmysqlclient15-dev libbluetooth-dev libpri-dev (>= 1.4.11) 
	libss7-dev libvpb-dev dahdi-source libnewt-dev libsqlite0-dev | 
	libsqlite-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev | 
	libcurl-dev libxml2-dev libpopt-dev libopenh323-dev (>= 1.17.4) 
	libiksemel-dev libradiusclient-ng-dev freetds-dev libvorbis-dev 
	libsnmp-dev libc-client2007e-dev | libc-client2007b-dev 
	libgmime-2.4-dev | libgmime2-dev libjack-dev liblua5.1-0-dev 
	libcap-dev (>= 1:2.16-4) | libcap2-dev libspandsp-dev libopenr2-dev 
	libresample1-dev libopenais-dev libneon27-gnutls-dev | 
	libneon27-dev libical-dev libsrtp0-dev zlib1g-dev
Insufficient Build-Deps, stop!


- Добавляем необходимые библиотеки файлов заголовков. При этом "подтянутся" и остальные нужные библиотеки".
# apt-get install libmysqlclient-dev libbluetooth-dev libneon27-dev libical-dev libsrtp0-dev

- UPD 20110727: дополнительный список пакетов, требуемый для сборки. Надо сказать, список изрядно увеличился.
# apt-get install libreadline-dev libgsm1-dev libssl-dev libtonezone-dev libasound2-dev libpq-dev unixodbc-dev libmysqlclient-dev libbluetooth-dev libpri-dev libss7-dev libvpb-dev dahdi-source libnewt-dev libsqlite-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev libxml2-dev libpopt-dev libopenh323-dev libiksemel-dev libradiusclient-ng-dev freetds-dev libvorbis-dev libsnmp-dev libc-client2007e-dev libgmime2-dev libjack-dev liblua5.1-0-dev libcap-dev libspandsp-dev libopenr2-dev libresample1-dev libopenais-dev libneon27-dev libical-dev libsrtp0-dev zlib1g-dev

- UPD 20111212: В дистрибутивах wheezy и sid обновили версию libpri, поэтому asterisk не захочет собираться. Эту ситацию можно решить двумя способами:
а) пересобрать libpri
б) подкорректировать файл debian/control, оставив версию от squeeze, следующим образом: найти строчку libpri-dev (>= 1.4.12) и заменить её на libpri-dev (>= 1.4.11). Это будет обознать, что вы остаётесь на стабильной версии libpri.
Так же в случае выбора "б)" вам придется добавить ключ --svn-ignore к команде svn-buildpackage, иначе сборка будет невозможна

- Теперь повторим сборку
# svn-buildpackage -uc -us -rfakeroot --svn-ignore
- В результате сборки у вас появится каталог ../build-area, в котором будут находиться свежайшие deb-файлы пакета asterisk версии 1.8

А что дальше?...Дальше вы должны тщательно изучить как пользоваться ключом --install у пакета dpkg.


© 2008—2022 Андрей Иващенко
powered by static files tm