Автоматизируем сборку Asterisk на Oracle 8

от автора

В какой-то момент у нас в компании назрела необходимость упростить развертывание ПО Asterisk

Основная проблема возникала при сборке Asterisk из исходников, так как необходимо выбирать нужные/ненужные модули, а простое копирование файла menuselect.makeopts при переходе от версии к версии не всегда срабатывало

До кучи решили переехать с CentOS 6/7 на Oracle 8 (это, как оказалось, еще тот квест 8), так как версия свежая и инструкции, которые в этих ваших интернетах кочуют с сайта на сайт не всегда соответствуют действительности. В частности почти весь день мы угрохали на установку libedit-devel — его небыло в репозиториях, репозиторий PowerTools, на который ссылаются инструкции в интернетах, в Oracle 8 отсуствует. Оказалось, что в Oracle необходимо активировать репозиторий ol8_codeready_builder 🙂

Итак, поехали.

1. Устанавливаем Oracle 8, настраиваем сеть

2. Выполняем действия необходимые, чтобы установка Asterisk прошла без танцев с бубном:

firewall systemctl stop firewalld ; systemctl disable firewalld  sudo setenforce 0  sudo sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config  dnf in --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm   yum -y groupinstall "Development Tools"   dnf config-manager --set-enabled ol8_codeready_builder  dnf install mc wget curl bind-utils net-tools mlocate man  mutt tcpdump sysstat rsync unzip rsyslog net-snmp mailx lsof chrony  dnf install git dnsmasq svn nfs-utils patch gdb gcc gcc-c++ ncurses-devel libxml2-devel sqlite-devel unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel libtiff-devel libuuid-devel jansson-devel pjproject-devel ImageMagick ghostscript openssl-devel bzip2  mariadb-connector-odbc libedit-devel   rm -rf /etc/localtime ; ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime  systemctl enable chronyd ; systemctl start chronyd

3. В каталог /usr/src/asterisk скачиваем любимую версию asterisk с официального сайта или клонируем с github (на текущий момент актуальная LTS это 18)

https://downloads.asterisk.org/pub/telephony/asterisk/
https://github.com/asterisk/asterisk

4. Если скачали архив, то разворачиваем его и переходим в созданный каталог

tar zxvf asterisk-18-current.tar.gz ; cd asterisk-18.8.0

5. Запускаем подготовку к сборке

./configure

6. Запускаем сборку menuselect

make menuselect.makeopts

7. Сформируем файл со списком всех модулей

menuselect/menuselect —list-options > ../options.conf

8. В результате выполнения у нас получится файл со следующим содержимым

+ chan_mobile MENUSELECT_ADDONS
- chan_ooh323 MENUSELECT_ADDONS
- format_mp3 MENUSELECT_ADDONS
+ res_config_mysql MENUSELECT_ADDONS
+ app_mysql MENUSELECT_ADDONS
+ cdr_mysql MENUSELECT_ADDONS
+ app_agent_pool MENUSELECT_APPS
+ app_authenticate MENUSELECT_APPS
+ app_bridgeaddchan MENUSELECT_APPS
+ app_bridgewait MENUSELECT_APPS
.....

8. Откроем полученный файл на редактирование и ставим ± у соответсвующих модулей

9. В /usr/src/asterisk создадим файл build, который будет собирать и устанавливать Asterisk только с нужными модулями

#!/bin/bash  pushd asterisk-18.8.0  ./configure --libdir=/usr/lib64 --without-dahdi --without-pri --without-gtk2 \     --without-radius --without-x11 --without-speex --with-pjproject-bundled  # ------------------ n=0 while read line; do     # reading each line     n=$((n+1))      STATE=`echo $line | cut -d' ' -f1`     OPTION=`echo $line | cut -d' ' -f2`     CATEGORY=`echo $line | cut -d' ' -f3`      echo "Line No. $n"     echo "$line"     echo "state=$STATE cat=$CATEGORY values=$OPTION"      action='enable'     if [[ "$state" == '-' ]] ; then         action='disable'     fi      menuselect/menuselect --$action $OPTION menuselect.makeopts      echo "-------------------" done < ../options.conf  make  make install  popd 

10. Заталкиваем в git файлы build и options.conf


ссылка на оригинал статьи https://habr.com/ru/articles/587548/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *