Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров2.9K
В какой-то момент у нас в компании назрела необходимость упростить развертывание ПО 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
Теги:
Хабы:
Всего голосов 2: ↑0 и ↓2-2
Комментарии5

Публикации

Истории

Работа

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн