LINUX.ORG.RU

debhelper: нужна раздельная компиляция для 2 пакетов из одного исходника


0

2

Доброго времени суток.

Собираю deb пакет для ossec. В одном дереве исходников и клиент, и сервер. А у разработчиков этого ПО весьма своеобразное чувство юмора: в клиент и сервер входят разные файлы с одинаковым именем. Например, /var/ossec/bin/manage_keys для клиента и сервера выполняет разные действия.

В результате, при сборке нужно дважды конфигурировать и компилировать исходники - один раз для клиента, второй - для сервера. Как бы это реализовать через стандартный debhelper?

И существует ли документация / книга по сборке deb пакетов, которая не ограничивалась бы примитивными hello world ?

★★★★★

Похоже, мой случай есть в

/usr/share/doc/debhelper/examples/rules.multi2

# Any other binary targets build just one binary package at a time.
binary-%: build install
        make -f debian/rules binary-common DH_OPTIONS=-p$*

А дальше man debhelper подсказывает, что есть

-Ptmpdir, --tmpdir=tmpdir
           Use "tmpdir" for package build directory. The default is
           debian/<package>

router ★★★★★
() автор топика
Ответ на: комментарий от router

Задачу решил. Проблема заключалась в том, что теперь помимо отдельных скриптов dh_* ( давно и подробно описанных в maint-guide ) используется ещё и свой костыльный аналог make - «dh» . И в официальных руководствах (в т.ч. maint-guide ) об этом почему-то забыли упомянуть, что значительно уменьшает полезность подобных руководств

dh - это «debhelper command sequencer». Вместо того, чтобы писать в debian/rules команды, по умолчанию debian/rules теперь состоит только из вызова dh. dh сам отслеживает выполненные target'ы, сам определяет порядок вызова dh_* утилит.

Может, в таком нововведении и есть польза, но в отсутствии официальной документации я выкинул к [censured] этот [censured] dh и прописал в debian/rules нормальный человеческий порядок вызова dh_* утитит. И сразу всё стало просто и понятно. Кусок цели install, для примера:

        dh_prep
        USER_LANGUAGE=en USER_INSTALL_TYPE=agent USER_DIR=/var/ossec USER_AGENT_SERVER_IP=192.168.2.15 USER_ENABLE_SYSCHECK=y USER_ENABLE_ROOTCHECK=y USER_ENABLE_ACTIVE_RESPONSE=n USER_NO_STOP=y ./install.sh
        dh_auto_build
        dh_auto_install
        dh_install -possec-hids-agent
        dh_auto_clean
        rm debian/tmp -rf
        USER_LANGUAGE=en USER_INSTALL_TYPE=server USER_DIR=/var/ossec USER_ENABLE_EMAIL=y USER_EMAIL_ADDRESS=ossec@madrouter.dc USER_EMAIL_SMTP=192.168.0.1 USER_ENABLE_SYSCHECK=y USER_ENABLE_ROOTCHECK=y USER_ENABLE_ACTIVE_RESPONSE=n USER_ENABLE_SYSLOG=y USER_NO_STOP=y ./install.sh
        dh_auto_build
        dh_auto_install
        dh_install -possec-hids-server
router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.