Проблема проста: мне нужно установить nginx-debug (моя собственная сборка с конфигурацией --with-debug) и non-debug nginx в один целевой образ, поэтому -debug version может иметь приоритет (через ALTERNATIVE_PRIORITY), и у меня будет возможность удалить его с помощью dnf (поэтому оставляя изображение только с неотладочной версией). Другими словами, мне нужна одна основная символическая ссылка, скажем, /usr/sbin/nginx, которая могла бы указывать на две разные цели: debug (nginx создан с поддержкой отладки) и без отладки (простая сборка) в разное время, без каких-либо дальнейших модификаций, скажем, модулей systemd.
Я заглянул в вышеупомянутый класс и написал следующий код ( просто части двух рецептов):
nginx.bb — неотладочная версия; он должен отображаться как файл по умолчанию с именем /usr/sbin/nginx
Код: Выделить всё
# I rename built binary of nginx to nginx.1 in do_install() task
...
inherit update-alternatives
# Lower the priority so we could override it with nginx-debug
ALTERNATIVE_PRIORITY = "10"
ALTERNATIVE:${PN} = "nginx"
# Am I correct here? Should I specify [nginx] in all statements here?
ALTERNATIVE_TARGET[nginx] = "${sbindir_native}/nginx.1"
ALTERNATIVE_LINK_NAME[nginx] = "${sbindir_native}/nginx"
FILES:${PN} += "/"
CONFFILES:${PN} = "${sysconfdir}/${BPN}"
INSANE_SKIP:${PN} = "libdir"
Код: Выделить всё
# Again, I setup built process and rename binary artifact to nginx-debug in do_install()
inherit update-alternatives
# This recipe should be a default one, substituting original binary
ALTERNATIVE_PRIORITY = "100"
ALTERNATIVE:${PN} = "nginx"
ALTERNATIVE_TARGET[nginx] = "${sbindir_native}/nginx-debug"
ALTERNATIVE_LINK_NAME[nginx] = "${sbindir_native}/nginx"
# Make package maximum lightweight
PACKAGES = "${PN}"
FILES:${PN} += "${sbindir_native}"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
Код: Выделить всё
+ set -e
+ update-alternatives --remove nginx /usr/sbin/nginx-debug
mv: '/usr/sbin/nginx-debug' and '/usr/sbin/nginx-debug' are the same file
- Правиль ли я с TARGET и LINK_NAME, учитывая, что мне нужно выполнить задачу по предоставлению двух двоичных файлов с одной ссылкой?< /li>
В чем может быть проблема с удалением пакета? Я правильно понимаю варианты для ALTERNATIVE_TARGET и ALTERNATIVE_LINK_NAME?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -correctly
Мобильная версия