Непростое соглашение об именах при упаковке нескольких сервисов для одного пакета .deb с использованием dh_installinit - PullRequest
0 голосов
/ 11 марта 2019

У меня проблема с Системой упаковки Debian , в частности debhelper, называемой dh_installinit, которая устанавливает файлы инициализации службы в каталоги сборки пакетов.

У меня есть проект, который собирает несколько пакетов .deb из исходного кода C ++. Некоторые из созданных пакетов .deb имеют один файл .service, который копируется в /lib/systemd/system во время установки пакета. Теперь Мне нужно добавить еще один .service файл в один из .deb пакетов (назовем его package-11). К сожалению, оказалось, что не , а просто , как я и думал.

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

Это дерево каталогов debian моего проекта:

debian
├── changelog
├── compat
├── control
├── copyright
├── docs
├── package-01.install
├── package-02.install
├── package-03.default
├── package-03.init
├── package-03.install
├── package-03.service
├── package-04.default
├── package-04.init
├── package-04.install
├── package-04.service
├── package-05.install
├── package-05.postinst
├── package-06.install
├── package-07.dirs
├── package-07.install
├── package-07.postinst
├── package-07.postrm
├── package-08.install
├── package-09.default
├── package-09.init
├── package-09.install
├── package-09.postinst
├── package-09.service
├── package-10.default
├── package-10.init
├── package-10.install
├── package-10.service
├── package-11.package-additional.service -> package-additional.service
├── package-11.default
├── package-11.init
├── package-11.install
├── package-11.postinst
├── package-11.service
├── package-additional.service
├── README
├── rules
├── rules-nosystemd
└── source
    ├── format
    └── package-12.install

package-11.service и package-additional.service - это два service файла, которые мне нужно поместить в package-11_1.0.0_amd64.deb.

Обратите внимание, что я не хочу, чтобы переименовывал package-additional.service (потому что этот пакет также создан для других дистрибутивов, и устаревший код использует это имя файла). Таким образом, он назван package-additional.service, , а не package-11.package-additional.service, как предлагается здесь , и он должен оставаться как есть.

Чтобы все заработало (как описано здесь , здесь и здесь ) я добавил символическую ссылку package-11.package-additional.service -> package-additional.service, чтобы debhelper удалось обнаружить дополнительный файл .service.

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

Это мой debian/rules файл:

#!/usr/bin/make -f
# -*- makefile -*-

.PHONY: override_dh_auto_configure override_dh_strip override_dh_installinit override_dh_systemd_enable override_dh_systemd_start

override_dh_auto_configure:
    ./configure --with-doc

override_dh_strip:
    dh_strip --dbg-package=package-dbg

override_dh_installinit:
    dh_installinit --no-start
    dh_installinit --no-start -ppackage-11 --name=package-additional

override_dh_systemd_enable:
    dh_systemd_enable --no-enable

override_dh_systemd_start:
    dh_systemd_start --no-start

%:
    dh $@ --with systemd

dpkg-buildpackage -uc -us -F правильно создает пакеты для всех пакетов, а package-11_1.0.0_amd64.deb содержит два .service файла.

user@host:~/myproject$ dpkg -c package-11_1.0.0_amd64.deb | grep service
-rw-r--r-- root/root       464 2018-06-28 11:00 ./lib/systemd/system/package-additional.service
-rw-r--r-- root/root       366 2018-06-28 11:00 ./lib/systemd/system/package-11.service

Система упаковки Debian это довольно комплекс зверь , поэтому я буду признателен за любую помощь.

...