[comment]: # translation:outdated

[comment]: # ({new-1f267b18})
# Сборка Zabbix агента на Windows

[comment]: # ({/new-1f267b18})

[comment]: # ({new-2cee80d5})
#### Обзор

Этот раздел демонстрирует как собрать бинарные файлы Zabbix Windows
агента из исходного кода с или без TLS.

[comment]: # ({/new-2cee80d5})

[comment]: # ({new-8b346a36})
#### Компиляция OpenSSL

Следующие шаги помогут вам в компилировании OpenSSL из исходного кода на
MS Windows 10 (64-bit).

1.  Для компиляции OpenSSL вам потребуется Windows машина с:
    1.  C компилятором (например, VS 2017 RC),
    2.  NASM (<https://www.nasm.us/>),
    3.  Perl (например, Strawberry Perl с <http://strawberryperl.com/>),
    4.  Perl модуль Text::Template (cpan Text::Template).
2.  Наличие OpenSSL исходного кода с <https://www.openssl.org/>. Здесь
    использован OpenSSL 1.1.1.
3.  Разархивируйте исходный код OpenSSL, например, в E:\\openssl-1.1.1.
4.  Откройте окно командной строки, например, x64 Native Tools Command
    Prompt for VS 2017 RC.
5.  Перейдите в директорию с исходным кодом OpenSSL, например в
    E:\\openssl-1.1.1.
    1.  Удостоверьтесь, что NASM можно
        найти:`e:\openssl-1.1.1> nasm --version
        NASM version 2.13.01 compiled on May  1 2017
        `
    2.  Настройте OpenSSL,
        например:`e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method  --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
        `

    -   Обратите внимание на опцию 'no-shared': если используется
        'no-shared', тогда статические библиотеки OpenSSL libcrypto.lib
        и libssl.lib будут 'самодостаточными' и в результате бинарные
        файлы Zabbix будут включать в себя OpenSSL, не потребуется
        внешних DLL от OpenSSL. Преимущество: бинарные файлы Zabbix
        можно копировать на другие Windows машины без библиотек OpenSSL.
        Недостаток: когда будет выпущена новая версия OpenSSL с
        исправлением ошибок, будет необходимо перекомпилировать и
        переустановить Zabbix агента.
    -   Если 'no-shared' не используется, тогда статические библиотеки
        libcrypto.lib и libssl.lib будут использоваться во время
        выполнения DLL OpenSSL. Преимущество: когда будет выпущена новая
        версия OpenSSL с исправлением ошибок, возможно вы сможете
        обновить только OpenSSL DLL, без необходимости перекомпиляции
        Zabbix агента. Недостаток: при копировании Zabbix агента на
        другую машину необходимо также копировать OpenSSL DLL.
6.  Скомпилируйте OpenSSL, выполните тесты,
    установите:`e:\openssl-1.1.1> nmake
    e:\openssl-1.1.1> nmake test
    ...
    All tests successful.
    Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr +  0.61 sys =  1.28 CPU)
    Result: PASS
    e:\openssl-1.1.1> nmake install_sw
    `'install\_sw' установит только компоненты приложения (т.е.
    библиотеки, файлы заголовков, но без документации). Если вы хотите
    установить всё, используйте "nmake install".

[comment]: # ({/new-8b346a36})

[comment]: # ({new-0c2d9aa0})
#### Компиляция PCRE

1.  Загрузите PCRE библиотеку (обязательная библиотека начиная с Zabbix
    4.0) from pcre.org, version 8.XX; не pcre2
    (<ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.zip>)
2.  Извлеките в директорию *E:\\pcre-8.41*
3.  Установите CMake с <https://cmake.org/download/>, в процессе
    установки выберите: и убедитесь, что cmake\\bin находится в вашей
    директории (протестировано с версией 3.9.4).
4.  Создайте новую, пустую директорию для сборки, предпочтительно
    поддиректорию в директории с исходным кодом. Например,
    *E:\\pcre-8.41\\build*.
5.  Откройте окно командной строки, например x64 Native Tools Command
    Prompt for VS 2017 и из этой среды окружения выполните cmake-gui. Не
    пытайтесь запустить Cmake из меню Старт Windows, так как это может
    привести к ошибкам.
6.  Введите *E:\\pcre-8.41* и *E:\\pcre-8.41\\build* для директорий с
    исходным кодом и сборки, соответственно.
7.  Надмите на "Configure" кнопку.
8.  Когда выбираете генератор для этого проекта, выберите "NMake
    Makefiles".
9.  Создайте новую, пустую директорию инсталляции. Например,
    *E:\\pcre-8.41-install*.
10. Затем GUI перечислит несколько опций конфигурации. Убедитесь, что
    следующие опции выбраны:
    -   **PCRE\_SUPPORT\_UNICODE\_PROPERTIES** ON
    -   **PCRE\_SUPPORT\_UTF** ON
    -   **CMAKE\_INSTALL\_PREFIX** *E:\\pcre-8.41-install*
11. Нажмите "Configure" снова. Соседняя кнопка "Generate" теперь должна
    быть активна.
12. Нажмите "Generate".
13. В случае возникновения ошибок рекомендуется удалить CMake кэш перед
    попыткой повторения процесса сборки CMake. В CMake GUI кэш можно
    удалить выбрав "File > Delete Cache".
14. Директория сборки теперь должна содержать пригодный для
    использования систему сборки - *Makefile*.
15. Откройте окно командной строки, например, x64 Native Tools Command
    Prompt for VS 2017 и перейдите к упомянутому выше *Makefile*.
16. Запустите команду NMake: `E:\pcre-8.41\build> nmake install
    `

[comment]: # ({/new-0c2d9aa0})

[comment]: # ({new-5b1941eb})
#### Компиляция Zabbix

Следующие шаги помогут вам в компилировании Zabbix из исходного кода на
MS Windows 10 (64-bit). При компиляции Zabbix с/без поддержки TLS
единственное существенное отличие отражено в 4 шаге.

1.  На Linux машине скачайте исходный код с
    git:`` $ git clone https://git.zabbix.com/scm/zbx/zabbix.git
    $ cd zabbix
    $ git checkout 5.0.1 -b 5.0.1 # замените 5.0.1 на послeдний доступный релиз
    $ ./bootstrap.sh
    $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd`
    $ make dbschema
    $ make dist
     ``
2.  Скопируйте и распакуйте архив, например, zabbix-5.0.0.tar.gz, на
    Windows машине.
3.  Давайте предположим, что исходный код расположен в e:\\zabbix-5.0.0.
    Откройте окно командной строки, например, x64 Native Tools Command
    Prompt for VS 2017 RC. Перейдите в e:\\5.0.0\\build\\win32\\project.
4.  Скомпилируйте zabbix\_get, zabbix\_sender и zabbix\_agent.
    -   без TLS:
        `E:\zabbix-5.0.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
        `
    -   с TLS:
        `E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
        E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
        E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
        `
5.  Новые бинарные файлы будут располагаться в
    e:\\zabbix-5.0.0\\bin\\win64. Поскольку OpenSSL был скомпилирован с
    опцией 'no-shared', бинарные файлы Zabbix содержат внутри себя
    OpenSSL и их можно копировать на другие машины, на которых нет
    OpenSSL.

[comment]: # ({/new-5b1941eb})

[comment]: # ({new-c8fe4039})
#### Компиляция Zabbix с LibreSSL

Процесс схож с компилированием с поддержкой OpenSSL, но вам необходимо
небольшие изменения в файлах, которые расположены в
`build\win32\project` директории:

      * В ''Makefile_tls'' удалите ''/DHAVE_OPENSSL_WITH_PSK'', т.е. найдите <code>

CFLAGS = $(CFLAGS) /DHAVE\_OPENSSL
/DHAVE\_OPENSSL\_WITH\_PSK</code>и замените на
`CFLAGS =    $(CFLAGS) /DHAVE_OPENSSL`

      * В ''Makefile_common.inc'' добавьте ''/NODEFAULTLIB:LIBCMT'', т.е. найдите <code>

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO
/PDB:$(TARGETDIR)\\$(TARGETNAME).pdb</code>и замените на
`/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT`

[comment]: # ({/new-c8fe4039})
