dpkg: это - ipossible для разделения $ {shlibs:Depends}?

Я разрабатываю проект, состоящий из основного двоичного файла и многих .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)} и т.д. Но разделение шаблонами может работать также.

Так есть ли какой-либо способ разделить такие переменные?

0
задан 15 July 2017 в 10:06

2 ответа

Можно сделать это путем определения соответствующих аргументов 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 переопределите только дескрипторы один пакет.

0
ответ дан 2 November 2019 в 22:20

На основе ответа 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 решает проблему.

0
ответ дан 2 November 2019 в 22:20

Другие вопросы по тегам:

Похожие вопросы: