Цей посібник покликано допомогти у збірці системи 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
Завантаження пакету з вихідними текстами. Може бути виконана двома засобами:
Збірка пакетів системи 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".
тільки встановлення та пакування, із пакету rpm-утиліт etersoft (зручно під час налагодження openscada.spec файлу):
$ rpmbb -i Тека дистрибутиву/SPECS/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:
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 з офіційного сайту та розпакувати його у створеній теці.
$ 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
Якщо у Вас немає підключення до інтернету, тоді потрібно завантажити тарбол вихідних текстів та ресурсів з ftp-серверу проекту та розташувати їх заздалегідь у теці вихідних текстів portage (/usr/portage/distfiles). Якщо ж у Вас є підключення до інтернету, тоді все потрібне для збірки буде отримано із сервера проекту автоматично.
Потрібно виставити необхідні Вам USE-прапорці, з якими буде зібрано OpenSCADA. Це можна зробити у файлі /etc/portage/package.use, наприклад:
Файли БД та ресурсів OpenSCADA готові та будуть розташовані у теці /var/spool/openscada/, виконувані файли - /usr/bin/, документація - /usr/share/doc/openscada-0.8.0/.