Чтение онлайн

ЖАНРЫ

Asterisk™: будущее телефонии Второе издание
Шрифт:

Если пакеты Software Development устанавливаются на CentOS, все эти инструменты будут в наличии. Если вы стремитесь к порядку и желаете установить набор программ, только минимально необходимый для компиляции Asterisk и связанных с ней пакетов, обратитесь к табл. 3.1.

В следующей таблице использование ключа -у для приложения yum означает ответ «да» на все вопросы и обеспечит установку приложения и всех зависимостей без вывода этих вопросов на экран. Если это нежелательно, ключ -у должен быть опущен.

Если требуется установить сразу все вышеупомянутые пакеты, в командной строке можно указать несколько пакетов, например:

# yum install -у gcc ncurses-devel libtermcap-devel [...]

Таблица 3.1. Список пакетов, необходимых для компиляции libpri, zaptel и asterisk

Имя пакета Команда установки Примечание Используется программами
GCC 3.x yum install -y gcc Необходим
для компиляции zaptel, libpri и asterisk
libpri, zaptel, asterisk
ncurses-devel yum install -y ncurses-devel Необходим для menuselect menuselect
libtermcap-devel yum install -y libtermcap-devel Необходим для asterisk asterisk
Kernel yum install -y kernel-devel Необходим для компиляции zaptel zaptel
Development
Headers
Kernel Development Headers (SMP) yum install -y kernel-smp-devel Необходим для компиляции zaptel zaptel
GCC C++ 3.x yum install -y gcc-c++ Необходим для asterisk asterisk
OpenSSL (необязательный) yum install -y openssl-devel Зависимость OSP, шифрование IAX2, res_crypto (поддержка RSA- ключа) asterisk
Имя пакета Команда установки Примечание Используется программами
newt-devel yum install -y Зависимость zttool zaptel
(необязательный) newt-devel
zlib-devel yum install -y Зависимость asterisk
(необязательный) zlib-devel DUNDi
unixODBC; yum install -y Зависимость func_ asterisk
unixODBC-devel unixODBC-devel odbc, cdr_odbc,
(необязательный) res_config_odbc,
res odbc,
ODBC_STORAGE
libtool yum install -y Зависимость asterisk
(необязательный; libtool связанных с ODBC модулей
рекомендуемый)
GNU make yum install -y Необходим для компиляции asterisk
(версия 3.80 или более поздняя)* make zaptel и asterisk

Обычной ошибкой тех, кто впервые устанавливает какой-либо дистрибутив Linux, является использование программы GNU make версии 3.79 или еще более ранней. Следует учесть, что правильно сборка Asterisk может быть выполнена только при наличии версии GNU make не ниже 3.80.

Получение исходного кода

Лучше всего взять исходный код для Asterisk и его пакетов прямо на веб-сайтеhttp://www.asterisk.org или FTP-сервере.

*

Получение исходного кода Asterisk

Проще всего получить самую последнюю выпущенную версию с помощью программы wget.

Чем отличается код стабильной версии от кода, находящегося в процессе тестирования

Кодовая база Asterisk находится в процессе постоянного изменения. Для управления ею разработчики используют инструмент контроля версий Subversion (SVN) [47] . Subversion обеспечивает сообществу разработчиков возможность совместной работы над сложными проектами программного обеспечения. Существует две основных области разработки Asterisk: ветвь (Branch) и ствол (Trunk). В ствол добавляются новые функции, вносятся изменения в архитектуру и всевозможные нововведения. Это та часть кодовой базы, где содержатся все новые элементы, но которая может в любой момент оказаться

в нерабочем состоянии. Ее категорически нельзя использовать для производственной эксплуатации (см. рисунок).

47

Subversion - превосходная система управления кодом. Ее можно найти по адресуhttp://subversion.tigris.org/. Кроме того, издательство Creative Commons выпустило не менее замечательную книгу Бена Коллинза-Сассмана (Ben Collins-Sussman) и др. «Version Control with Subversion» (O'Reilly), которая представлена по адресуhttp://svnbook.red-bean.com/.

Подобно дереву, ствол имеет ветви. Эти ветви пронумерованы соответственно основным редакциям, например 1.0, 1.2 и 1.4 (в будущем мы, скорее всего, увидим 1.6, 1.8, 1.8.2, 1.8.4. 1.8.6, 1.8.8. 1.8.8.2... м-м... и т.д...). В ветви не вносятся большие архитектурные изменения или новые функции, здесь просто исправляются дефекты и выполняются работы по обеспечению безопасности. В среде производственной эксплуатации стабильность намного важнее, чем введение новых функциональных возможностей. Примерно каждые 14 месяцев (хотя Asterisk не следует формальному графику выпуска версий, как многие пакеты коммерческого программного обеспечения) выпускается версия Asterisk, предназначенная для использования в средах производственной эксплуатации. Начальная версия Asterisk шла под номером 1.0 и была представлена на самой первой конференции AstriCon в Атланте в сентябре 2004 года. Asterisk 1.2 была выпущена на IP4IT в ноябре 2005, а Asterisk 1.4 вышла в декабре 2006.

Обратите внимание, что извлекать из архива и компилировать исходный код Asterisk мы будем в папке /usr/src/, хотя некоторые системные администраторы, возможно, предпочитают использовать /usr/ local/src. Также помните, что для записи файлов в папку /usr/src/ и установки Asterisk и сопутствующих ей пакетов, необходимо иметь права администратора.

В главе 13 можно найти информацию о том, как запустить Asterisk, не будучи администратором. Все специалисты по безопасности рекомендуют запускать свои программы-демоны под учетной записью, не дающей права администратора, на случай возможного проникновения в систему вредоносного кода. Это снизит (но, конечно же, не устранит) риск похищения пароля для пользователя с правами администратора.

Чтобы получить самую последнюю выпущенную версию исходного кода с помощью wget, в командной строке необходимо ввести следующие команды:

# cd /usr/src/

# wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz

# wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz

# wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz

Последние версии пакетов asterisk, libpri и zaptel вполне могут идти под разными номерами.

И наоборот, при разработке и тестировании, вероятно, вы захотите иметь код самой новой ветви. Чтобы извлечь этот код из SVN, выполните следующую команду:

# svn coasterisk-1.4 Если исходный код получен в виде файлов выпущенной версии, размещенных на FTP-сервере Digium, перед компиляцией эти файлы необходимо извлечь из архива, о чем рассказывается в следующем разделе.

Извлечение исходного кода из архива

Пакеты, загружаемые с FTP-сервера, являются архивами, в которых содержится исходный код; таким образом, перед компиляцией код требуется извлечь из архива. Если пакеты загружены в другую папку, не /usr/src/, их надо или перенести туда или указать полный путь к ним. Для извлечения исходного кода из архива мы будем использовать GNU-приложение tar. Это простой процесс, который выполняется с помощью следующих команд:

# cd /usr/src/

# tar zxvf zaptel-1.4-current.tar.gz

# tar zxvf libpri-1.4-current.tar.gz

# tar zxvf asterisk-1.4-current.tar.gz

В bash (и других командных оболочках, поддерживающих ее) можно использовать исключительно удобную функцию автозаполнения по нажатию клавиши Tab. Это позволяет вводить лишь часть имени файла, а все остальное система дополняет автоматически. Например, если введено tar zxvf zap<tab>, система дополнит имя файла zaptel сама. Если возможно несколько вариантов подстановки, надо нажать Tab дважды - и будет представлен список имен файлов, подходящих под введенную комбинацию символов.

Выполнение этих команд обеспечит извлечение пакетов и исходного кода из архивов в соответствующие папки. Например, файл asterisk- 1.4-current.tar.gz будет извлечен в папку текущей версии Asterisk, то есть asterisk-1.4.4.

Желательно всегда сохранять исходный код последней рабочей версии пакета на случай необходимости выполнить «откат» при обнаружении очередного дефекта или странностей в поведении, которые не получается сразу разрешить.

Окно выбора компонентов сборки

В Asterisk версии 1.4.0 и связанных с ней пакетах была реализована новая система сборки autoconf. Это немного изменило процесс сборки, но предоставило больше гибкости, позволив выбирать модули, подлежащие сборке. Преимущество состоит в том, что в сборке участвуют только необходимые модули, а не весь исходный код. Вместе с системой сборки была введена новая система выбора на основе меню. Спасибо Расселу Брайанту (Russell Bryant). Эта новая система обеспечивает возможность более детального отбора подлежащих сборке модулей перед компиляцией ПО и избавляет пользователя от необходимости редактировать файлы Makefiles. Поэтому, чтобы не рассказывать, как использовать окно выбора компонентов сборки в каждом разделе «Компиляция.», обсудим это здесь, чтобы, увидев опцию make menuselect, вы знали, что должны делать с окном выбора компонентов сборки.

Поделиться с друзьями: