LINUX.ORG.RU

при сборке deb пакета cmake не видит systemd

 , , ,


1

1

Пытаюсь собрать https://github.com/3proxy/3proxy/tree/0.9.6

Тестовый стенд:

  • свежий debian13
  • Зависимости для сборки пакета ‘dpkg-dev devscripts equivs wget’
  • Зависимости для плагинов ‘cmake libssl-dev libpcre2-dev libpam0g-dev’

Действия по сборке

  • # git clone https://github.com/3proxy/3proxy /usr/src/3proxy
  • # cd /usr/src/3proxy
  • # git checkout 0.9.6
  • # mk-build-deps --install
  • # debuild -us -uc -b

Успешно, но я получаю пакет без systemd сервисов. И в логе сборки вижу

dh_auto_configure: warning: Compatibility levels before 10 are deprecated (level 9 in use)
	cd obj-x86_64-linux-gnu && DEB_PYTHON_INSTALL_LAYOUT=deb PKG_CONFIG=/usr/bin/pkg-config cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DFETCHCONTENT_FULLY_DISCONNECTED=ON "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu ..
-- OpenSSL found: 3.5.6
-- PCRE2 found: 10.46
-- PAM found
--   systemd: NO (using init.d)
-- 
-- 3proxy configuration summary:
--   Version: 0.9.6
--   Platform: Linux
--   Compiler: GNU 14.2.0
--   Build type: None
-- 
--   Options:
--     BUILD_SHARED:    ON
--     USE_OPENSSL:     ON
--     USE_PCRE2:       ON
--     USE_PAM:         ON
--     USE_ODBC:        OFF
--     USE_POLL:        ON
--     USE_SPLICE:      ON
--     USE_NETFILTER:   ON
-- 
--   Libraries found:
--     OpenSSL: TRUE
--     PCRE2:   TRUE
--     PAM:     TRUE
--     ODBC:    FALSE

И в /usr/src/3proxy/CMakeLists.txt соотв цепочка if не срабатывает

L537: elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")

Вместо этого падает в

L589:    else()
L590:        # Other Unix - install init.d script

При этом https://cmake.org/cmake/help/latest/variable/CMAKE_HOST_SYSTEM_NAME.html#variable:CMAKE_HOST_SYSTEM_NAME

this variable is set to the output of uname -s.

root@debian:/usr/src/3proxy# uname -s
Linux

Прошу помочь понять почему не отрабатывает CMAKE_SYSTEM_NAME STREQUAL "Linux" и почему оно не видит systemd.

★★★
Ответ на: комментарий от anonymous

Установка libsystemd-dev systemd-dev не меняет часть сообщения -- systemd: NO (using init.d) при сборке. Полагаю это из-за того что не проходит проверка CMAKE_SYSTEM_NAME STREQUAL "Linux" и оно даже не пытается проверить наличие systemd. Могу ошибаться.

Flotsky ★★★
() автор топика

Как ни странно google ии подсказал ответ.

Не хватало пакета pkg-config, после его установки при сборке теперь -- systemd: YES (/usr/lib/systemd/system) и всё нужное появилось.

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

Пересобрал тестовый стенд, «поправил» зависимости. Теперь логика сборки выглядит так

  • # git clone https://github.com/3proxy/3proxy /usr/src/3proxy
  • # cd /usr/src/3proxy
  • # git checkout 0.9.6
  • # sed -i '/^Build-Depends:/ { /, cmake, pkg-config, libsystemd-dev, systemd-dev, libssl-dev, libpcre2-dev, libpam0g-dev/! s/\(debhelper (>=10)\)/\1, cmake, pkg-config, libsystemd-dev, systemd-dev, libssl-dev, libpcre2-dev, libpam0g-dev/ }' ./debian/control
  • # mk-build-deps --install
  • # debuild -us -uc -b
Flotsky ★★★
() автор топика

Что-то мне подсказывает, что сборка под рутом это моветон.

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

Можно собрать самому, почему бы и нет.

К тому же в готовых вроде как нету libssl-dev libpcre2-dev libpam0g-dev и соотв плагины не соберутся. А я понятия не имею пока как это будет использоваться.

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

Вы проиграли в сломанный телефон. я бегло выразился что «готовые сборки» скорее всего собраны без части плагинов которые могут понадобится. Я не спрашивал где взять зависимости для сборки.

И да в скриптах сборки конкретно этого deb пакета нужные зависимости не указаны, мне пришлось их угадывать по ходу и потом силами sed дописывать.

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

Но если честно я до конца не понял. Вот самое 1ое ваше сообщение.

Зависимости для плагинов ‘cmake libssl-dev libpcre2-dev libpam0g-dev’

– OpenSSL found: 3.5.6

А если просто Вы указываете еще libsystemd-dev, systemd-dev

То все равно не видит –systemd: NO

Это почему так? В конце концов почему cmake нужно указывать а gcc (к примеру) нет.

anonymous
()
Ответ на: комментарий от anonymous

В конце концов почему cmake нужно указывать а gcc (к примеру) нет.

Где-то по зависимостям зависимостей нужное подтянулось.

Почему нужен cmake в списке зависимостей? Ну без него сборка падает с ошибкой «не найден cmake». Почему автор проекта не указал это явно в зависимостях, ну ктож его знает, он и pkg-config с libsystemd не указал без которых cmake не находит systemd.

Хотя с pkg-config с libsystemd наверное плохой пример, это не явно нужная зависимость, т.к. не все используют systemd

Flotsky ★★★
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария