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 • ‎mRussian • ‎Українська

Посібник покликано допомогти у збірці 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 можна вказавши аргумент configure --help.

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

Загалом ви можете скласти OpenSCADA у трьох бінарних конфігураціях, оперуючи розташуванням бібліотеки ядра аргументом configure --enable-CoreLibStatic:

  1. Стандартно зі спільною бібліотекою ядра lib/liboscada.so.4.0.9, спільними бібліотеками модулів lib/openscada/{modTp}_{modNm}.so і бінарним файлом запуску bin/openscada — ефективне на великих системах із запуском багатьох проєктів OpenSCADA і гнучким контролем завантаженням модулів.
  2. Без спільної бібліотеки ядра, зі спільними бібліотеками модулів lib/openscada/{modTp}_{modNm}.so і бінарним файлом запуску bin/openscada зі статично вбудованим кодом бібліотеки ядра — ефективно на системах зі швидким запуском одного або декількох проєктів OpenSCADA і гнучким контролем завантаженням модулів.
  3. Усе в одному бінарному файлі запуску bin/openscada шляхом статичного вбудування сюди коду бібліотеки ядра й усіх модулів — ефективно на дуже щільних вбудованих системах для вбудування усіх потрібних функцій до максимально малого одного бінарного файлу.

По успішному завершенню конфігурації буде сформовано зведений результат налаштувань, за допомогою якого можна перевірити основні моменти.

Перед складанням необхідно визначитися з джерелом вихідних текстів, FTP/HTTP-сервер або SVN-репозиторій, та гілкою OpenSCADA, яку будете складати. Оскільки LTS гілка автоматично складається для багатьох дистрибутивів Linux, рідко оновлюється та її версія міняється з випуском нової LTS, то у цьому посібнику розглянемо збірку робочої гілки (Work) яка, своєю чергою, автоматично складається для обмеженого кола Linux дистрибутивів, часто змінюється та її адреса завжди однакова, якщо не вважати номер ревізії. Збірка LTS гілки як правило здійснюється так само і у інструкції треба "Work" замінити на версію LTS та змінити назву пакету вихідних текстів. Загалом, до назв пакетів та тек треба ставитися уважно, бо вони можуть відрізнятися версія від версії!

2 Пряме складання OpenSCADA

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

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

Етапи приготування дерева вихідних текстів до складання:

1. Створити теку для складання проєкту:
mkdir ~/projects
cd ~/projects
2. Завантажити пакет вихідних текстів. Може бути виконано у два способи:
  • [TAR] завантаження тарболу з FTP/HTTP-сервера проєкту http://ftp.oscada.org/OpenSCADA та розпакування, наприклад так:
wget http://ftp.oscada.org/OpenSCADA/Work/openscada-1+r2920.tar.xz
wget http://ftp.oscada.org/OpenSCADA/Work/openscada-res-1+r2920.tar.xz
tar -xvf openscada-1+r2920.tar.xz
cd openscada-1+r2920
tar -xvf ../openscada-res-1+r2920.tar.xz
  • [SVN] отримання дерева вихідних текстів із SVN-репозиторію проєкту:
svn co http://oscada.org/svn/trunk/OpenSCADA/
cd OpenSCADA
3. Задовільнити залежності проєкту OpenSCADA для складання відповідно до вимог.
4. [SVN] Генерувати складальну систему при завантажені із 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 Засновані на Debian дистрибутиви — пакети DEB

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

Складання DEB-пакетів відбувається у теці "debian" із скриптами складання, яка міститься у архівах вихідних текстів OpenSCADA.

Етапи складання:

1. Створити теку для складання програми:
mkdir ~/build
cd ~/build
2. Завантажити пакети вихідних текстів. Може бути виконано у два способи:
  • [TAR] завантаження тарболу з FTP/HTTP-сервера проєкту http://ftp.oscada.org/OpenSCADA та розпакування, наприклад так:
wget http://ftp.oscada.org/OpenSCADA/Work/openscada-1+r2920.tar.xz
wget http://ftp.oscada.org/OpenSCADA/Work/openscada-res-1+r2920.tar.xz
tar -xvf openscada-1+r2920.tar.xz
cd openscada-1+r2920
tar -xvf ../openscada-res-1+r2920.tar.xz
  • [SVN] отримання дерева вихідних текстів із 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.2 Засновані на 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-пакетів RPMBuildDir різних дистрибутивів:

Якщо після встановлення спеціалізованого пакету відсутній каталог RPM пакетів, тоді його необхідно створити командою:

install -m 755 -d ~/rpmbuild/{SPECS,SOURCES}         # RedHat, CentOS, Mandriva, Fedora
install -m 755 -d /usr/src/packages/{SPECS,SOURCES}  # SuSE
install -m 755 -d ~/RPM/{SPECS,SOURCES}              # ALTLinux

Етапи складання за файлом специфікації RPM:

1. Розташувати архіви OpenSCADA та файл специфікації у каталозі складання RPM (вихідні файли попередньо розташовано у поточній теці):
cp openscada-1+r2920.tar.xz openscada-res-1+r2920.tar.xz {RPMBuildDir}/SOURCES
cp openscada.spec {RPMBuildDir}/SPECS
2. Задовільнити залежності проєкту OpenSCADA для складання відповідно до вимог. Аргументи команди "configure" можна вказати у файлі "openscada.spec".
3. Скласти пакети
  • складання з початку:
rpmbuild -bb {RPMBuildDir}/SPECS/openscada.spec
  • лише встановлення і пакування, із пакету rpm-utilities від etersoft (зручно на час налагодження openscada.spec файлу):
rpmbb -i {RPMBuildDir}/SPECS/openscada.spec
4. Пакети готові та доступні у каталозі "{RPMBuildDir}/RPMS" для відповідної архітектури.

Етапи складання із SRPMS пакету:

1. Задовільнити залежності проєкту OpenSCADA для складання відповідно до вимог.
2. Скласти пакети (вихідні файли попередньо розташовано у поточній теці):
rpmbuild --rebuild openscada-1+r2920.src.rpm
3. Пакети готові та доступні у каталозі "{RPMBuildDir}/RPMS" для відповідної архітектури.

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/LTS/Gentoo/openscada-0.9.4.ebuild.tar.bz2
tar -xvf openscada-0.9.4.ebuild.tar.bz2
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 і програмовані логічні контролери (ПЛК)".

3.5 Складання для Android — APK пакети

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