У меня проблема с Системой упаковки 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 это довольно комплекс зверь , поэтому я буду признателен за любую помощь.