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 -ivf

Етапи глобальної збірки:

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 з офіційного сайту та розпакувати його у створеній теці.
$ 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. Якщо у Вас немає підключення до інтернету, тоді потрібно завантажити тарболи вихідних текстів та ресурсів з 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".