By Andriy Ivashchenko
Posted on ai.kh.ua: Dec 2, 2012
http://ai.kh.ua/articles/003.html
Updated: Aug 23, 2013
Disclaimer.
1. Новое и важное в Asterisk 11 и Asterisk 10.
2. Сборка пакетов .deb для squeeze без backports
3. Сборка пакетов .deb версии Asterisk 11.5.0 для wheezy
* Почему предпочтительнее wheezy.
* Сборка с помощью live_ast.
Автор ни при каких обстоятельствах не несет ответственности за ущерб, явившийся результатом прямого или косвенного использования данной статьи. Информация предоставляется исключительно в ознакомительных целях.
В одной из статей приводился пример сборки Asterisk 1.8 в среде squeeze. Важно понимать, что на момент написания обоих статей этот релиз Debian представлял собой стабильную ветку. Если эта информация на ваш взгляд устарела, то на вопрос какая версия Asterisk актуальна в проекте Debian вы всегда сможете узнать по ссылке http://packages.debian.org/asterisk.
Релиз Asterisk 1.8 принес пользователям немало интересного и полезного. Нет нужды перечислять все изменения, потому что об этом много пишут в Интернете. Но хотелось бы выделить несколько фишек:
- здорово перелопаченный канал chan_dahdi
- SRTP
- поддержка Google Talk и Google Voice
- улучшенная работа факсов в протоколе T.38 endpoint
Возможно, уже ради двух последних фишек пошло движение в сторону 1.8
Это неплохо. Всегда хочется заглянуть дальше. Когда сообщество ждало v1.10, фирма Digium удивила, назвав свой продукт Asterisk 10.
Хочется выделить следующие очень важные особенности Asterisk 11 и Asterisk 10:
Для тех, кто больше хотел бы узнать об нововведения в Asterisk 11 и Asterisk 10 нужно идти прямиком сюда https://wiki.asterisk.org/wiki/display/AST/Asterisk+10+Documentation
Практика показала, что компиляция и пакетирование версий 10 и 11 дает хорошие результаты в контейнере squeeze. В интернете множество статей, в которых при этом пересобираются libpri, dahdi. Здесь мы этого делать не будем. Одна из причин: в squeeze версии этих библиотек вполне приемлемы и нормально работают.
Рассмотрим самые простые методы сборки на основе подготовленных заранее конфигов для debhelper.
UPD20130301: Для сборки Asterisk 10.12.1 архив
ast-10.12.1-squeeze-debian-src-20130222.tar.gz
Для сборки Asterisk 11.2.1 архив
ast-11.2.1-squeeze-debian-src-20130127.tar.gz
Далее простейшая пошаговая инструкция по сборке Asterisk 10 и следом 11, даже думать особо не придется. На выходе вы будете иметь готовые .deb обоих версий
Установим пакет debootstrap # apt-get install debootstrap Загрузим контейнер squeezeт в /opt/ # debootstrap squeeze /opt/squeeze http://ftp.de.debian.org/debian/ Загрузим файлы ast-10.12.1-squeeze-debian-src-20130222.tar.gz и ast-11.2.1-squeeze-debian-src-20130127.tar.gz в контейнер # cp ast-10.12.1-squeeze-debian-src-20130222.tar.gz \ ast-11.2.1-squeeze-debian-src-20130127.tar.gz /opt/squeeze/opt/ если у вас squeeze в основной системе, то загрузим sources.list # cat /etc/apt/sources.list > /opt/squeeze/etc/apt/sources.list Переключимся в контейнер и поехали # chroot squeeze/ Обновим репозитории # apt-get update && apt-get build-dep asterisk Сделаем необходимые для сборки каталоги # cd /opt/ # mkdir debian # mkdir debian/tarballs # mkdir debian/build-area # mkdir debian/ast-10.12.1 # mkdir debian/ast-11.2.1 Сначала разберемся с 10.12.1 # cd debian/ast-10.12.1 Распакуем скрипты # tar zxvf /opt/ast-10.12.1-squeeze-debian-src-20130222.tar.gz Загрузим исходники Asterisk 10 и перепакуем в формат DFSG автоматически # debian/rules get-orig-source Перейдем в каталог сборки и распакуем исходник DFSG # cd ../build-area/ # tar zxvf ../tarballs/asterisk_10.12.1~dfsg.orig.tar.gz # cd asterisk-10.12.1/ Скопируем скрипты debhelper внутрь исходников # cp -av ../../ast-10.12.1/debian . Применим патчи # dpkg-source --before-build . проверим чего не хватает для сборки # dpkg-checkbuilddeps Оказывается кое-чего таки не хватает, доустановим # apt-get install libmysqlclient-dev libbluetooth-dev autoconf automake \ libsqlite3-dev libgmime-2.4-dev libneon27-dev libical-dev libsrtp0-dev А теперь сама сборка .deb # debian/rules binary
На выходе имеем готовые .deb файлы в каталоге ../
С таким же успехом собираем Asterisk 11. Разжевывать пошагово нет смысла, потому что все то же самое
cd /opt/debian/ast-11.2.1 tar zxvf /opt/ast-11.2.1-squeeze-debian-src-20130127.tar.gz debian/rules get-orig-source cd ../build-area/ tar zxvf ../tarballs/asterisk_11.2.1~dfsg.orig.tar.gz cd asterisk-11.2.1/ cp -av ../../ast-11.2.1/debian/ . dpkg-source --before-build . dpkg-checkbuilddeps apt-get install libcorosync-dev debian/rules binaryUPD20130823:
Задача для продвинутых:
Войдите в каталог /opt/debian и загрузите
# svn co svn://anonscm.alioth.debian.org/svn/pkg-voip/asterisk/branches/experimental ast-11-experimental
Смотрим в файлы debian/control debian/changelog, пытаемся разобраться с зависимостями и изучаем debhelper
Актуально на дату 20130823. Можно с уверенностью сказать, что pjproject становится очень важным элементом Asterisk 11. Будет ли ему альтернатива покажет время. Первое что нужно сделать это собрать и проинсталлировать pjproject. Итак, заходим в рабочий каталог сборки и колдуем.
# У pkg-voip команды есть прекрасный git. Надеемся он будет становиться только лучше git clone git://anonscm.debian.org/pkg-voip/pjproject.git # Теперь заходим туда и ОЯЗАТЕЛЬНО накладываем патчи cd pjproject dpkg-source --before-build . # ОЧЕНЬ ВАНО поставить пакет uuid-dev Потому как его в зависимостях # может не быть еще, но без него никуда apt-get install uuid-dev # ОЯЗАТЕЛЬНО проверяем недостающие для сборки пакеты dpkg-checkbuilddeps # Теперь делаем сборку debian/rules binary # Выходим на уровень вверх, инсталлируем библиотеку в контейнер. Надо сказать # надробил Tzafrir мелких пакетов. Но контейнера-то не жалко. cd .. dpkg --install libpj*.deb # ТОЛЬКО ПОСЛЕ ТОГО КАК pjproject установлен, беремся за Asterisk git clone git://anonscm.debian.org/pkg-voip/asterisk.git cd asterisk # не забываем про патчи dpkg-source --before-build . # ОЯЗАТЕЛЬНО проверяем недостающие для сборки пакеты dpkg-checkbuilddeps # и собираем debian/rules binary #Выходим на уровень выше и разглядываем что получилось cd .. ls
UPD20130822:
Надо заметить, wheezy стал stable
Прежде всего, wheezy предпочтительней по причине более "свежих" библиотек, а так же то, что wheezy станет stable. Если вы эксперт в манипуляциях пакетами, то, возможно, что у вас получится портировать все из wheezy в среду sqeeze. Но мы здесь не будем касаться вопросов backports. Кроме того, опыт работы с коллекциями программ в wheezy поможет при апгрейде дистрибутива в будущем.
В некоторых источниках рекомендуют закачивать libpri и spandsp и заниматься пересборкой и этих библиотек. Но в Debian вам такое скорее всего не понадобится, потому что wheezy подготовлен к работе с Asterisk 1.8, Потребности 10-й версии на момент написания статьи практически совпадали. На всякий случай проконтролируйте их версии такой командой:
# dpkg -l|grep "libpri\|spandsp"
Все эти игры с контейнером добавляют вашим сборкам достаточную изоляцию от основной системы. В какой-то момент, вдруг, вы можете отказаться от затеи играть с Asterisk 11 и Asterisk 10 и с wheezy. Удаление ненужного софта не будет связано со сложными рекурсивными удалениями пакетов. Все сведётся к одной команде rm. Основная система останется абсолютно чистой и целостной.
Пока время разочарований не наступило, продолжим...
Сперва загрузите контейнер wheezy # debootstrap wheezy /opt/wheezy http://ftp.de.debian.org/debian/
Рассмотрим поближе что находится в репозитории фирмы Digium. Он находится по адресу http://svn.asterisk.org/svn/asterisk/tags/. На момент написания статьи актуальной была версия 10.12.1. Не забываем о том, что мы находимся внутри контейнера wheezy. Зайдем в каталог /opt контейнера и загрузим исходники 10.12.1
# cd /opt # svn co http://svn.asterisk.org/svn/asterisk/tags/10.12.1 ast-10.12.1 # cd ast-10.12.1Мы получили исходники астериска.
Теперь познакомимся со скриптом live_ast, который написал Tzafrir Cohen, один из разработчиков Debian и Asterisk. Используя live_ast, вы сможете создать множество самых различных версий. Можно будет параллельно держать несколько независимых сборок. Задача этого скрипта скорректировать ключи компилятора и пути к файлам, чтобы собрать в подкаталоге, например пусть это будет live/ , готовую к работе версию. Итак наберем
# contrib/scripts/live_ast conf-file Читаем и редактируем live/live.conf В нашем случае просто раскомментируем 'LIVE_AST_FOR_SYSTEM=yes' в последней строке. Далее: # contrib/scripts/live_ast configure Теперь можно поглядеть чего не хватает в модулях # make menuselect Выберите в меню все что вам покажется необходимым. На первый раз можете ничего не менять. И теперь сама сборка: # contrib/scripts/live_ast install Теперь необходимо сгенерировать конфигурационные файлы Астериска # contrib/scripts/live_ast samples
Теперь в каталоге live/ у вас имеется всё что нужно для работы Астериска. Это и библиотеки, и образцы конфигурационных файлов, и звуковые файлы для базовых функций и приложений.
Займемся разграничиванием прав доступа. Назначим пользователя и группу asterisk для конфигурационных файлов и для служебных директорий
# chown -R asterisk:asterisk live/etc/ live/var/ Запретим другим просматривать эти каталоги. Ведь в конфигах может содержаться конфиденциальная информация # chmod -R o-rwx live/etc/asterisk
Сейчас пришло время сделать очень важные для удобства символьные линки
Конфигурационный каталог /etc/asterisk # ln -s /opt/ast-10.12.1/live/etc/asterisk /etc/asterisk Исполнимый файл /usr/local/sbin/asterisk # ln -s /opt/ast-10.12.1/live/usr/sbin/asterisk /usr/local/sbin/asterisk Скрипт запуска /usr/local/sbin/safe_asterisk # ln -s /opt/ast-10.12.1/live/usr/sbin/safe_asterisk /usr/local/sbin/safe_asterisk Каталог логов /var/log/asterisk # ln -s /opt/ast-10.12.1/live/var/log/asterisk /var/log/asterisk Каталог, в котором хранится unix-сокет для конекта к Астериску и номер процесс PID /var/run/asterisk # ln -s /opt/ast-10.12.1/live/var/run/asterisk /var/run/asterisk Каталог служебных данных # ln -s /opt/ast-10.12.1/live/var/spool/asterisk /var/spool/asteriskВ последствии, при новых сборках других версий, все эти ссылки вам понадобится переделать, на новые каталоги, которые будут соответствовать реальным версиям текущего вашего Астериска.
Теперь, когда символьные ссылки готовы, необходимо провести ревизию основного конфигурационного файла Астериска. Это файл /opt/ast-10.12.1/live/etc/asterisk/asterisk.conf. Не забывайте, что теперь он, как и все остальные конфигурационные файлы, доступен под соответствующим именем в каталоге /etc/asterisk. В этом файле нужно откорректировать пути к каталогам, в зависимости от версии Астериска
[directories] astetcdir => /opt/ast-10.12.1/live/etc/asterisk astmoddir => /opt/ast-10.12.1/live/usr/lib/asterisk/modules astvarlibdir => /opt/ast-10.12.1/live/var/lib/asterisk astkeydir => /opt/ast-10.12.1/live/var/lib/asterisk astdatadir => /opt/ast-10.12.1/live/var/lib/asterisk astagidir => /opt/ast-10.12.1/live/var/lib/asterisk/agi-bin astspooldir => /opt/ast-10.12.1/live/var/spool/asterisk astrundir => /opt/ast-10.12.1/live/var/run/asterisk astlogdir => /opt/ast-10.12.1/live/var/log/asterisk astsbindir => /opt/ast-10.12.1/live/usr/sbin
Теперь следует взяться за файл live/usr/sbin/safe_asterisk. Его будем использовать для запуска сервиса PBX. Это shell-скрипт, позволяющий Астериску постоянно находиться в памяти. Внимательней отнеситесь к корректировке переменных ASTSBINDIR, ASTVARRUNDIR, ASTVARLOGDIR, а так же очень важно первоначальному значение ASTARGS присвоить "-U asterisk" вместо "". Ведь мы добиваемся, чтобы процессы работали не от рута! Переменная ASTARGS, кажется, не совсем на своем месте, поэтому потрудитесь понять логику этого скрипта
© 20082022 Андрей Иващенко
powered by static files tm