From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Documents/How to/Build from source and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська

Автор: Роман Савоченко, Константин

Данное руководство призвано помочь в сборке OpenSCADA из исходных текстов. По мере накопления опыта сборки OpenSCADA на различных дистрибутивах ОС Linux и других платформах вообще, документ будет дополняться особенностями и деталями сборки в различных окружениях.

На последних версиях OpenSCADA, предварительная настройка собранной программы не нужна, в случае использования при сборке пакета с ресурсами "openscada-res" или дерева исходных текстов из репозитория SVN, даже после прямой сборки. Поэтому сразу после сборки и установки программа готова к использованию!

At.png Для сборки OpenSCADA из исходных текстов требуется опыт сборки свободного ПО, а также базовые знания в ОС Linux и используемого дистрибутива Linux, что позволит корректно удовлетворять зависимости и решать возможные проблемы сборки.

1 Конфигурация OpenSCADA для сборки

Проектом OpenSCADA, в качестве сборочной системы, используется набор утилит AutoTools. Любой сборке проекта под управлением "AutoTools" предшествует стадия конфигурации, а иногда и формирования сборочной системы, под окружение ОС. Стадия конфигурации, как и непосредственно сборка, осуществляется всегда и не зависит от того производится это прямая сборка или сборка пакета.

Для формирования сборочной системы должны быть установлены утилиты "AutoTools": "autoconf", "automake" и "libtool". Общее формирование можно произвести командой $ autoreconf -if. Ранее сформированная сборочная система иногда может потребовать переформирования, например, в случае значительного различия окружения ОС, в котором сборочная система формировалась, и текущей! Переформирование сборочной системы также осуществляется ранее указанной командой формирования.

Конфигурация сборочной системы осуществляется вызовом команды $ configure. Посредством указания аргументов к этой команде можно включить-выключить функцию или модуль OpenSCADA. Получить весь список доступных параметров конфигурации и модулей OpenSCADA можно указав аргумент --help.

Включение и выключение модулей OpenSCADA осуществляется передачей аргументов --enable-{ModName} и --disable-{ModName}. Для выбора модулей можно указать политику "Включить все модули" --enable-AllModuls или "Выключить все модули" --disable-AllModuls, а далее включать-выключать отдельные модули, в зависимости от того что будет проще. Большинство модулей OpenSCADA можно влинковывать(встраивать) прямо в библиотеку ядра OpenSCADA, а не собирать отдельной библиотекой, для чего нужно указать аргумент --enable-{ModName}=incl.

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

Перед сборкой нужно определиться с источником исходных текстов, ftp/http-сервер или SVN-репозиторий, и ветвью OpenSCADA, которую Вы будете собирать. Поскольку LTS ветвь автоматически собирается для многих дистрибутивов Linux, редко обновляется и её версия меняется с выпуском новой LTS, то в этом руководстве рассмотрим сборку рабочей ветви (Work) которая, в свою очередь, автоматически собирается для ограниченного круга Linux дистрибутивов, часто меняется и её адрес всегда одинаков. Сборка LTS ветви, как правило, осуществляется также и в инструкции нужно "Work" заменить на версию LTS, а также изменить название пакета исходных текстов. В целом, к названиям пакетов и каталогов нужно относиться внимательно поскольку они, версия от версии, могут отличаться!

2 Прямая сборка OpenSCADA

Сборка должна производится от имени обычного пользователя, хотя для изолированных окружений может и от суперпользователя. При этом будут рассмотрены варианты установки и исполнения как глобально — в систему, так и локально — в директории пользователя. Принимаем логин (учётную запись) пользователя — "user".

Входим как обычный пользователь и заменяем учётную запись "user" на Вашу, определяемся со способом установки (глобальный или локальный) и следуем инструкции:

Этапы подготовки дерева исходных текстов к сборке:

1. Создание директории для сборки проекта:
$ mkdir ~/projects; cd ~/projects
2. Загрузка пакета с исходными текстами. Может быть произведена двумя способами:
  • загрузка тарбола исходных текстов и ресурсов с ftp/http-сервера проекта http://ftp.oscada.org/OpenSCADA и распаковка, например так:
$ wget http://ftp.oscada.org/OpenSCADA/Work/openscada-0.9+r2537.tar.xz
$ wget http://ftp.oscada.org/OpenSCADA/Work/openscada-res-0.9+r2537.tar.xz
$ tar -xvf openscada-0.9+r2537.tar.xz
$ cd openscada-0.9+r2537
$ tar -xvf ../openscada-res-0.9+r2537.tar.xz
  • получение дерева исходных текстов из SVN-репозитория проекта:
$ svn co http://oscada.org/svn/trunk/OpenSCADA/
$ cd OpenSCADA
3. Удовлетворение зависимостей проекта OpenSCADA для сборки, в соответствии с требованиями.
4. Генерация сборочной системы, при загрузке из SVN-репозитория:
$ autoreconf -if

Этапы глобальной сборки:

1. Конфигурация сборочный системы OpenSCADA:
$ ./configure
2. Сборка OpenSCADA:
$ make
3. Установка OpenSCADA:
$ su; make install
4. Программа готова к запуску:
$ exit; openscada

Этапы локальной сборки:

1. Конфигурация сборочный системы OpenSCADA:
$ mkdir ~/OScadaW; ./configure --prefix=/home/user/OScadaW
2. Сборка OpenSCADA:
$ make
3. Установка OpenSCADA:
$ make install
4. Программа готова к запуску:
$ cd ~/OScadaW/bin; ./openscada

3 Сборка пакетов OpenSCADA для дистрибутива Linux

3.1 Дистрибутивы основанный на RedHat — пакеты RPM

Для сборки RPM-пакетов OpenSCADA Вам понадобятся архивы исходных текстов, ресурсов и файл спецификации RPM пакета (openscada.spec, openscada_mod_ALT.spec, openscada_mod_RH.spec) или же SRPM-пакет всех этих исходных материалов.

Файл спецификации RPM-пакетов и SRPM-пакет могут отличаться для разных дистрибутивов Linux, учитывая их особенности, поэтому нужно стараться загружать их в соответствии с дистрибутивом. Если специальный SRPM пакет отсутствует то можно попробовать собрать из унифицированного файла спецификации (openscada.spec) в основном SRPM пакете или пакете ресурсов.

Сборка RPM-пакетов производится в директории со специальной структурой, которая обычно создаётся при установке соответствующего пакета дистрибутива (например: rpm-build). Эта директория, в зависимости от дистрибутива, располагается в домашней директории пользователя или в директории /usr/src. Известные факты расположения директории сборки RPM-пакетов различных дистрибутивов:

Если после установки специализированного пакета директории создания RPM пакетов нет то её нужно создать командой:

$ install -m 755 -d Директория дистрибутива/{SPECS,SOURCES}

Этапы сборки по файлу спецификации RPM:

1. Размещение архивов OpenSCADA и файла спецификации в директории сборки RPM (исходные файлы предварительно помещены в текущей директории):
$ cp openscada-0.9+r2537.tar.xz openscada-res-0.9+r2537.tar.xz Директория дистрибутива/SOURCES
$ cp openscada.spec Директория дистрибутива/SPECS
2. Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями. Аргументы команды "configure" можно указать в файле "openscada.spec".
3. Сборка пакетов
  • сборка сначала:
$ rpmbuild -bb Директория дистрибутива/SPECS/openscada.spec
  • только установка и упаковка из пакета rpm-утилит etersoft (удобно при настройке openscada.spec файла):
$ rpmbb -i Директория дистрибутива/SPECS/openscada.spec
4. Пакеты готовы и доступны в директории Директория дистрибутива/RPMS для соответствующей архитектуры.

Этапы сборки из SRPMS пакета:

1. Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями.
2. Сборка пакетов (исходные файлы предварительно помещены в текущей директории):
$ rpmbuild --rebuild openscada-0.9+r2537.src.rpm
3. Пакеты готовы и доступны в директории Директория дистрибутива/RPMS для соответствующей архитектуры.

3.2 Дистрибутивы основанный на Debian — пакеты DEB

Для сборки DEB-пакетов OpenSCADA Вам понадобятся архивы исходных текстов и ресурсов.

Сборка DEB-пакетов производится в директории "debian" со скриптами сборки, которая содержится в архивах исходных текстов OpenSCADA.

Этапы сборки:

1. Создание директории для сборки программы:
$ mkdir ~/build; cd ~/build
2. Загрузка пакета с исходными текстами. Может быть произведена двумя способами:
  • загрузка тарбола исходных текстов и ресурсов с ftp/http-сервера проекта http://ftp.oscada.org/OpenSCADA и распаковка, например так:
$ wget http://ftp.oscada.org/OpenSCADA/Work/openscada-0.9+r2537.tar.xz
$ wget http://ftp.oscada.org/OpenSCADA/Work/openscada-res-0.9+r2537.tar.xz
$ tar -xvf openscada-0.9+r2537.tar.xz
$ cd openscada-0.9+r2537
$ tar -xvf ../openscada-res-0.9+r2537.tar.xz
  • получение дерева исходных текстов из SVN-репозитория проекта:
$ svn co http://oscada.org/svn/trunk/OpenSCADA/
$ cd OpenSCADA
3. Выбор типа сборки:
  • бинарные файлы в одном пакете:
$ ln -s data/debian debian
  • бинарные файлы модулей в отдельных пакетах:
$ ln -s data/debian_mod debian
4. Удовлетворение зависимостей проекта OpenSCADA для сборки, в соответствии с требованиями. Аргументы команды "configure" можно указать в файле "debian/rules".
5. Сборка:
  • сборка сначала:
$ dpkg-buildpackage -rfakeroot
  • пропустить сборку и переупаковать, удобно при отладке "debian/rules":
$ fakeroot debian/rules binary
$ fakeroot debian/rules build
6. Пакеты готовы и доступны в директории уровнем выше.

3.3 Gentoo — метадистрибутив

OpenSCADA не входит в официальное дерево portage Gentoo, поэтому сборка производится из оверлея. Перед сборкой самого пакета OpenSCADA, portage удовлетворит зависимости, т.е. соберет недостающие пакеты (если необходимо).

1. Создание оверлея portage сводится к описанию пути для оверлейного дерева, т.е. в "/etc/make.conf" необходимо прописать строку:
PORTDIR_OVERLAY="/usr/local/portage"
2. Создать каталог "/usr/local/portage/dev-util/openscada/", затем скачать файл архива ebuild c официального сайта и распаковать его в созданном каталоге.
$ cd /usr/local/portage/dev-util/openscada
$ wget http://ftp.oscada.org/OpenSCADA/Work/Gentoo/openscada.0.9-ebuild.tar.gz
$ tar -xzf openscada.0.9-ebuild.tar.gz
3. Необходимо указать portage, что OpenSCADA разрешена для сборки на Вашей платформе. Для этого надо внести следующую строку в файл "/etc/portage/package.keywords":
dev-util/openscada
4. Проверка:
$ emerge -vp openscada
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   R   ~] dev-util/openscada-0.9  USE="mysql ssl -bfn -blockcalc -daqgate -dbarch -dbase -dcon -demo -diamondboards -doc (-firebird) -flibcomplex1 -flibmath -flibsys -fsarch -http -icp_das -javalikecalc -logiclev -modbus -portaudio -qtcfg -qtstarter -selfsystem -serial -simens -snmp -sockets -sqlite -system -systemtest -vcaengine -vision -webcfg -webcfgd -webvision" 79,647 kB [1]

Total: 1 package (1 reinstall), Size of downloads: 79,647 kB
Portage tree and overlays:
 [0] /usr/portage
 [1] /usr/local/portage
5. Если у Ваc нет подключения к интернету, то надо загрузить тарболы исходных текстов и ресурсов с ftp/http-сервера проекта и расположить их заранее в каталоге исходников portage "/usr/portage/distfiles". Если же у Вас есть подключение к интернету, то все необходимое для сборки будет взято с сервера проекта автоматически.
6. Необходимо выставить нужные Вам USE-флаги, с которыми будет собрана OpenSCADA. Это можно сделать в файле "/etc/portage/package.use", например:
dev-util/openscada dcon demo http javalikecalc mysql qtcfg qtstarter ssl vision webcfg webcfgd webvision blockcalc dbarch dbase doc flibcomplex1 flibmath flibsys fsarch logiclev modbus serial sockets sqlite vcaengine
7. Непосредственно сборка:
$ emerge -q openscada
8. Файлы БД и ресурсов OpenSCADA готовы и будут размещены в каталоге "/var/spool/openscada/", исполняемые файлы — "/usr/bin/", документация — "/usr/share/doc/openscada-0.9/".

3.4 Легковесная система управления пакетами — IPKG пакеты

Областью применения менеджера пакетов и пакетов IPKG в основном являются встраиваемые окружения Linux с ограниченным объёмом памяти вроде роутеров беспроводных сетей. Соответственно и сборка пакетов IPKG является частью сборочных систем таких окружений, и описание этой процедуры не можно рассматривать отдельно от самой сборочной системы, поэтому на предмет создания IPKG пакетов OpenSCADA читайте в разделе "Дистрибутив OpenWRT" под-проекта "Общее встраивание OpenSCADA и программированные логические контроллеры (ПЛК)".

4 Сборка для Android — APK пакеты

Операционная система Android является программным окружением на основе ядра Linux, которое в основном предназначено и используется на мобильных телефонах, смартфонах, планшетах и другом оборудовании с сенсорным экраном. Стороннее программное обеспечение для Android распространяется в виде APK-пакетов, сборку которого невозможно рассмотреть в отрыве от сборочного окружения Android SDK, NDK и сборки всех зависимостей OpenSCADA, поэтому на предмет сборки OpenSCADA и создания её APK-пакетов читайте в под-проекте "Адаптация OpenSCADA к платформе Android".