Руководство по сборке OpenSCADA из исходных текстов
Введение
Данное руководство призвано помочь в сборке системы OpenSCADA из исходных текстов. По мере накопления опыта сборки на различных дистрибутивах ОС Linux и на других платформах вообще документ будет дополняться особенностями и деталями сборки в различных окружениях.
Документ также содержит информацию о предварительной настройке собранной системы OpenSCADA для полноценного пуска с использованием поставляемой с исходным текстом демонстрационной БД (модель "АГЛКС").
Для сборки OpenSCADA из исходных текстов требуется опыт сборки свободного ПО, а также базовые знания в ОС Linux и используемого дистрибутива Linux, что позволит корректно удовлетворять зависимости и решать возможные проблемы сборки.
Конфигурация 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.
По окончанию конфигурации будет сформирован сводный результат настроек, с помощью которого можно проверить желаемую конфигурацию.
Прямая сборка системы OpenSCADA
Сборка должна производится от имени обычного пользователя. При этом будут рассмотрены варианты установки и исполнения как глобально в систему, так и локально, в директории пользователя. Принимаем логин пользователя — "user".
Перед сборкой входим как обычный пользователь и подменяем login "user" на Ваш, определяемся с источником исходных текстов (ftp/http-сервер или SVN-репозиторий), способом установки (глобальный или локальный) и следуем инструкции:
Этапы подготовки дерева исходных текстов к сборке:
Создание директории для сборки проекта:
$ mkdir ~/projects; cd ~/projects
Загрузка пакета с исходными текстами. Может быть произведена двумя способами:
загрузка тарбола исходных текстов и ресурсов с ftp-сервера проекта ftp://ftp.oscada.org/OpenSCADA и распаковка, например так:
$ wget ftp://ftp.oscada.org/OpenSCADA/0.8.0/openscada-0.8.0.tar.lzma
$ wget ftp://ftp.oscada.org/OpenSCADA/0.8.0/openscada-res-0.8.0.tar.lzma
$ tar --lzma -xvf openscada-0.8.0.tar.lzma
$ cd openscada-0.8.0
$ tar --lzma -xvf ../openscada-res-0.8.0.tar.lzma
получение дерева исходных текстов из SVN-репозитория проекта:
$ svn co svn://oscada.org/trunk/OpenSCADA
$ cd OpenSCADA
Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями.
Генерация сборочной системы, при загрузке из SVN-репозитория:
$ autoreconf -if
Этапы глобальной сборки:
Конфигурация сборочный системы OpenSCADA:
$ ./configure
Сборка проекта OpenSCADA:
$ make
Установка OpenSCADA:
$ su; make install
Установка ряда файлов конфигурации и данных. Пропускаем для версий OpenSCADA >= 0.8.1!
Копирование скрипта запуска и конфигурационного файла демонстрации:
Сборка пакетов системы OpenSCADA для дистрибутива Linux
Redhat-based дистрибутивы - пакет RPM
Для сборки RPM-пакетов OpenSCADA Вам понадобятся архивы исходных текстов, ресурсов и файл спецификации RPM пакета (openscada.spec, openscada_mod.spec) или же SRPM-пакет всех этих исходных материалов (openscada-0.8.0-1.src.rpm), которые можно загрузить с ftp или http-сервера проекта.
Файл спецификации RPM-пакетов и SRPM-пакет могут отличаться для разных дистрибутивов Linux, учитывая их особенности, поэтому нужно стараться загружать их в соответствии с дистрибутивом. Если специальный SRPM пакет отсутствует, то можно попробовать собрать из унифицированного файла спецификации в основном SRPM пакете.
Сборка RPM-пакетов производится в директории со специальной структурой, которая обычно создаётся при установке соответствующего пакета дистрибутива (например: rpm-build). Эта директория в зависимости от дистрибутива располагается в домашней директории пользователя или в директории /usr/src. Известные факты расположения директории сборки RPM-пакетов различных дистрибутивов:
Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями. Аргументы команды "configure" можно указать в файле "openscada.spec".
Пакеты готовы и доступны в директории Директория дистрибутива/RPMS для соответствующей архитектуры.
Этапы сборки из SRPMS пакета:
Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями.
Сборка пакетов (исходные файлы предварительно помещены в текущей директории):
$ rpmbuild --rebuild openscada-0.8.0-1.src.rpm
Пакеты готовы и доступны в директории Директория дистрибутива/RPMS для соответствующей архитектуры.
Debian-based дистрибутивы - пакет Deb
Для сборки Deb-пакетов OpenSCADA Вам понадобятся архивы исходных текстов и ресурсов, которые можно загрузить с ftp или http-сервера проекта.
Сборка Deb-пакетов производится в директории "debian" со скриптами сборки, которая содержится в архивах исходных текстов OpenSCADA.
Этапы сборки:
Создание директории для сборки проекта:
$ mkdir ~/build; cd ~/build
Загрузка пакета с исходными текстами. Загрузка тарбола исходных текстов и ресурсов с ftp-сервера проекта ftp://ftp.oscada.org/OpenSCADA и распаковка, например так:
$ wget ftp://ftp.oscada.org/OpenSCADA/0.8.0/openscada-0.8.0.tar.lzma
$ wget ftp://ftp.oscada.org/OpenSCADA/0.8.0/openscada-res-0.8.0.tar.lzma
$ tar --lzma -xvf openscada-0.8.0.tar.lzma
$ cd openscada-0.8.0
$ tar --lzma -xvf ../openscada-res-0.8.0.tar.lzma
Удовлетворение зависимостей проекта OpenSCADA для сборки в соответствии с требованиями. Аргументы команды "configure" можно указать в файле openscada-0.8.0/debian/rules.
Переход в директорию OpenSCADA и запуск сборки:
$ cd openscada-0.8.0
сборка сначала:
$ dpkg-buildpackage -rfakeroot
пропустить сборку и переупаковать, удобно при отладке openscada-0.8.0/debian/rules:
Пакеты готовы и доступны в директории уровнем выше.
Gentoo - метадистрибутив
OpenSCADA не входит в официальное дерево portage Gentoo, поэтому сборка производится из оверлея. Подробно про работу с оверлеем можно найти на сайтах документации Gentoo, например: http://ru.gentoo-wiki.com/wiki/Portage_Overlay. Перед сборкой самого пакета OpenSCADA portage удовлетворит зависимости, т.е. соберет недостающие пакеты (если необходимо).
Создание оверлея portage сводится к описанию пути для оверлейного дерева, т.е. в /etc/make.conf необходимо прописать строку:
PORTDIR_OVERLAY="/usr/local/portage"
Создать каталог /usr/local/portage/dev-util/openscada/, затем скачать файл архива ebuild c официального сайта и распаковать его в созданном каталоге.
$ cd /usr/local/portage/dev-util/openscada
$ wget ftp://ftp.oscada.org/OpenSCADA/0.8.0/Gentoo/openscada-0.8.0.ebuild.tar.gz
$ tar -xzf openscada-0.8.0.ebuild.tar.gz
Необходимо указать portage, что OpenSCADA разрешена для сборки на Вашей платформе. Для этого надо внести следующую строку в файл /etc/portage/package.keywords:
dev-util/openscada
Проверка:
$ emerge -vp openscada These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ~] dev-util/openscada-0.8.0 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
Если у Ваc нет подключения к интернету, то надо загрузить тарбол исходных текстов и ресурсов с ftp-сервера проекта и расположить их заранее в каталоге исходников portage (/usr/portage/distfiles). Если же у Вас есть подключение к интернету, то все необходимое для сборки будет взято с сервера проекта автоматически.
Необходимо выставить нужные Вам USE-флаги, с которыми будет собрана OpenSCADA. Это можно сделать в файле /etc/portage/package.use, например:
Файлы БД и ресурсов OpenSCADA готовы и будут размещены в каталоге /var/spool/openscada/, исполняемые файлы - /usr/bin/, документация - /usr/share/doc/openscada-0.8.0/.