Я разрабатываю проект, состоящий из основного двоичного файла и многих .so плагинов. Каждый .so плагин связан с конкретной библиотекой, и они все экспортируют "универсальный" API в основной двоичный файл, который dlopen () их.
Например, если основной дистрибутив Linux имеет 10 + отличающийся, освобождает для звукового вывода, у меня будет 10 .so плагинов для звукового вывода, предоставляя тот же API основному двоичному файлу, таким образом, не будет иметь значения, если 9 из них перестанут работать к dlopen (), потому что их lib не установлен: успешно dlopen () 'луг всего 1 был бы достаточно. Вот почему я поместил $ {shlibs:Depends} в, 'Рекомендует': вместо к 'Зависит':.
К сожалению, это помещает также deps для основного двоичного файла к, 'Рекомендует': который не является тем, что я на самом деле хочу. Там какой-либо путь состоит в том, чтобы разделить $ {shlibs:Depends} на части? Помогло бы, мог ли я разделить его двоичным именем, скажем, $ {shlibs:Depends (main_binary)}, $ {shlibs:Depends (solib1.so)} и т.д. Но разделение шаблонами может работать также.
Так есть ли какой-либо способ разделить такие переменные?
Можно сделать это путем определения соответствующих аргументов dpkg-shlibdeps
; в Вашем случае, чем-то как
dpkg-shlibdeps -dDepends -emain_binary \
-dRecommends -esolib1.so -esolib2.so ...
Затем используйте ${shlibs:Depends}
и ${shlibs:Recommends}
в соответствующих местоположениях.
Если Вы используете dh
переопределения, использовать
override_dh_shlibdeps:
dpkg-shlibdeps ...
Вы найдете (несколько более сложный) пример этого в Винном пакете. Это работает dh_shlibdeps
снова, потому что dpkg-shlibdeps
переопределите только дескрипторы один пакет.
На основе ответа Stephen Kitt я сделал следующее переопределение:
override_dh_shlibdeps:
dh_shlibdeps -X.so
dh_shlibdeps -- -dRecommends -pshlibs-
Первый создает $ {shlibs:Depends} для основного двоичного файла, исключая .so сменные файлы, и второй создает $ {shlibs-:Recommends}.
Обратите внимание, что я должен был исказить префикс var к "shlibs-" так, чтобы второй вызов dpkg-shlibdeps для не перезаписи результатов первого вызова. Кажется, что просто определения нового суффикса с-d недостаточно для предотвращения перезаписи: прежде, чем генерировать $ {shlibs:Recommends} это по некоторым причинам удалило бы весь $ {shlibs:*}. Но искажение префикса с-p решает проблему.