Red Hat

Эти инструкции применяются ко всем дистрибутивам Red Hat и их клонам, включая, но не ограничиваясь: Fedora, RHEL, Rocky Linux, Alma Linux и другие. Хотя инструкции по установке одинаковы для каждого дистрибутива, причина, по которой один человек может использовать один дистрибутив вместо другого, различна. Краткое описание следует, которое предназначено для того, чтобы помочь вам выбрать, какой дистрибутив лучше всего соответствует вашим потребностям.

Бэкграунд: RHEL, Rocky Linux и клоны

Эти дистрибутивы классифицируются как корпоративные операционные системы и имеют долгий срок службы в несколько лет. По замыслу, они не будут иметь последних и лучших версий любого пакета. Вместо этого акцент делается на стабильных пакетах.

Замена любого основного пакета в этих дистрибутивах на более новый пакет от третьей стороны строго запрещена. Команда разработчиков ZoneMinder этого не сделает, и вам тоже не следует. Если у вас сложилось впечатление, что вам нужна более новая версия PHP, MySQL, GNOME, Apache и т.д., то вместо обновления этих пакетов лучше рассмотреть использование другого дистрибутива, такого как Fedora.

Команда ZoneMinder не будет оказывать поддержку системам, в которых были заменены любые основные пакеты на пакеты от третьей стороны.

Бэкграунд: Fedora

Можно рассматривать Fedora как бета-версию RHEL. Это, по сути, то, чем она является. Fedora в первую очередь ориентирована на разработку и тестирование новых, иногда передовых пакетов. Команда ZoneMinder использует эту дистрибутивную версию для определения совместимости ZoneMinder с последними и лучшими версиями пакетов, таких как MySQL, Apache, systemd и других. Если обнаруживается проблема, она будет устранена задолго до того, как попадет в RHEL.

Жизненный цикл Fedora составляет всего 6 месяцев. Fedora 36 - это последний выпуск, поддерживающий архитектуру armv7, и, следовательно, Raspberry Pis, выпущенные до Raspberry Pi 2 v 1.2. F36 снята с производства в мае 2023 года.

Если вы хотите использовать пакеты, более новые, чем те, которые доступны в RHEL или его клонах, вам следует рассмотреть возможность использования Fedora.

Как избежать известных проблем установки

Следующие заметки основаны на реальных проблемах, которые возникли у ваших предшественников:

  • Zmrepo предполагает, что у вас базовая установка с использованием официальных средств установки для этого дистрибутива. «Spins» третьих сторон могут не работать корректно.

  • ZoneMinder предназначен для установки в среде, специально выделенной для ZoneMinder. Хотя ZoneMinder будет хорошо работать со многими приложениями, некоторые из них неизбежно не будут. Asterisk - один из таких примеров.

  • Обратите внимание, что устанавливать ZoneMinder необходимо на чистую систему.

  • Если вы ранее установили ZoneMinder из исходников, то ваша система НЕ чистая. Вам необходимо вручную искать и удалять все связанные с ZoneMinder файлы (посмотрите в /usr/local). Выполнение команды «make uninstall» помогает, но она не сделает это за вас правильно. У вас БУДУТ проблемы, если вы проигнорируете этот шаг.

  • В отличие от дистрибутивов Debian/Ubuntu, нет необходимости и не рекомендуется устанавливать стеки LAMP заранее.

  • Отключите любые другие репозитории сторонних разработчиков и удалите любые зависимости ZoneMinder от сторонних разработчиков, которые уже могут быть установлены на системе, особенно ffmpeg и vlc. Попытка установить зависимости самостоятельно часто приводит к проблемам.

  • Каждый пакет ZoneMinder включает файл README в /usr/share/doc. Вам необходимо выполнить все шаги этого файла README каждый раз при установке или обновлении ZoneMinder. Несоблюдение этого гарантированно приведет к неработоспособности системы.

Как установить ZoneMinder

Релизы ZoneMinder размещаются на RPM Fusion. Новые пользователи должны перейти на сайт RPM Fusion и следовать инструкциям по включению этого репозитория.

Кроме RPM Fusion, пользователи RHEL должны включить репозиторий EPEL:

sudo dnf install epel-release

Пользователям RHEL 8 также следует включить репозиторий powertools:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-enabled powertools

Пользователям RHEL 9 также следует включить репозиторий crb:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-enabled crb

После активации дополнительных репозиториев запустите установку ZoneMinder из командной строки. Выберите пакет, соответствующий желаемому веб-серверу.

Установите ZoneMinder для веб-сервера Apache:

sudo dnf install zoneminder-httpd

Установка ZoneMinder для веб-сервера Nginx:

sudo dnf install zoneminder-nginx

После установки ZoneMinder вам необходимо прочитать файл README для завершения установки. Пользователи Fedora могут найти README в /usr/share/doc/zoneminder-common. Пользователи RHEL могут найти README в /usr/share/doc/zoneminder-common-x.xx, где x.xx - это версия ZoneMinder.

ZoneMinder не будет работать без выполнения шагов, описанных в README!

Как установить ночные сборки разработки

Пакеты разработки ZoneMinder, представляющие последнюю сборку из нашей ветки мастеров, доступны с zmrepo <https://www.zoneminder.com>.

Обратная связь, которую мы получаем от тех, кто использует эти пакеты разработки, чрезвычайно полезна. Однако, пожалуйста, поймите, что эти пакеты предназначены только для тестирования последней ветки мастер. Они не предназначены для использования в рабочей системе. Они будут содержать ошибки, а новые функции могут не быть задокументированы. Пожалуйста, учтите это, когда используете этот репозиторий. Мы знаем из нашего пользовательского форума, что важность этого утверждения сложно переоценить.

Как создать собственный пакет ZoneMinder

Если вы хотите заняться разработкой или имеющиеся пакеты просто не подходят вам, то вы можете следовать этим шагам для создания собственного пакета ZoneMinder RPM.

Бэкграунд

Следующий метод описывает, как собрать ZoneMinder в пакет RPM для Fedora, Red Hat, Rocky Linux и других совместимых клонов. Это именно так, как строятся пакеты в zmrepo.

Метод, описанный ниже, был выбран потому, что:

  • Все зависимости ZoneMinder загружаются и устанавливаются автоматически

  • Кросс-платформенная совместимость. Компьютер для сборки не должен быть той же версией дистрибутива или выпуска, что и цель.

  • После того как ваша среда для сборки будет настроена, потребуется выполнить несколько шагов, чтобы запустить сборку снова в будущем.

  • Диагностика становится проще, если мы все строим ZoneMinder одним и тем же способом.

*ВАЖНО* Некоторые команды в этих инструкциях требуют привилегий суперпользователя, в то время как другие команды их не требуют. Обратите на это особое внимание. Если в инструкциях ниже указано выдать команду без префикса sudo, то вам не следует быть суперпользователем при выдаче этой команды. Неправильное выполнение этого может привести к неудачной сборке, а в худшем случае - к повреждению системы.

Настройте свою среду

Перед началом работы настройте среду rpmbuild, следуя руководству CentOS developers. Эти инструкции применимы к Rocky Linux и его клонам.

Кроме того, убедитесь, что RPM Fusion включен так, как описано в предыдущем разделе Как установить ZoneMinder.

С RPM Fusion включенным, выполните следующую команду:

sudo yum install mock-rpmfusion-free mock

Добавьте учетную запись пользователя в группу mock:

sudo gpasswd -a {your account name} mock

Ваша среда разработки теперь настроена.

Сборка из RPM

Для продолжения вам потребуется пакет ZoneMinder SRPM. Если вы хотите пересобрать выпуск ZoneMinder, то перейдите на сайт RPM Fusion <https://rpmfusion.org/>. Если же вы хотите пересобрать последний rpm-пакет от нашей мастер-ветки, то перейдите на сайт Zmrepo <http://zmrepo.zoneminder.com/>.

Для этого примера я использую один из исходных rpm-файлов из zmrepo:

wget -P ~/rpmbuild/SRPMS http://zmrepo.zoneminder.com/el/7/SRPMS/zoneminder-1.31.1-1.el7.src.rpm

Теперь начинается веселая часть. Для создания ZoneMinder выполните следующую команду:

mock -r epel-7-x86_64-rpmfusion_free ~/rpmbuild/SRPMS/zoneminder-1.31.1-1.el7.src.rpm

Хотите построить ZoneMinder для Fedora, а не для RHEL, на том же хосте? Как только вы загрузите пакет Fedora SRPM, выполните следующее:

mock -r fedora-26-x86_64-rpmfusion_free ~/rpmbuild/SRPMS/zoneminder-1.31.1-1.el7.src.rpm

Обратите внимание, что инструмент-симулятор требует следующих параметров:

mock -r MOCKCONFIG ZONEMINDER_SRPM

Список доступных файлов конфигурации Mock доступен здесь:

ls /etc/mock/*rpmfusion_free.cfg

Вы выбираете файл конфигурации, исходя из желаемой дистрибуции (например, el7, f29, f30) и базового архитектуры (например, x86, x86_64, armhfp). Обратите внимание, что, указывая конфигурацию Mock в качестве параметра командной строки, вы должны опустить расширение имени файла «.cfg».

Установка

После завершения сборки вам будет представлен сообщение, указывающее, где можно найти новые rpm-файлы. Оно будет выглядеть примерно так:

INFO: Results and/or logs in: /var/lib/mock/fedora-26-x86_64/result

Скопируйте только что построенные пакеты ZoneMinder на желаемую систему, активируйте RPM Fusion, как описано в How to Install ZoneMinder, и затем установите rpm, выдав соответствующую команду yum/dnf install. Завершите установку, следуя инструкциям по настройке ZoneMinder в файле справки дистрибутива, название которого будет README.{distroname}, который будет установлен в папку /usr/share/doc/zoneminder*.

Наконец, вы можете рассмотреть возможность редактирования файла репозитория rpmfusion под /etc/yum.repos.d и добавления строки «exclude=zoneminder*» в конфигурационный файл. Это предотвратит перезапись вашей вручную построенного RPM с RPM ZoneMinder, найденным в репозитории.

Как создать собственный пакет Source RPM

В предыдущем разделе мы описали, как пересобрать существующий пакет ZoneMinder SRPM. Следующие инструкции показывают, как построить исходный репозиторий Git ZoneMinder в источник RPM, который можно использовать в предыдущем разделе для создания RPM.

Убедитесь, что установлены git и rpmdevtools:

sudo yum install git rpmdevtools

Теперь клонируйте репозиторий Git ZoneMinder из вашей домашней папки:

cd
git clone https://github.com/ZoneMinder/zoneminder
cd zoneminder

Это создаст подпапку с названием ZoneMinder, которая будет содержать последнюю версию исходного кода разработки.

Если вы ранее клонировали репозиторий ZoneMinder с помощью git и хотите обновить его до последней версии, выполните следующие команды:

cd ~/zoneminder
git pull origin master

Получите архив подмодуля CRUD:

spectool -f -g -R -s 1 ~/zoneminder/distros/redhat/zoneminder.spec

Получите архив подмодуля cakephp-enum-behavior:

spectool -f -g -R -s 2 ~/zoneminder/distros/redhat/zoneminder.spec

Получите архив с подмодулем Rtsp-сервера:

spectool -f -g -R -s 3 ~/zoneminder/distros/redhat/zoneminder.spec

На данном этапе вы можете вносить изменения в исходный код. В зависимости от того, что вы хотите делать с этими изменениями, обычно вам следует сначала создать новую ветку:

cd ~/zoneminder
git checkout -b mynewbranch

Опять же, в зависимости от того, что вы хотите делать с этими изменениями, вам может потребоваться сохранить свои изменения:

cd ~/zoneminder
git add .
git commit

После того как вы внесли изменения, пришло время преобразовать вашу работу в новый tarball, но сначала нам нужно взглянуть на файл спецификации rpm:

less ~/zoneminder/distros/redhat/zoneminder.spec

Прокрутите вниз до поля «Версия», обратите внимание на значение, которое будет в формате x.xx.x. Затем создайте архив с помощью следующей команды:

cd ~/zoneminder
git archive --prefix=zoneminder-1.33.4/ -o ~/rpmbuild/SOURCES/zoneminder-1.33.4.tar.gz HEAD

Замените «1.33.4» на версию, указанную в файле спецификации rpm.

Из корневой директории репозитория Git ZoneMinder выполните следующее:

cd ~/zoneminder
rpmbuild -bs --nodeps distros/redhat/zoneminder.spec

Этот шаг создаст исходный RPM-файл и сообщит вам, где он был сохранен. Например:

Wrote: /home/abauer/rpmbuild/SRPMS/zoneminder-1.33.4-1.fc26.src.rpm

Теперь следуйте предыдущим инструкциям Build from SRPM, которые описывают, как собрать этот source RPM в RPM.